<?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>131285</bug_id>
          
          <creation_ts>2014-04-06 16:43:30 -0700</creation_ts>
          <short_desc>Make some bindings improvements, with smaller code size for error message generation</short_desc>
          <delta_ts>2014-04-07 22:41:29 -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>WebCore JavaScript</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998039</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 16:43:30 -0700</bug_when>
    <thetext>Make some bindings improvements, with smaller code size for error message generation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998041</commentid>
    <comment_count>1</comment_count>
      <attachid>228707</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 16:55:37 -0700</bug_when>
    <thetext>Created attachment 228707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998042</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-06 16:58:12 -0700</bug_when>
    <thetext>Attachment 228707 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4314:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4320:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4325:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4330:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4335:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4340:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4345:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4355:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4360:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4365:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4370:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4375:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 12 in 21 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>998043</commentid>
    <comment_count>3</comment_count>
      <attachid>228708</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 16:59:38 -0700</bug_when>
    <thetext>Created attachment 228708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998044</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-06 17:01:04 -0700</bug_when>
    <thetext>Attachment 228708 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4314:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4320:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4325:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4330:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4335:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4340:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4345:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4355:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4360:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4365:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4370:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4375:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 12 in 21 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>998046</commentid>
    <comment_count>5</comment_count>
      <attachid>228709</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 17:19:41 -0700</bug_when>
    <thetext>Created attachment 228709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998047</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-06 17:22:04 -0700</bug_when>
    <thetext>Attachment 228709 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4314:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4320:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4325:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4330:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4335:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4340:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4345:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4355:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4360:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4365:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4370:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4375:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 12 in 22 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>998051</commentid>
    <comment_count>7</comment_count>
      <attachid>228709</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-06 18:07:13 -0700</bug_when>
    <thetext>Comment on attachment 228709
Patch

r=me

This should be nice for binary bloat. Take care to fix mac and windows builds before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998052</commentid>
    <comment_count>8</comment_count>
      <attachid>228711</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 18:19:31 -0700</bug_when>
    <thetext>Created attachment 228711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998053</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-06 18:21:52 -0700</bug_when>
    <thetext>Attachment 228711 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4314:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4320:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4325:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4330:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4335:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4340:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4345:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4355:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4360:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4365:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4370:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4375:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 12 in 24 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>998055</commentid>
    <comment_count>10</comment_count>
      <attachid>228712</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 18:57:57 -0700</bug_when>
    <thetext>Created attachment 228712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998057</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-06 18:58:56 -0700</bug_when>
    <thetext>Attachment 228712 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4314:  jsTestObjCONDITIONAL_CONST is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4320:  jsTestObjCONST_VALUE_0 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4325:  jsTestObjCONST_VALUE_1 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4330:  jsTestObjCONST_VALUE_2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4335:  jsTestObjCONST_VALUE_4 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4340:  jsTestObjCONST_VALUE_8 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4345:  jsTestObjCONST_VALUE_9 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4355:  jsTestObjCONST_VALUE_11 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4360:  jsTestObjCONST_VALUE_12 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4365:  jsTestObjCONST_VALUE_13 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4370:  jsTestObjCONST_VALUE_14 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4375:  jsTestObjCONST_JAVASCRIPT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 12 in 25 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>998071</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-06 20:44:04 -0700</bug_when>
    <thetext>Committed r166864: &lt;http://trac.webkit.org/changeset/166864&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998436</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 22:41:08 -0700</bug_when>
    <thetext>A fix for the isCalculated() assertion is in bug 131346.

I can’t reproduce the m_table assertion locally, even though it seems to be firing on all the bots. I also have no theory about it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998437</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 22:41:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; A fix for the isCalculated() assertion is in bug 131346.
&gt; 
&gt; I can’t reproduce the m_table assertion locally, even though it seems to be firing on all the bots. I also have no theory about it yet.

Oops, that comment is for a different bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228707</attachid>
            <date>2014-04-06 16:55:37 -0700</date>
            <delta_ts>2014-04-06 16:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131285-20140406165520.patch</filename>
            <type>text/plain</type>
            <size>326359</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiMTQ2NzQ0MGRlY2Iw
OWE3MzlkNWE4ZWM4ZmU1ZTRkZGQ3ZmFiMC4uZjE0NmI0ZjMwODFhZGE4MGE3NmM4OWViMzU3MjJl
YTliNTIwZDhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDE0LTA0LTA2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIHNvbWUgYmluZGluZ3Mg
aW1wcm92ZW1lbnRzLCB3aXRoIHNtYWxsZXIgY29kZSBzaXplIGZvciBlcnJvciBtZXNzYWdlIGdl
bmVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IFJlbW92ZWQgZXhwb3J0IG9mIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZ0ludGVybmFsLgorICAgICAgICBOb3Qgc3VyZSB3aHkgaXQgbmVlZGVkIHRvIGJl
IGV4cG9ydGVkLCBidXQgaW4gYW55IGNhc2UgaXQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd1R5cGVFcnJvcik6IEFkZGVkLiBIZWxwZXIgdG8gYXZvaWQgcmVwZWF0aW5n
IHRocm93Vk1FcnJvci9jcmVhdGVUeXBlRXJyb3IuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRB
cmd1bWVudE11c3RCZSk6IEFkZGVkLiBIZWxwZXIgZm9yIGJ1aWxkaW5nIHVwIGFyZ3VtZW50IGVy
cm9yIHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IpOiBBZGRlZC4gRm9yIGJpbmRpbmdzIHRvIHVzZS4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3RydWN0
b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93R2V0dGVyVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlcXVl
bmNlVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NldHRlclR5cGVF
cnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dUaGlzVHlwZUVycm9yKTogRGl0
dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkZWQgZGVjbGFy
YXRpb25zIGZvciBuZXcgZnVuY3Rpb25zLiBSZW1vdmVkIGZvcndhcmQKKyAgICAgICAgZGVjbGFy
YXRpb25zIGZvciB0aGluZ3Mgbm90IHVzZWQgaW4gdGhpcyBmaWxlLiBVc2UgbnVsbHB0ciBpbnN0
ZWFkIG9mIDAuIEZvcm1hdAorICAgICAgICB0ZW1wbGF0ZXMgY29uc2lzdGVudGx5LiBVc2UgYSBi
ZXR0ZXIgZm9yIGxvb3AgaW4gdGhlIGpzQXJyYXkgZnVuY3Rpb24uIFJlbW92ZWQKKyAgICAgICAg
dW51c2VkIEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbiwgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nLCBhbmQKKyAgICAgICAgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50
ZXJuYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6IFVwZGF0
ZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBDdXQg
ZG93biBvbiB1c2Ugb2YgVU5VU0VEX1BBUkFNLiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAg
ICAgZm9yIGVycm9ycywga2VlcGluZyB0aGUgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8g
YSBtaW5pbXVtLgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBEaXR0by4KKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKTogRGl0dG8uCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoK
KyAgICAgICAgVXBkYXRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBjaGFuZ2VzIGFib3ZlLgorCisy
MDE0LTA0LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZWZh
Y3RvciBwb3N0LWF0dGFjaCBhbmQgSFRNTE9iamVjdEVsZW1lbnQtcmVsYXRlZCBjb2RlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyODIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCA2MDhiYzVlYjA1ZTQzZTg5MzFjZjM5MmZhNGUzNzdmZDNhNzIy
MmYxLi5jN2MyOTdmMDU3ZWFlNjhjYjdlZDMwODBlOGZlYmZkOTQ0MTE5MjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMTAwMCw3ICsxMDAwLDYgQEAgX19aTjdXZWJDb3JlMzNzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzNnN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZUVSS04zV1RGNlN0cmluZ0VTM18KIF9f
Wk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdp
ZGdldHNFdgogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlMzVzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudEUKLV9fWk43V2ViQ29yZTM4
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50ZXJuYWxFUEtjegogX19aTjdXZWJDb3Jl
M1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmUzVVJMQzFFTlNfMThQYXJzZWRVUkxTdHJp
bmdUYWdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzVVJMQzFFUDVOU1VSTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggNThiNzM4NjEyNTE0
ZWNiYjIzNjI2NWMyNGZkZWRjY2I1OTY4ZDFlZi4uMDM5NTVlZmYxZjFkYjAzZTdiYzU1YTJkYTNk
YmFkZDkwMGM1NDVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCkBAIC01MjcsMTggKzUyNyw5NyBAQCBib29sIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiB0YXJnZQogICAg
IHJldHVybiB0YXJnZXQgJiYgY2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsICZ0YXJnZXQtPmRvY3Vt
ZW50KCkpOwogfQogICAgIAotU3RyaW5nIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0lu
dGVybmFsKGNvbnN0IGNoYXIqIGZpcnN0LCAuLi4pCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdGhy
b3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50
TXVzdEJlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNv
bnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lKQoreworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQXJndW1l
bnQgIik7CisgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYXJndW1lbnRJbmRleCArIDEpOworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgnIik7CisgICAgYnVpbGRlci5hcHBlbmQoYXJndW1l
bnROYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIicpIHRvICIpOworICAgIGlmICgh
ZnVuY3Rpb25OYW1lKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidGhlICIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgY29uc3RydWN0b3IiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBidWls
ZGVyLmFwcGVuZChpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy4nKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKKyAgICB9CisgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgbXVzdCBiZSAiKTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBj
aGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQoreworICAgIGF1
dG8mIGNvbnRleHQgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGNvbnRleHQuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1h
a2VTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJyIsIGF0dHJp
YnV0ZU5hbWUsICInIG9uIGEgbm9uLSIsIGludGVyZmFjZU5hbWUsICIgb2JqZWN0LiIpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0gICAgY29uc3QgY2hhciogc3RyID0gZmlyc3Q7Ci0gICAgdmFfbGlzdCBsaXN0OwotICAg
IHZhX3N0YXJ0KGxpc3QsIGZpcnN0KTsKLSAgICBkbyB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHN0cik7Ci0gICAgICAgIHN0ciA9IHZhX2FyZyhsaXN0LCBjaGFyKik7Ci0gICAgfSB3aGlsZSAo
c3RyKTsKLSAgICB2YV9lbmQobGlzdCk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
KyAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVu
dE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIm9uZSBvZjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRW
YWx1ZXMpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgYnVpbGRlci50b1N0cmlu
ZygpKTsKIH0KLSAgICAKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVu
dE5hbWUsIGludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBi
dWlsZGVyLnRvU3RyaW5nKCkpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUp
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJl
KGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBmdW5jdGlvbk5hbWUpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYW4gaW5zdGFu
Y2Ugb2YgIik7CisgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRUeXBlKTsKKyAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7Cit9CisKK3ZvaWQgdGhy
b3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHRo
cm93VHlwZUVycm9yKHN0YXRlLCAiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKTsKK30KKwor
dm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0
IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVHlwZSkKK3sKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmlu
ZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUg
bXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKK30KKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSkKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyBpcyBjb25mdXNpbmcgZXhjZXB0aW9uIHdvcmRpbmcuIENhbiB3ZSByZXdvcmQg
dG8gYmUgY2xlYXJlciBhbmQgbW9yZSBzcGVjaWZpYz8KKyAgICByZXR1cm4gdGhyb3dWTUVycm9y
KCZzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJnN0YXRlLCBtYWtlU3RyaW5nKGludGVyZmFj
ZU5hbWUsICIgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIp
KSk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBh
dHRyaWJ1dGVOYW1lKQoreworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0
cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworfQor
Cit2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQorewor
ICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKTsKK30K
Kwordm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0
IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCit7CisgICAg
dGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAn
LicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsIGludGVyZmFjZU5hbWUpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihz
dGF0ZSwgbWFrZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGZ1
bmN0aW9uTmFtZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IDcwNWI4ZDU0NmFjNjQ4N2Q1MGI4ZTMxZGQ0OGVlOWMyNzMzYjU4MjIuLjQ4
MzUwNDk5ZDY3N2EzNDY5ODczYWNmMTEwZmM2NWY1MWNmNDZiODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC01NCwxMyArNTQsMTAgQEAgY2xhc3MgSGFz
aEVudHJ5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVN0cmluZ0xpc3Q7Ci0K
IGNsYXNzIENhY2hlZFNjcmlwdDsKLWNsYXNzIERvY3VtZW50OworY2xhc3MgRE9NU3RyaW5nTGlz
dDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTERvY3VtZW50Owog
Y2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIApAQCAtNjksNiArNjYsMjAgQEAgdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKIERPTVdpbmRvdyYgYWN0aXZlRE9NV2luZG93KEpTQzo6RXhlY1N0YXRl
Kik7CiBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7
CisKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKK3Zv
aWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFR5cGUpOwordm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7
Cit2b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CisKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVu
c2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hh
ciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50
SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRl
cmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVk
VHlwZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZh
aWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKKwog
Ly8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0cnVjdG9yIG9iamVjdHMgaW4gdGhlIEpTQyBiaW5k
aW5ncy4KIGNsYXNzIERPTUNvbnN0cnVjdG9yT2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlciB7
CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKQEAgLTk3LDIwICsxMDgsMjAgQEAgaW5s
aW5lIEpTRE9NR2xvYmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBl
KEpTQzo6RXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBp
ZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0cnVjdHVyZShnbG9i
YWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHN0cnVjdHVy
ZTsKICAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xh
c3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0
ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKIH0K
IAotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRl
cHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdl
dERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QgZm9y
IGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgorICAgIC8vIEZJWE1FOiBUaGlzIGZ1
bmN0aW9uIGlzIHdyb25nLiBJdCB1c2VzIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0IGZvciBjcmVh
dGluZyB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZS4KICAgICByZXR1cm4gZ2V0RE9NU3RydWN0dXJl
PFdyYXBwZXJDbGFzcz4oZXhlYy0+dm0oKSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3Rv
dHlwZShleGVjKSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpT
Qzo6SlNPYmplY3QqIGdldERPTVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxp
bmUgSlNDOjpKU09iamVjdCogZ2V0RE9NUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6
SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwgSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJvdG90
eXBlKCkpKTsKIH0KQEAgLTEyNSwyMSArMTM2LDIxIEBAIGlubGluZSB2b2lkKiB3cmFwcGVyQ29u
dGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKikKICAgICByZXR1
cm4gJndvcmxkOwogfQogCi1pbmxpbmUgSlNET01XcmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFw
cGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqKSB7IHJldHVybiAwOyB9CitpbmxpbmUgSlNET01X
cmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqKSB7
IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgYm9vbCBzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBKU0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25l
ciosIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNo
ZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBKU0RPTVdyYXBwZXIqKSB7IHJldHVy
biBmYWxzZTsgfQogCiBpbmxpbmUgSlNET01XcmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFNjcmlwdFdyYXBwYWJsZSogZG9tT2JqZWN0KQogewog
ICAgIGlmICghd29ybGQuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBkb21PYmplY3QtPndyYXBwZXIoKTsKIH0KIAogaW5s
aW5lIEpTQzo6SlNBcnJheUJ1ZmZlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKCF3b3Js
ZC5pc05vcm1hbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIGJ1ZmZlci0+bV93cmFwcGVyLmdldCgpOwogfQogCkBAIC0xNzUsMTQgKzE4
NiwxNCBAQCBpbmxpbmUgYm9vbCBjbGVhcklubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogZAogICAgIHJldHVybiB0cnVlOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNo
ZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hl
ZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKIHsK
ICAgICBpZiAoSlNDOjpKU09iamVjdCogd3JhcHBlciA9IGdldElubGluZUNhY2hlZFdyYXBwZXIo
d29ybGQsIGRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3
b3JsZC5tX3dyYXBwZXJzLmdldChkb21PYmplY3QpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgY2FjaGVXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QsIFdyYXBwZXJDbGFz
cyogd3JhcHBlcikKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVy
Q2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBE
T01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIpCiB7CiAgICAgSlNDOjpX
ZWFrSGFuZGxlT3duZXIqIG93bmVyID0gd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3QpOwog
ICAgIHZvaWQqIGNvbnRleHQgPSB3cmFwcGVyQ29udGV4dCh3b3JsZCwgZG9tT2JqZWN0KTsKQEAg
LTE5MSw3ICsyMDIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdy
YXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgY2FjaGVXcmFwcGVyKERPTQogICAgIHdlYWtBZGQod29y
bGQubV93cmFwcGVycywgKHZvaWQqKWRvbU9iamVjdCwgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+
KHdyYXBwZXIsIG93bmVyLCBjb250ZXh0KSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBET01D
bGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3Mq
IHdyYXBwZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNs
YXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBE
T01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIpCiB7CiAgICAgaWYgKGNs
ZWFySW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0LCB3cmFwcGVyKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk5LDcgKzIxMCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFz
cywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihECiB9
CiAKICNkZWZpbmUgQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgY2xhc3NOYW1lLCBv
YmplY3QpIGNyZWF0ZVdyYXBwZXI8SlMjI2NsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDxjbGFzc05hbWUqPihvYmplY3QpKQotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBj
bGFzcyBET01DbGFzcz4gaW5saW5lIEpTRE9NV3JhcHBlciogY3JlYXRlV3JhcHBlcihKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogbm9kZSkKK3RlbXBsYXRlPHR5cGVu
YW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0RPTVdyYXBwZXIq
IGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3Mq
IG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBl
cihnbG9iYWxPYmplY3QtPndvcmxkKCksIG5vZGUpKTsKQEAgLTIwOCw3ICsyMTksNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFw
cGVyKiBjcmVhdGVXcmFwcGVyKAogICAgIHJldHVybiB3cmFwcGVyOwogfQogCi10ZW1wbGF0ZTxj
bGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdy
YXAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkK
K3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTVmFsdWUgd3JhcChKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01D
bGFzcyogZG9tT2JqZWN0KQogewogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4g
SlNDOjpqc051bGwoKTsKQEAgLTIxNywxMyArMjI4LDEzIEBAIHRlbXBsYXRlPGNsYXNzIFdyYXBw
ZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3JhcChKU0RPTUds
b2JhCiAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V3JhcHBlckNsYXNzPihnbG9iYWxPYmplY3Qs
IGRvbU9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9N
Q2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgZ2V0RXhpc3RpbmdXcmFwcGVyKEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVl
IGdldEV4aXN0aW5nV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01D
bGFzcyogZG9tT2JqZWN0KQogewogICAgIEFTU0VSVChkb21PYmplY3QpOwogICAgIHJldHVybiBn
ZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZG9tT2JqZWN0KTsKIH0KIAot
dGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTQzo6
SlNWYWx1ZSBjcmVhdGVOZXdXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IERPTUNsYXNzKiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5
cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNyZWF0ZU5ld1dyYXBwZXIoSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKIHsKICAg
ICBBU1NFUlQoZG9tT2JqZWN0KTsKICAgICBBU1NFUlQoIWdldENhY2hlZFdyYXBwZXIoZ2xvYmFs
T2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKTsKQEAgLTIzOSw3ICsyNTAsNyBAQCB2b2lkIGFk
ZEltcHVyZVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBjb25zdCBKU0M6Okhhc2hU
YWJsZSYgZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0M6OlZNJiwgY29uc3QgSlNDOjpIYXNo
VGFibGUmIHN0YXRpY1RhYmxlKTsKIAotdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqID0gMCk7Cit2b2lkIHJl
cG9ydEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSBleGNlcHRpb24sIENh
Y2hlZFNjcmlwdCogPSBudWxscHRyKTsKIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwogCiAvLyBDb252ZXJ0IGEgRE9NIGltcGxlbWVudGF0aW9uIGV4Y2VwdGlv
biBjb2RlIGludG8gYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbiBpbiB0aGUgZXhlY3V0aW9uIHN0YXRl
LgpAQCAtMzI1LDIyICszMzYsMjIgQEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5j
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCB1bnMKIHsKICAgICBK
U0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVj
dCkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJW
YWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBKU0M6OkpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
IChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlIikp
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcigqZXhl
Yyk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGxlbmd0aCA9IGxlbmd0
aFZhbHVlLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIG9i
amVjdDsKIH0KQEAgLTM2NCwzMSArMzc1LDI0IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUPiBwdHIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VD4g
cHRyKQogewogICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFZlY3RvcjxUPiYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8VD4mIHZlY3RvcikKIHsKLSAgICBKU0M6OkpTQXJyYXkqIGFy
cmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwLCB2ZWN0b3Iuc2l6ZSgpKTsKLQorICAg
IEpTQzo6SlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIs
IHZlY3Rvci5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUo
KTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIHZlY3RvcltpXSkpOwotCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFJlZlB0cjxUPj4mIHZlY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxUPj4mIHZlY3RvcikKIHsKLSAgICBKU0M6OkpT
QXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwLCB2ZWN0b3Iuc2l6ZSgp
KTsKLQorICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IG51bGxwdHIsIHZlY3Rvci5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVj
dG9yLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwg
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHZlY3RvcltpXS5nZXQoKSkpOwotCiAgICAgcmV0dXJu
IGFycmF5OwogfQogCkBAIC0zOTcsNDkgKzQwMSw0MCBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JgogICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRl
IDxjbGFzcyBUPgotc3RydWN0IEpTVmFsdWVUcmFpdHMgewotICAgIHN0YXRpYyBpbmxpbmUgSlND
OjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0cyB7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBhcnJheUpT
VmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldFB0cih2YWx1ZSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4K
LXN0cnVjdCBKU1ZhbHVlVHJhaXRzPFN0cmluZz4gewotICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpK
U1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0
czxTdHJpbmc+IHsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHZhbHVlKTsKICAg
ICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSlNWYWx1ZVRyYWl0czxmbG9hdD4gewotICAg
IHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgZmxvYXQmIHZhbHVlKQordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNWYWx1ZVRyYWl0czxmbG9hdD4geworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgYXJyYXlK
U1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBmbG9hdCYg
dmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpqc051bWJlcih2YWx1ZSk7CiAgICAg
fQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IEpTVmFsdWVUcmFpdHM8dW5zaWduZWQgbG9uZz4g
ewotICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgdW5zaWduZWQgbG9uZyYgdmFsdWUpCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgY29uc3QgdW5zaWduZWQgbG9uZyYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gSlNDOjpqc051bWJlcih2YWx1ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBpdGVyYXRvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKIHsKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
IGxpc3Q7Ci0gICAgdHlwZW5hbWUgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gaXRlcmF0b3IuZW5kKCk7Ci0gICAgdHlwZWRlZiBKU1ZhbHVlVHJhaXRzPFQ+
IFRyYWl0c1R5cGU7Ci0KLSAgICBmb3IgKHR5cGVuYW1lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpdGVyYXRvci5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKQotICAgICAgICBsaXN0LmFwcGVuZChUcmFpdHNUeXBlOjphcnJheUpTVmFsdWUoZXhl
YywgZ2xvYmFsT2JqZWN0LCAqaXRlcikpOwotCi0gICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJy
YXkoZXhlYywgMCwgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiB2ZWN0b3IpCisgICAgICAgIGxpc3QuYXBwZW5kKEpTVmFsdWVUcmFpdHM8VD46OmFycmF5SlNW
YWx1ZShleGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpKTsKKyAgICByZXR1cm4gSlNDOjpjb25z
dHJ1Y3RBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QsIGxpc3QpOwogfQogCiBKU0M6
OkpTVmFsdWUganNBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CkBAIC00NDgsNyArNDQzLDcgQEAgaW5saW5lIFBhc3NS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IHRvQXJyYXlCdWZmZXJWaWV3KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwcGVyID0gSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2YWx1ZSk7CiAgICAgaWYgKCF3
cmFwcGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIHdyYXBwZXItPmltcGwoKTsKIH0KIApAQCAtNDYyLDEwICs0NTcsOSBAQCBpbmxpbmUg
UGFzc1JlZlB0cjxKU0M6OlVpbnQzMkFycmF5PiB0b1VpbnQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2
YWx1ZSkgeyByZXR1cm4gSgogaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRv
RmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5
cGVkVmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2YWx1ZSk7IH0KIGlubGluZSBQYXNzUmVmUHRy
PEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpGbG9hdDY0QWRhcHRvcj4odmFsdWUp
OyB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAotdGVtcGxhdGU8Pgot
c3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZh
bHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBp
bmRleGVkVmFsdWUpCiAgICAgewogICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTQ3Myw4ICs0NjcsNyBAQCBzdHJ1Y3QgTmF0aXZl
VmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IE5h
dGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1
ZVRyYWl0czx1bnNpZ25lZD4gewogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkJiBpbmRl
eGVkVmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIWpzVmFsdWUuaXNOdW1iZXIoKSkKQEAgLTQ4
OCw4ICs0ODEsNyBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8dW5zaWduZWQ+IHsKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7CiAgICAgc3RhdGljIGlu
bGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
anNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKICAgICB7CiAgICAgICAgIGluZGV4ZWRWYWx1
ZSA9IGpzVmFsdWUudG9GbG9hdChleGVjKTsKQEAgLTQ5Nyw4ICs0ODksNyBAQCBzdHJ1Y3QgTmF0
aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwg
Y2xhc3MgSlNUPgotVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBUKiAoKnRvVCkoSlNDOjpKU1ZhbHVl
IHZhbHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gVmVjdG9yPFJlZlB0
cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBUKiAoKnRvVCkoSlNDOjpKU1ZhbHVlIHZhbHVlKSkKIHsKICAgICBpZiAoIWlz
SlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwpAQCAt
NTEyLDE1ICs1MDMsMTQgQEAgVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLAogICAgICAgICBpZiAoZWxl
bWVudC5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAgICAgICAgICAgICByZXN1bHQudW5jaGVja2Vk
QXBwZW5kKCgqdG9UKShlbGVtZW50KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBBcnJheSBlbGVt
ZW50IHR5cGUiKSk7CisgICAgICAgICAgICB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcigqZXhl
Yyk7CiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPj4oKTsKICAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVZlY3Rv
cjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IDA7CiAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkpIHsKQEAgLTU0MywxNCArNTMzLDEzIEBA
IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1W
ZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBz
dGFydEluZGV4ID0gMCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFy
Z3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKQogewog
ICAgIHNpemVfdCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgQVNTRVJUKHN0
YXJ0SW5kZXggPD0gbGVuZ3RoKTsKIAogICAgIFZlY3RvcjxUPiByZXN1bHQ7Ci0gICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVl
VHJhaXRzPFQ+IFRyYWl0c1R5cGU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsg
aSA8IGxlbmd0aDsgKytpKSB7CkBAIC02MDEsNDEgKzU5MCwyMiBAQCBpbmxpbmUgQXRvbWljU3Ry
aW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcD4KLWlubGluZSBjb25zdCBKU0M6Okhhc2hU
YWJsZVZhbHVlKiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIGNvbnN0IEpTQzo6SGFzaFRhYmxlVmFsdWUqIGdldFN0
YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBjb25zdCBKU0M6Okhhc2hUYWJs
ZSogdGFibGUgPSBUaGlzSW1wOjppbmZvKCktPnByb3BIYXNoVGFibGUoZXhlYyk7CisgICAgY29u
c3QgSlNDOjpIYXNoVGFibGUqIHRhYmxlID0gRE9NQ2xhc3M6OmluZm8oKS0+cHJvcEhhc2hUYWJs
ZShleGVjKTsKICAgICBpZiAoIXRhYmxlKQotICAgICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVT
bG90RW50cnlXaXRob3V0Q2FjaGluZzx0eXBlbmFtZSBUaGlzSW1wOjpCYXNlPihleGVjLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0
Q2FjaGluZzx0eXBlbmFtZSBET01DbGFzczo6QmFzZT4oZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IHRhYmxlLT5lbnRyeShleGVjLCBw
cm9wZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBw
YXJlbnQKLSAgICAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hp
bmc8dHlwZW5hbWUgVGhpc0ltcDo6QmFzZT4oZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8dHlwZW5hbWUgRE9N
Q2xhc3M6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIGVudHJ5OwogfQog
Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGNvbnN0IEpTQzo6SGFzaFRhYmxlVmFsdWUqIGdldFN0YXRp
Y1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8SlNET01XcmFwcGVyPihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lKQordGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgSlNDOjpIYXNo
VGFibGVWYWx1ZSogZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzxKU0RPTVdy
YXBwZXI+KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb24gewotICAgIHR5cGVkZWYgY2hhciBZZXNUeXBl
OwotICAgIHN0cnVjdCBOb1R5cGUgewotICAgICAgICBjaGFyIHBhZGRpbmdbOF07Ci0gICAgfTsK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIGRlY2x0eXBlKHN0YXRpY19j
YXN0PFUqPihudWxscHRyKS0+bWVtb3J5Q29zdCgpLCBZZXNUeXBlKCkpIHRlc3QoaW50KTsKLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIE5vVHlwZSB0ZXN0KC4uLik7Ci0K
LXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDAp
KSA9PSBzaXplb2YoWWVzVHlwZSk7Ci19OwotCiBlbnVtIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9u
IHsKICAgICBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IsCiAgICAgUmVwb3J0U2VjdXJpdHlFcnJv
ciwKQEAgLTY0OCwxMCArNjE4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKiwgU2VjdXJpdHlSZXBvcnRp
bmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKTsKIH07CiAgICAgCi0gICAgCi0jZGVmaW5l
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyguLi4pIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZ0ludGVybmFsKF9fVkFfQVJHU19fLCAoY29uc3QgY2hhciopbnVsbHB0cikKLVN0
cmluZyBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbChjb25zdCBjaGFyKiwg
Li4uKTsKLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTRE9NQmlu
ZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggMDIwMWViOTliMzRiNjI2ZjZiMDgxMGViOGFmNjZmNTFjZjY5MzY5Mi4uMWNjNTY4ZDRl
OGI1ZTk2ODI5NTczMDY3Njg3ZjAwNWUzNWIyYjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMzIsOCArMzIsOCBAQAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotT0JKQ19DTEFTUyBXZWJT
Y3JpcHRPYmplY3Q7CiBPQkpDX0NMQVNTIEpTQ29udGV4dDsKK09CSkNfQ0xBU1MgV2ViU2NyaXB0
T2JqZWN0OwogI2VuZGlmCiAKIHN0cnVjdCBOUE9iamVjdDsKQEAgLTU0LDggKzU0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFBsdWdJbkVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxEb2N1bWVudDsKK2NsYXNzIEhUTUxQbHVn
SW5FbGVtZW50OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgV2lkZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwYzM2YmRhNWFlM2Y1NDBkOGI0ZDQ2NTZmMjdhZTc0
Mzc0MWZhZDQ2Li4wODIwOTJhMjFkNDdhYTQwMTc4NTRmN2FjMDRmNTcyMGMzNmUyZGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjE0NSwxOSArMjE0NSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYyB8fCAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSog
Y2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRU
aGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKFwiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnJG5hbWUn
IG9uIGEgbm9uLSRpbnRlcmZhY2VOYW1lIG9iamVjdC5cIikpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIH1cbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoXCJUaGUgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIsIFwiJG5hbWVcIiwg
XCIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFwiLCBcIiRpbnRlcmZh
Y2VOYW1lXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihzbG90QmFzZSkp
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVc
IiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5h
bWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpOwpAQCAtMjI2
Nyw3ICsyMjYyLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKUyIg
LiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzaWYgKCEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJHZXR0ZXJSYWlzZXNFeGNlcHRpb24ifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlmICEkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkaXNO
dWxsYWJsZTsKIAogICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKQEAgLTIzMDks
NyArMjMwMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR0
eXBlPiBvYmogPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQoKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yMzM5LDEyICsyMzMzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZh
Y2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpO1xuIik7CisKICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAg
LTIzNTgsMTUgKzIzNTMsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
aWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3Qi
fSkgewogICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gImpzIiAuICRp
bnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGJhc2VW
YWx1ZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfSogZG9tT2JqZWN0ID0gdG8ke2NsYXNzTmFtZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmIChDb25zdHJ1Y3RvclNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9
ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0
ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKSBpZiBDb25zdHJ1Y3RvclNob3VsZEJlT25JbnN0
YW5jZSgkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFz
c05hbWV9UHJvdG90eXBlKj4oYmFzZVZhbHVlKTtcbiIpIGlmICFDb25zdHJ1Y3RvclNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSlc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGJhc2VWYWx1
ZSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghZG9tT2JqZWN0KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKQEAgLTI0NDQsOSAr
MjQ0Miw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKKwogICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5k
ZXhlZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpIHtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVU5VU0VEX1BBUkFNKHNob3VsZFRocm93
KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
dGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjQ5
Miw3ICsyNDkwLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoISRh
dHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSog
Y2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwpAQCAtMjUwMCw3ICsyNDk3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJm
YWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZyhcIlRoZSBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwg
XCIkbmFtZVwiLCBcIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgXCIs
IFwiJGludGVyZmFjZU5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0MCw3
ICsyNTM3LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwotCiAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKQEAgLTI1NjEs
NyArMjU1Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICBteSAkYXJnVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkYXJn
VHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVyaXRzKEpT
JHthcmdUeXBlfTo6aW5mbygpKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiVGhlIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwi
LlwiLCBcIiRuYW1lXCIsIFwiIGF0dHJpYnV0ZSBtdXN0IGFuIGluc3RhbmNlIG9mIFwiLCBcIiRh
cmdUeXBlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjczNSw3ICsyNzMxLDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9y
VGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZyhcIkNhbiBvbmx5IGNhbGwgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwg
XCIuXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiLCBcIiBvbiBpbnN0YW5jZXMgb2YgXCIsIFwiJGlu
dGVyZmFjZU5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZh
Y2VOYW1lXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9OjppbmZvKCkpO1xuIik7CkBAIC0y
ODM4LDEyICsyODM0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRK
U1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0
dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZ09yTnVsbChleGVjLCBTdHJpbmcoIiAuICRjb25zdGFudC0+dmFsdWUgLiAi
KSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigiIC4gJGNv
bnN0YW50LT52YWx1ZSAuICIpKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMzE3OSwyMiArMzE3NiwxOSBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9CiAgICAgCi0gICAgCi0gICAgbXkgJHBy
ZXR0eUZ1bmN0aW9uTmFtZTsKKyAgICBteSAkcXVvdGVkRnVuY3Rpb25OYW1lOwogICAgIGlmICgh
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9
KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAg
ICAgICRwcmV0dHlGdW5jdGlvbk5hbWUgPSAiXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwgXCIk
bmFtZVwiIjsKKyAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJcIiRuYW1lXCIiOwogICAg
ICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBcQCRvdXRwdXRBcnJheSwgIkpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIsICRmdW5jdGlvbikpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgICRwcmV0dHlGdW5jdGlvbk5hbWUgPSAiXCJ0aGUgXCIsIFwiJGludGVyZmFjZU5h
bWVcIiwgXCIgY29uc3RydWN0b3JcIiI7CisgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAi
bnVsbHB0ciI7CiAgICAgfQogCiAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0g
PSAxOwogICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgIG15ICRh
cmd1bWVudEluZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7
Ci0gICAgICAgICRhcmd1bWVudEluZGV4ID0gJGFyZ3VtZW50SW5kZXggKyAxOwogICAgICAgICAj
IE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIFtPcHRpb25hbF0gc2hvdWxkIGdlbmVyYXRlIGFuIGVh
cmx5IGNhbGwgd2l0aCBmZXdlciBhcmd1bWVudHMuCiAgICAgICAgICMgT3B0aW9uYWwgYXJndW1l
bnRzIHdpdGggW09wdGlvbmFsPS4uLl0gc2hvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgZWFybHkgY2Fs
bC4KICAgICAgICAgIyBPcHRpb25hbCBEaWN0aW9uYXJ5IGFyZ3VtZW50cyBhbHdheXMgY29uc2lk
ZXJlZCB0byBoYXZlIGRlZmF1bHQgb2YgZW1wdHkgZGljdGlvbmFyeS4KQEAgLTMyMzMsNyArMzIy
Nyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGFyZ1R5cGU+ICRuYW1lO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghZXhlYy0+YXJndW1lbnQoJGFy
Z3NJbmRleCkuaXNVbmRlZmluZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRh
cmdzSW5kZXgpLmlzRnVuY3Rpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4
XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwg
XCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIs
ICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNh
bGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFj
a0NsYXNzTmFtZX0+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmdzSW5kZXgpKTtc
biIpOwpAQCAtMzI0Myw3ICszMjM3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBc
IiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0
eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGFyZ1R5cGU+ICRuYW1lID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFja0NsYXNzTmFtZX0+KGV4ZWMsIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KCRhcmdzSW5kZXgpKTtcbiIpOwpAQCAtMzI3MSw3ICszMjY1LDcgQEAgc3ViIEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGZvciAodW5zaWduZWQgaSA9ICRhcmdzSW5k
ZXgsIGNvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkge1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSlcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhc
IkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCIn
KSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCBpLCBcIiRuYW1lXCIsIFwiJGludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkYXJnVHlwZVwiKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUuYXBwZW5kKHRv
JGFyZ1R5cGUoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTMyOTksMTAgKzMyOTMsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZW51bXMgPSAkZW51bXMg
LiAiLCBcXFwiIiAuICRlbnVtVmFsdWUgLiAiXFxcIiI7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoIiAuIGpvaW4oIiAmJiAiLCBAZW51bUNoZWNrcykgLiAiKVxuIik7Ci0g
ICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBc
IiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRw
cmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgb25lIG9mOiBcIiwgXCIkZW51bXNcIikpO1xu
Iik7CisgICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBc
IiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGVudW1zXCIpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNr
aW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5
cGUgaXMgYW4KICAgICAgICAgICAgICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29t
aW5nIHZhbHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IK
QEAgLTMzMTQsOCArMzMwNyw4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAg
ICAgICAgICAgICAgbXkgJGFyZ1ZhbHVlID0gImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpIjsK
ICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGFyZ1R5
cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gJGFyZ3NJbmRleCAmJiAhJHthcmdWYWx1ZX0uaXNVbmRl
ZmluZWRPck51bGwoKSAmJiAhJHthcmdWYWx1ZX0uaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZv
KCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwgXCIgKCdcIiwgXCIkbmFt
ZVwiLCBcIicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIFwiLCBcIiRhcmdUeXBlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke2FyZ1ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmICEke2FyZ1ZhbHVlfS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRl
cmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ0NzQsNyArNDQ2Nyw3IEBAIEVO
RAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250
ZXh0KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtp
bnRlcmZhY2VOYW1lfSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoKmV4ZWMs
IFwiJHtpbnRlcmZhY2VOYW1lfVwiKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgICAgIHB1c2go
QGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjYXN0ZWRUaGlzLT5kb2N1bWVudCgpIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGVjZGI0NDUxNDA4YzgyZWE3YWU5MjBmMGU4
NzE1NWI5OWU4MDViOGQuLjc3MzM0ZmJmNWI2MzZmMzIxNmYwZTk1NmUyOTkyMjBlOWNhMjkyMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNDcsMjggKzE0NywyMSBA
QCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RBY3Rp
dmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnZXhjaXRpbmdBdHRyJyBvbiBhIG5vbi1UZXN0QWN0aXZlRE9NT2JqZWN0IG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4iLCAi
ZXhjaXRpbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RBY3RpdmVET01PYmplY3QiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2Jq
ZWN0IiwgImV4Y2l0aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nQXR0ciIpOwogICAgIH0K
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0QWN0aXZl
RE9NT2JqZWN0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5leGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RB
Y3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xODcsNyArMTgwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RBY3RpdmVET01PYmplY3QiLCAiLiIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RBY3RpdmVET01PYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFj
dGl2ZURPTU9iamVjdDo6aW5mbygpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjA2LDcgKzE5OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4iLCAicG9zdE1lc3NhZ2UiLCAiIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6aW5mbygpKTsKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0JiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggZDJiNDYwMzY2NTc5NDg4ODk0NDczN2Nl
OTM5Mjg2MzQ1ZTMwYjgyNS4uNDRjNDE1ZDliMmYzYTQ1NGEwYWI0YTYyMTZkZGU4N2JjNDViOTFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNTMsMTAgKzE1
Myw4IEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xNzMsNyArMTcxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
QW5vdGhlckZ1bmMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIiLCAiLiIsICJhbm90aGVyRnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdEN1c3RvbU5hbWVkR2V0dGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmluZm8oKSk7CiAgICAgVGVzdEN1c3RvbU5hbWVkR2V0dGVyJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDJkOTZmNmNiMGRmZjJiZWM4MDVj
NzMxMWRiZmZhZjI2N2I2NTVkMzEuLjlhZDllZWZkYmRjOGU4ZmUzNjMzOGRiMGNiZmNjZGI1N2Yx
ZWI2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE4MCwxNiAr
MTgwLDExIEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdhdHRyMScgb24gYSBub24tVGVzdEV2ZW50Q29uc3RydWN0b3Igb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgIi4iLCAi
YXR0cjEiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAiYXR0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5h
dHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTksMjYg
KzE5NCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdhdHRyMicgb24gYSBub24tVGVzdEV2ZW50Q29uc3RydWN0b3Igb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgIi4iLCAi
YXR0cjIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAiYXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5h
dHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggOTg2NDNm
NjJmZTJiNjQ1NjZkOWVlY2YzZTZlMWY0N2E5ZWFhNWFhNy4uZmEzYmVlNzgyOTM0NjFiOTk3OWZi
OTg2ZWRiZTI1ZWM3ZDgzMThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xODQs
MTAgKzE4NCw4IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldCogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CkBAIC0yMTMsNyArMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIGUKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEV2ZW50VGFy
Z2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIsICJpdGVtIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRhcmdldCIsICJpdGVtIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsK
ICAgICBUZXN0RXZlbnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0yMzQsNyArMjMyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRk
RXZlbnRMaXN0ZW5lcigKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIs
ICJhZGRFdmVudExpc3RlbmVyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdl
dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVu
dFRhcmdldCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKICAgICBUZXN0RXZl
bnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtMjQ5LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RFdmVudFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZl
bnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIi4iLCAicmVt
b3ZlRXZlbnRMaXN0ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRUYXJnZXQi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRU
YXJnZXQiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgVGVzdEV2
ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlzdGVu
ZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTI2NCw3ICsyNjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRj
aEV2ZW50KEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0RXZlbnRUYXJnZXQqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RFdmVudFRhcmdldCIsICIuIiwgImRp
c3BhdGNoRXZlbnQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFyZ2V0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50VGFyZ2V0
IiwgImRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRlc3RFdmVudFRhcmdldCYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMWJmY2U1Y2UzNzcyOTUwODQ5MjRhZWI1
OGRlMGI2NzMwNzE2ZjA1Ny4uNWUzYTZlYjMwZTk2MWVlYmY1Nzg3ZTdjMTZmYmNmNzlhMmZhYzY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEzOSwyNiArMTM5LDE5IEBAIGJvb2wgSlNU
ZXN0RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnbmFtZScgb24gYSBub24tVGVzdEV4Y2VwdGlvbiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEV4Y2VwdGlvbiIsICIuIiwgIm5hbWUi
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV4Y2Vw
dGlvbiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKICAg
ICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RFeGNlcHRpb24mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7
CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDEzNDg0
NWVhNGRiMTY4YjE2Y2U2YWI1MDMzOGYxZGRkYzMzNTRjM2IuLmY4ZmZiNjlhYWM0NTEzMWNiZjFk
Mjg0OWUwMDRlYmRhOTkwZTdmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKQEAgLTExOSwxMCArMTE5LDggQEAgYm9vbCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAg
aWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBkZWQxYmRmYmY3M2Y0YzhkMTQ3MzFhZWNmNGRhMWY3
N2NhNmU1MmRiLi5kNmMwZmVlMGIwZTIzOTM3ZDc5ZWQxNTMwNmRkMGVhMjJmZjdkNmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdElu
dGVyZmFjCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRlc3RJbnRlcmZhY2Ug
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoKmV4ZWMs
ICJUZXN0SW50ZXJmYWNlIik7CiAgICAgUmVmUHRyPFRlc3RJbnRlcmZhY2U+IG9iamVjdCA9IFRl
c3RJbnRlcmZhY2U6OmNyZWF0ZSgqY29udGV4dCwgc3RyMSwgc3RyMiwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwpAQCAtNDE2LDcgKzQxNiw2
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0
YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRz
U3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTQyOCw3ICs0MjcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSgogewogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDM5LDE2ICs0MzcsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1wbGVtZW50c1N0cjEnIG9uIGEg
bm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRzU3RyMSIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC00NjAsMTYgKzQ1MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihz
bG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNj
ZXNzIHByb3BlcnR5ICdpbXBsZW1lbnRzU3RyMicgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwg
ImltcGxlbWVudHNTdHIyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmltcGxlbWVu
dHNTdHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ4MSwx
NCArNDY5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVu
dHNTdHIzJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjMiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmltcGxlbWVudHNTdHIzKGV4ZWMpKTsKIH0KQEAgLTQ5OSwxNiArNDgzLDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
Tm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVudHNOb2RlJyBvbiBhIG5vbi1UZXN0
SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50
ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c05vZGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAiaW1wbGVtZW50c05vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuaW1wbGVtZW50c05vZGUoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTUyMSw3ICs1MDAsNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1Jl
YWRPbmx5QXR0cihFeGVjU3RhdAogewogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3Rh
dGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTUzMyw3ICs1MTEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLAogewogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NDQsMTYgKzUyMSwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLAogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBsZW1lbnRhbFN0cjEn
IG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIxIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxTdHIxIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJm
YWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMSgm
aW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTU2NSwxNiAr
NTM3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3VwcGxlbWVu
dGFsU3RyMicgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjIiLCAi
IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFj
ZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxTdHIyKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
NTg2LDE0ICs1NTMsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdz
dXBwbGVtZW50YWxTdHIzJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFs
U3RyMyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoZXhlYykpOwogfQpAQCAtNjA0LDE2ICs1
NjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
U3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdXBwbGVtZW50
YWxOb2RlJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsTm9kZSIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNl
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsTm9kZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjIxLDEwICs1NzksOCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYQogCiAjZW5kaWYKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC02NTUsNyArNjExLDYgQEAgdm9pZCBKU1Rlc3RJbnRlcmZh
Y2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC02NjgsMTAgKzYy
Myw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiB2b2lkIHNldEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTY4NywxMCArNjQxLDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICoKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRz
U3RyMyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJ
bnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXN0ZWRUaGlzLT5zZXRJbXBsZW1lbnRzU3RyMyhleGVjLCB2YWx1ZSk7CkBAIC03MDIsMTAg
KzY1NSw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c05vZGUiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2Rl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTcyMSw3ICs2NzMsNiBAQCB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKgogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRp
Y0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTczNCwxMCAr
Njg1LDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamUKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjIiLCAiIHNldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0SW50ZXJmYWNlJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNzUzLDEwICs3MDMsOSBAQCB2b2lkIHNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAi
c3VwcGxlbWVudGFsU3RyMyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldFN1cHBsZW1lbnRhbFN0cjMoZXhlYywgdmFs
dWUpOwpAQCAtNzY4LDEwICs3MTcsOSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdAogdm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsTm9kZSIs
ICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJm
YWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC03OTQsNyArNzQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2Ui
LCAiLiIsICJpbXBsZW1lbnRzTWV0aG9kMSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50
ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIFRlc3RJ
bnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRz
TWV0aG9kMSgpOwpAQCAtODA5LDcgKzc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRl
cmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhvZDIiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhv
ZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdElu
dGVyZmFjZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtODM4LDcgKzc4
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJm
YWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhvZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVudHNNZXRob2QzKGV4ZWMp
KTsKIH0KQEAgLTg2MCw3ICs4MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9k
MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50
ZXJmYWNlOjppbmZvKCkpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMSgmaW1wbCk7
CkBAIC04NzUsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxNZXRob2QyIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFj
ZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtOTA0LDcgKzg1Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2QzCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwg
Ii4iLCAic3VwcGxlbWVudGFsTWV0aG9kMyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50
ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKGV4ZWMp
KTsKIH0KQEAgLTkyMywzMyArODcxLDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvCiAvLyBD
b25zdGFudCBnZXR0ZXJzCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFO
VDEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQxKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cigxKSk7CiB9CiAKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNU
QU5UMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDIo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKDIpKTsKIH0KIAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxD
T05TVEFOVDEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05T
VEFOVDEoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDEpKTsKIH0KIAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVN
RU5UQUxDT05TVEFOVDIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5U
QUxDT05TVEFOVDIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKDIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCmluZGV4IDRmZTBkZGFiODQ0MDAxMWI2M2NjYWQ4Njk3NWJkZjhiYzQx
ZmYzZGUuLjhiODk3MDdjZDg5NmY5M2NiYTJhZGZjNGE1NjgzNDA2OGQ3MjQ3YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEyNiwxMCArMTI2
LDggQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKQEAgLTE0NiwxMyAr
MTQ0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIi4iLCAibWV0
aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbmZvKCkpOwogICAg
IFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVu
dCAiLCAiMSIsICIgKCciLCAibGlzdGVuZXIiLCAiJykgdG8gIiwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIi4iLCAibWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImxp
c3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIFJl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kKGxpc3RlbmVyKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQxM2E2NTkwMTg2YmQzNzkyYTY3ZDk3MTc4Yzc3NmI4
NzE0ZDliNGQuLjg2YzMyMzc2ZjNhNzQ4OGMzNDU5NTkxZmExOTgzMWE3MjIxZjAyYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2NiwxMCArMTY2LDggQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihiYXNl
VmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA1OWQzMWNiYmIzY2U1NGFiMjg2ZGQ4Zjg0ZDQ4
MjE0Njc5MDhjNzcwLi5iMDcwZWFkOGExNWUwYzk3MjA3OGQ4ZTRjZWY1N2RmYTc4NzQ0ZWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCkBAIC0xMjMsMTAgKzEyMyw4IEBAIGJvb2wgSlNUZXN0Tm9kZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAg
ICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDFmYmVhODU1Y2NkZGRlNDcxODNiNTZmMWEwMTAxMGIxYmFjMDU3MTMu
LjgxYjNkOWYxZTgwMzQ0ZTUzYjA2Mjk0YjVkMjkwYmIyZjcwMGQxYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T2JqKEV4ZWNTdGF0ZSoKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgn
IiwgInRlc3RDYWxsYmFjayIsICInKSB0byAiLCAidGhlICIsICJUZXN0T2JqIiwgIiBjb25zdHJ1
Y3RvciIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9i
aiIsIG51bGxwdHIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpT
VGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IG9iamVj
dCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2Jq
ZWN0LmdldCgpKSkpOwpAQCAtMTAwOSwxNiArMTAwOSwxMSBAQCBib29sIEpTVGVzdE9iajo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRP
bmx5TG9uZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWFkT25seUxvbmdBdHRyIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwMjgsMTYgKzEwMjMs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
YWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRPbmx5U3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
InJlYWRPbmx5U3RyaW5nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWFkT25seVN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDQ3LDE2ICsxMDM3LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdyZWFkT25seVRlc3RPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVh
ZE9ubHlUZXN0T2JqQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVh
ZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwu
cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTA2Nyw3ICsxMDUyLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmoKIHsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRl
c3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtMTA3Nyw3ICsxMDYxLDYgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHMKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RPYmo6OnN0YXRpY1N0cmluZ0F0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4NiwxNCArMTA2OSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iaicgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlRlc3RT
dWJPYmoiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmoiKTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKGV4
ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0xMTAyLDE0ICsx
MDgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmcnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
ZyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZy
YW1lKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMTIzLDE2ICsxMDk4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2VudW1BdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiZW51
bUF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuZW51
bUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE0Miwx
NiArMTExMiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdieXRlQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImJ5dGVBdHRyIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNjEsMTYgKzExMjYsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1YKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ29j
dGV0QXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0
dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJvY3RldEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xMTgwLDE2ICsxMTQwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9j
dGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJE
ZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzaG9ydEF0dHInIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJzaG9ydEF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7
CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zaG9y
dEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE5OSwx
NiArMTE1NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNpZ25lZFNob3J0QXR0cicgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgInVuc2lnbmVkU2hvcnRBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkU2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMTgsMTYgKzExNjgsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbG9uZ0F0
dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJsb25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxv
bmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xMjM3LDE2ICsxMTgyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdsb25nTG9uZ0F0dHInIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJsb25nTG9uZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdB
dHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5sb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTI1NiwxNiArMTE5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNpZ25lZExvbmdMb25n
QXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRo
ZSAiLCAiVGVzdE9iaiIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xv
bmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNzUs
MTYgKzEyMTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5n
QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwu
c3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0x
Mjk0LDE2ICsxMjI0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3Rlc3RPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
dGVzdE9iakF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudGVzdE9iakF0dHIoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMTMsMTYgKzEyMzgsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdYTUxPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiWE1MT2JqQXR0ciIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJYTUxPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcGwueG1sT2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTMzMiwxNiArMTI1MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpY
TUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY3JlYXRlJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiY3JlYXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNyZWF0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzNTEsMTYgKzEyNjYsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVm
bGVjdGVkU3RyaW5nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTM3MCwxNiArMTI4MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAncmVmbGVjdGVkSW50ZWdyYWxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkSW50ZWdy
YWxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZElu
dGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTM4OSwxNiArMTI5NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhcwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBsLmdldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0
dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MDgs
MTYgKzEzMDgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkQm9vbGVhbkF0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRCb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cikpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MjcsMTYgKzEzMjIsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdyZWZsZWN0ZWRVUkxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkVVJMQXR0ciIs
ICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0
ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDQ2LDE2
ICsxMzM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkU3RyaW5nQXR0cicgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3Ry
aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmZhc3RHZXRBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDY1LDE2ICsxMzUwLDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5n
ZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRl
Z3JhbEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTQ4NCwxNiArMTM2NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9t
Q29udGVudEJvb2xlYW5BdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTE1MDMsMTYgKzEzNzgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2wKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIs
ICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJM
QXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTUyMiwxNiArMTM5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYQogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd0eXBlZEFycmF5QXR0cicg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgInR5cGVkQXJyYXlBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihp
bXBsLnR5cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNTQxLDE0ICsxNDA2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTU2MSwxNiArMTQyMiwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdhdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE1ODAsMTQgKzE0MzYs
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
CisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xNjAwLDE2ICsxNDUyLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTYxOSwxNCArMTQ2
NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ2N1c3RvbUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21BdHRyIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tQXR0cihleGVjKSk7CiB9CkBAIC0x
NjM1LDE0ICsxNDc4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShleGVjKSk7CkBAIC0xNjUzLDE0ICsxNDkyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3Mg
cHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKQEAgLTE2NzQsMTQgKzE1MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU08K
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTE2OTQsMTQgKzE1MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXMnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAg
fQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNzE3LDE0ICsx
NTQ0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZScgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCkBA
IC0xNzM4LDE0ICsxNTYxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcycgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE3NjEsMTQgKzE1
ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7
CiAgICAgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTc4Miwx
NCArMTU5NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUoKSkpOwpAQCAtMTgwMSwxNiArMTYxMiwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2NvbmRpdGlvbmFsQXR0cjEnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIx
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4
MjIsMTYgKzE2MjgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHIyJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xODQzLDE2ICsxNjQ0LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
Y29uZGl0aW9uYWxBdHRyMycgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjMiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0
cjMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg2NCwxNCAr
MTY2MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyNCcgb24g
YSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RPYmplY3RBOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTg4MiwxNCArMTY3NCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyNScgb24gYSBub24tVGVzdE9iaiBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlv
bmFsQXR0cjUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjUiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RCOjpn
ZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwog
fQpAQCAtMTkwMCwxNCArMTY4OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0
aW9uYWxBdHRyNicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjYiLCAiIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICB9CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52
bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTkxNywxNiArMTcwMSwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ2NhY2hlZEF0dHJpYnV0ZTEnIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjYWNo
ZWRBdHRyaWJ1dGUxIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKKyAgICB9CiAgICAgaWYg
KEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTEuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xOTM5LDE2ICsxNzE4LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRB
dHRyaWJ1dGUyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnY2FjaGVkQXR0cmlidXRlMicgb24gYSBub24tVGVzdE9iaiBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNhY2hlZEF0
dHJpYnV0ZTIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
YWNoZWRBdHRyaWJ1dGUyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgIH0KICAgICBpZiAoSlNW
YWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5nZXQoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTE5NjEsMTYgKzE3MzUsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2FueUF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImFueUF0dHJpYnV0ZSIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5hbnlBdHRyaWJ1dGUoKS5oYXNOb1ZhbHVlKCkgPyBq
c051bGwoKSA6IGltcGwuYW55QXR0cmlidXRlKCkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTgwLDE0ICsxNzQ5LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdjb250ZW50RG9jdW1lbnQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb250ZW50RG9jdW1lbnQiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29udGVudERvY3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udGVudERvY3VtZW50Iik7CiAgICAgfQogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShleGVjLCBpbXBsLmNvbnRlbnREb2N1bWVu
dCgpKSA/IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwuY29udGVudERvY3VtZW50KCkpKSA6IGpzTnVsbCgpKTsKQEAgLTE5OTcsMTYgKzE3NjIs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11
dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ211dGFibGVQb2ludCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm11dGFibGVQb2lu
dCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9iaiwg
U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbCwgaW1wbC5tdXRhYmxlUG9pbnQoKSwgJlRlc3RPYmo6OnVw
ZGF0ZU11dGFibGVQb2ludCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yMDE2LDE2ICsxNzc2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQ
b2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltbXV0YWJsZVBvaW50JyBvbiBh
IG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJpbW11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50KCkpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjAzNSwxNiArMTc5MCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jbwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3Ry
YXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ3N0cmF3YmVycnknIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJhd2JlcnJ5IiwgIiBn
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA1NCwxNiArMTgwNCwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdzdHJpY3RGbG9hdCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZsb2F0IiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InN0cmljdEZsb2F0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwNzMsMTYgKzE4MTgsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnZGVz
Y3JpcHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJkZXNjcmlwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJkZXNj
cmlwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5kZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDkyLDE2ICsxODMyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2lkJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiaWQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiaWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpZCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuaWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMjExMSwxNiArMTg0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2hhc2gnIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJoYXNoIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImhhc2giKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5oYXNoKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIxMzAsMTYgKzE4NjAs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVwbGFjZWFibGVBdHRyaWJ1dGUnIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJp
YnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTQ5LDE2ICsxODc0LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURv
dWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ251bGxhYmxlRG91YmxlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0yMTcxLDE2ICsx
ODkxLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUxvbmdBdHRyaWJ1dGUnIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxv
bmdBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0yMTkzLDE2ICsx
OTA4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUn
IG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwubnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVs
bCkpOwpAQCAtMjIxNSwxNiArMTkyNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRl
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIpOworICAgIH0KICAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLm51
bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjIzNywxNiArMTk0MiwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZScg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjI1OSwyMiArMTk1OSwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ251bGxhYmxlU3RyaW5nVmFsdWUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZVN0cmlu
Z1ZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmlu
Z1ZhbHVlIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShpc051
bGwsIGVjKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoaXNOdWxs
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIApAQCAtMjI4MiwxNiArMTk3OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cmlidXRlJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAiYXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwuYXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTIzMDEsMjYgKzE5OTIsMTkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyaWJ1dGVXaXRo
UmVzZXJ2ZWRFbnVtVHlwZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5hdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVj
dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0yMzMwLDcgKzIw
MTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZQogdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1
Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUu
aXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNDEsMTAgKzIwMjQsOSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3Rh
dGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBz
ZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmciLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTIzNTUsMTAgKzIwMzcs
OSBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImVudW1BdHRyIiwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yMzc0LDEwICsyMDU1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlMK
IHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJieXRlQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjM5MSwxMCArMjA3MSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTCiB2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0QXR0ciIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRBdHRy
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTI0MDgsMTAgKzIwODcsOSBAQCB2b2lkIHNldEpTVGVzdE9iak9jdGV0
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVk
Sgogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJzaG9ydEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDI1LDEwICsy
MTAzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEoKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWdu
ZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1
bnNpZ25lZFNob3J0QXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ0MiwxMCArMjEx
OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywKIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJsb25nQXR0ciIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMjQ1OSwxMCArMjEzNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
CiB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImxvbmdMb25nQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0
NzYsMTAgKzIxNTEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZAogdm9pZCBzZXRKU1Rlc3RP
YmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC0yNDkzLDEwICsyMTY3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICoKIHZvaWQgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgInN0cmluZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjUxMCwxMCArMjE4Myw5IEBA
IHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
KiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidGVzdE9iakF0dHIiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI1MjcsMTAgKzIxOTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialRl
c3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZQogdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiWE1MT2JqQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTQ0
LDEwICsyMjE1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWQKIHZvaWQgc2V0SlNUZXN0T2Jq
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY3JlYXRl
IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjcmVh
dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjU2MSwxMCArMjIzMSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1NzgsMTAgKzIyNDcsOSBAQCB2b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTk1LDEwICsyMjYzLDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdAogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0yNjEyLDEwICsyMjc5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMjYyOSwxMCArMjI5NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
CiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRVUkxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTI2NDYsMTAgKzIzMTEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVS
TEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRQogdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yNjYzLDEwICsyMzI3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8K
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjY4MCwxMCArMjM0Myw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTI2OTcsMTAgKzIzNTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYgogdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzE0LDEwICsyMzc1LDkgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QKIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ0eXBlZEFycmF5QXR0ciIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMjczMSwxMCArMjM5MSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJh
eUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jCiB2
b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3NDgsMTAgKzI0MDcsOSBAQCB2b2lkIHNldEpT
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplYwogdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzY3LDEwICsyNDI1
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWMKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc4NCwxMCArMjQ0MSw5IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4
MDMsMTAgKzI0NTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RP
YmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
Y3VzdG9tQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY3VzdG9tQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc3RlZFRo
aXMtPnNldEN1c3RvbUF0dHIoZXhlYywgdmFsdWUpOwpAQCAtMjgxNiwxMCArMjQ3MSw5IEBAIHZv
aWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4
MzMsMTAgKzI0ODcsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZQogdm9pZCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODUzLDEw
ICsyNTA2LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kgogdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODcwLDEwICsyNTIyLDkgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmEKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg5MCwxMCArMjU0MSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5MTAsMTAgKzI1NjAsOSBAQCB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleAogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTMwLDEwICsyNTc5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGEKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjk1MCwxMCArMjU5OCw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgIiBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5NjgsMTAgKzI2MTUsOSBA
QCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iagogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9u
YWxBdHRyMSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTg3LDEwICsyNjMzLDkgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0
cjIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzAwNiwxMCArMjY1MSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFCiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIzIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRp
b25hbEF0dHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMwMjUsMTAgKzI2NjksOSBAQCB2b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRQogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0
dHI0IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHI0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNDEsMTAgKzI2ODQsOSBAQCB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRp
b25hbEF0dHI1IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNTcsMTAgKzI2OTksOSBAQCB2
b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJj
b25kaXRpb25hbEF0dHI2IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNzIsMTAgKzI3MTMs
OSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhbnlBdHRyaWJ1
dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFu
eUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMDg5LDEwICsyNzI5LDkgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2QKIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibXV0YWJsZVBvaW50IiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMzEwNiwxMCArMjc0NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kCiB2b2lk
IHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8q
IGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0T2JqIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMx
MjMsMTAgKzI3NjEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuYwogdm9pZCBzZXRKU1Rlc3RP
YmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
c3RyYXdiZXJyeSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTQwLDEwICsyNzc3LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kZWQKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGbG9hdCIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMzE1NywxMCArMjc5Myw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0Rmxv
YXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlCiB2
b2lkIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAiaWQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTMxNzQsMTAgKzI4MDksOSBAQCB2b2lkIHNldEpTVGVzdE9i
aklkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlCiB2b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlcGxhY2Vh
YmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gb2JqZWN0CkBAIC0zMTg4LDEwICsyODIyLDkgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAt
MzIwNSwxMCArMjgzOCw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzCiB2b2lkIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
QEAgLTMyMjIsMTAgKzI4NTQsOSBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLwogdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjQ4LDcgKzI4NzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZChFeGVjU3RhdGUqIGV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInZvaWRNZXRob2QiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidm9pZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7
CkBAIC0zMjYwLDcgKzI4OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgInZvaWRNZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAt
MzI4Myw3ICsyOTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBleGUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJieXRlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kKCkpOwpAQCAtMzI5NSw3
ICsyOTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJi
eXRlTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZU1l
dGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTMzMTgsNyArMjk0
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib2N0ZXRN
ZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZCgpKTsKQEAgLTMzMzAsNyArMjk2MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTMzNTMsNyArMjk4NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
b25nTWV0aG9kKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ01ldGhvZCIs
ICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKQEAgLTMzNjUsNyArMjk5Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0
aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ01ldGhvZFdpdGhBcmdz
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdNZXRob2RXaXRoQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMzg4LDcgKzMwMTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9iak1ldGhvZCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkp
OwpAQCAtMzQwMCw3ICszMDMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJvYmpNZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0z
NDIzLDcgKzMwNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZQogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAt
MzQ0MCw3ICszMDcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CkBAIC0zNDU3LDcgKzMwODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM0
NjYsNyArMzA5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpZiAoZW51bUFyZyAhPSAiIiAmJiBlbnVtQXJnICE9ICJFbnVt
VmFsdWUxIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUyIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFs
dWUzIikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAiZW51bUFyZyIsICIn
KSB0byAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIiBtdXN0IGJlIG9u
ZSBvZjogIiwgIlwiXCIsIFwiRW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiwgXCJFbnVtVmFs
dWUzXCIiKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpl
eGVjLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIlwiXCIs
IFwiRW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiwgXCJFbnVtVmFsdWUzXCIiKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0zNDc2LDcgKzMxMDcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJncwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCkBAIC0zNDk5
LDcgKzMxMzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
InNlcmlhbGl6ZWRWYWx1ZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzZXJpYWxp
emVkVmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzUxNiw3ICszMTQ3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9wdGlvbnNPYmpl
Y3QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3B0aW9uc09iamVjdCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zNTM2LDcgKzMxNjcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbihFeGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC0zNTUwLDcgKzMxODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEV4ZWNTdGF0ZSogZQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbU1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJjdXN0b21NZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZChleGVjKSk7CiB9CkBAIC0zNTYwLDcgKzMxOTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kV2l0aEFyZ3MoRXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbU1ldGhv
ZFdpdGhBcmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImN1c3RvbU1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5j
dXN0b21NZXRob2RXaXRoQXJncyhleGVjKSk7CiB9CkBAIC0zNTcwLDcgKzMyMDEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZl
bnRMaXN0ZW5lcihFeGVjU3RhdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImFkZEV2ZW50TGlzdGVuZXIi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBs
aXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtMzU4NSw3ICszMjE2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuZXIoRXhlY1MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJyZW1vdmVFdmVudExpc3RlbmVy
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTM2MDAsNyArMzIzMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRl
Vm9pZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lk
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
bXBsLndpdGhTY3JpcHRTdGF0ZVZvaWQoZXhlYyk7CkBAIC0zNjEyLDcgKzMyNDMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlT2JqKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRTdGF0ZU9i
aiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVPYmoiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooZXhlYykpKTsKQEAgLTM2MjYsNyArMzI1Nyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlw
dFN0YXRlVm9pZEV4Y2VwdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM2NDAsNyAr
MzI3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0
aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0zNjU3
LDcgKzMyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzY3Miw3ICszMzAzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBA
IC0zNjg3LDcgKzMzMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0z
NzA3LDcgKzMzMzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzcyNCw3ICszMzU1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4g
c2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDAp
KTsKQEAgLTM3MzcsNyArMzM2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAKQEAgLTM3NTksNyArMzM5MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kT3B0aW9uYWxBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtMzc4Niw3ICszNDE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM4MjEs
NyArMzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAi
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAKQEAgLTM4NDMsNyArMzQ3NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNV
bmRlZmluZWQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyKGV4ZWMtPmFyZ3VtZW50KDApLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKQEAgLTM4NTgsNyArMzQ4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5n
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzTnVsbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHIoYXJndW1lbnRPck51bGwoZXhlYywgMCkuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBhcmd1bWVudE9yTnVsbChleGVjLCAwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwpAQCAtMzg3MywxMyArMzUwNCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCci
LCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxs
YmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RX
aXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zODkwLDcgKzM1MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTM4OTks
NyArMzUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIsICIgKCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwg
IlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIs
ICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxs
YmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcobm9uQ2FsbGJhY2ssIGNh
bGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MzkxMCwxMyArMzU0MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJj
YWxsYmFjayIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgICAg
IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAg
aW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CkBAIC0zOTI4
LDcgKzM1NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogICAgIFJlZlB0cjxUZXN0Q2Fs
bGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRP
ck51bGwoKSkgewogICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVu
Y3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImNhbGxi
YWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmoiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsK
ICAgICAgICAgY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxs
YmFjaz4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0
T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CkBA
IC0zOTQwLDcgKzM1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIg
KCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iaiIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTVGVzdENh
bGxiYWNrPihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgVGVzdE9iajo6
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzk1Miw3ICszNTgzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
TWV0aG9kMShFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbE1ldGhvZDEiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkp
OwpAQCAtMzk2Nyw3ICszNTk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3QKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJjb25kaXRpb25hbE1ldGhvZDIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOwpAQCAtMzk4
Miw3ICszNjEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIs
ICJjb25kaXRpb25hbE1ldGhvZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29u
ZGl0aW9uYWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMygpOwpAQCAtMzk5Niw3ICszNjI3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNDAxNiw3ICszNjQ3LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMigKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9k
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDA0Myw3ICszNjc0LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMygKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQpAQCAtNDA2MCw3ICszNjkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NCgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNDA3NywxMyArMzcwOCwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAi
LCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG11c3QgYmUgYSBmdW5jdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpl
eGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
UmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjayk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQwOTQsNyArMzcyNSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQxMTEsNyArMzc0Miw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDcoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJD
YW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTQxMjgsNyArMzc1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDgoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKQEAgLTQxNDUsNyArMzc3Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTQxNjIsNyArMzc5Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJv
dmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQxNzksNyAr
MzgxMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQzMDQsNyArMzkzNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY2xhc3NNZXRob2RX
aXRoQ2xhbXAiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRo
Q2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNDMzNCw3ICszOTY1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2UiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTQzNTEsNyArMzk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQz
NzEsNyArNDAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4i
LCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00
MzkxLDcgKzQwMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgImdldFNWR0RvY3VtZW50IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImdldFNW
R0RvY3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ0MDgsNyArNDAzOSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDEiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udmVydDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNDQyNSw3ICs0MDU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJjb252ZXJ0MiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00NDQyLDcgKzQwNzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbnZlcnQ0Iiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnZlcnQ0Iik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKQEAgLTQ0NTksNyArNDA5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDUiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29udmVydDUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDQ3Niw3ICs0
MTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtdXRh
YmxlUG9pbnRGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxl
UG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVh
dGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwpAQCAtNDQ4OCw3ICs0MTE5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbklt
bXV0YWJsZVBvaW50RnVuY3Rpb24oRXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJpbW11dGFibGVQb2lu
dEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGlt
cGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwpAQCAtNDUwMCw3ICs0MTMxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5n
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3JhbmdlIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKQEAgLTQ1MTIsNyArNDE0
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaWN0
RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAtNDUzOCwxNCArNDE2OSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0
RnVuY3Rpb25XaXRoU2VxdWVuYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0
aFNlcXVlbmNlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9u
V2l0aFNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+IDAgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMt
PmFyZ3VtZW50KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJB
cmd1bWVudCAiLCAiMSIsICIgKCciLCAib2JqQXJnIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4i
LCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkp
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCAwLCAib2JqQXJn
IiwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiVGVzdE9iaiIpOwog
ICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBp
ZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDU2MywxNCArNDE5NCwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVu
Y3Rpb25XaXRoQXJyYXkoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDAgJiYg
IWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50
KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAi
LCAiMSIsICIgKCciLCAib2JqQXJnIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaWN0
RnVuY3Rpb25XaXRoQXJyYXkiLCAiIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFl
eGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpCisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCAwLCAib2JqQXJnIiwgIlRlc3RPYmoi
LCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiLCAiVGVzdE9iaiIpOwogICAgIFRlc3RPYmoqIG9i
akFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNDU4OCw3ICs0MjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWMK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCkBAIC00NjA4LDcgKzQyMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTQ2MjgsNyArNDI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCkBAIC00NjM5LDcgKzQyNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIFZl
Y3RvcjxOb2RlKj4gdGFpbDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxLCBjb3VudCA9IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKCFleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKS5pbmhlcml0cyhKU05vZGU6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkFyZ3VtZW50ICIsICIyIiwgIiAoJyIsICJ0YWlsIiwgIicpIHRvICIsICJUZXN0T2Jq
IiwgIi4iLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgaSwgInRhaWwi
LCAiVGVzdE9iaiIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwogICAgICAgICB0YWls
LmFwcGVuZCh0b05vZGUoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICB9CiAgICAg
aW1wbC52YXJpYWRpY05vZGVNZXRob2QoaGVhZCwgdGFpbCk7CkBAIC00NjUxLDcgKzQyODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QW55KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJhbnkiLCAiIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiYW55Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAg
LTQ2ODAsNDYgKzQzMTEsMzkgQEAgdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIC8vIENvbnN0YW50IGdldHRlcnMKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09ORElUSU9OQUxf
Q09OU1QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05ESVRJT05BTF9DT05TVChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkp
OwogfQogCiAjZW5kaWYKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzAoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDT05TVF9WQUxVRV8xKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcigxKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNP
TlNUX1ZBTFVFXzIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8yKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigy
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcig0KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05T
VF9WQUxVRV84KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcig4KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZB
TFVFXzkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV85KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwog
fQogCkBAIC00NzI4LDM5ICs0MzUyLDMzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNU
X1ZBTFVFXzEwKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZ09yTnVsbChleGVjLCBTdHJpbmcoIm15IGNv
bnN0YW50IHN0cmluZyIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZB
TFVFXzExKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTEoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDB4ZmZm
ZmZmZmYpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMihFeGVjU3RhdGUqLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMHgwMSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzEzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwWDIwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzE0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFM
VUVfMTQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDB4MWFiYykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9K
QVZBU0NSSVBUKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
MTUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZG9ubHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWFkb25seShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggYzM4MDkwN2YwMmNmNjM5NzkyYmM4ZTg5
Zjk5MmU3MGZjMDMwNDBmNi4uZDhjYTc0ZTg1ODFjNDdjM2RiMGMxYTlhOWJjNmZiNzVkMmE4YTY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
MTk0LDEwICsxOTQsOCBAQCBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAg
aWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCA3ZmQzMzRmNmVkYzU4ZGQyM2Y2OWNjYWY0NzU3MDhlMzM2ZjUzMWE0Li5mZTM5
MDI0Mjk3MWEwMTM3OWI3MTUxZWEyMDNiNTRjMjhhNmVmMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTUwLDE2
ICsxNTAsMTEgQEAgYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LAogRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICd2YWx1ZScgb24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgInZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUi
KTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2OSwxNiArMTY0LDExIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVhZG9u
bHlWYWx1ZScgb24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICIuIiwgInJlYWRvbmx5VmFsdWUiLCAiIGdldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
IiwgInJlYWRvbmx5VmFsdWUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwu
cmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xODgsMTYgKzE3OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNoZWRWYWx1ZScgb24gYSBub24tVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgImNhY2hl
ZFZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNs
b3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVk
VGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIxMCwxNiArMTk1LDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncG9ydHMnIG9uIGEg
bm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
LCAiLiIsICJwb3J0cyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0
cyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb3J0cygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMjksMTYgKzIwOSwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZQogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ2NhY2hlZFJlYWRvbmx5VmFsdWUnIG9uIGEgbm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJjYWNoZWRSZWFkb25seVZhbHVl
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFJlYWRvbmx5VmFs
dWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVlIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1
ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0OCwxMCAr
MjIzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihiYXNlVmFsdWUp
OwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKQEAgLTI2MSwxMCArMjM0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLAogdm9pZCBz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgInZh
bHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzgsMTAgKzI1MCw5
IEBAIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogLyoKIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJjYWNoZWRWYWx1ZSIsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggZjdmYjQ2Mzk3MzNiODk3NzA1NDYyOTc3YTRlOTdkOTgxMjk1NWE4OC4uNDg1ODExZTYwN2Zk
ODZiMzI0ZDE4ZTcxYzM2YjZhZTJhZjBiMTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMoCiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIsICIgKCciLCAidGVzdENhbGxiYWNrIiwgIicpIHRv
ICIsICJ0aGUgIiwgIlRlc3RUeXBlZGVmcyIsICIgY29uc3RydWN0b3IiLCAiIG11c3QgYmUgYSBm
dW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpleGVjLCAxLCAidGVzdENhbGxiYWNrIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOwog
ICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpj
cmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgUmVmUHRyPFRlc3RUeXBlZGVmcz4gb2JqZWN0ID0gVGVzdFR5
cGVkZWZzOjpjcmVhdGUoaGVsbG8sIHRlc3RDYWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBv
YmplY3QuZ2V0KCkpKSk7CkBAIC0yNTMsMTYgKzI1MywxMSBAQCBib29sIEpTVGVzdFR5cGVkZWZz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZQogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyBvbiBhIG5vbi1UZXN0VHlw
ZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVm
cyIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZz
IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51
bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0yNzIsMTYgKzI2NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vu
c2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsbwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUnIG9uIGEgbm9u
LVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMi
LCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpID8gaW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjkxLDE0ICsyODEsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU08KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iaicgb24gYSBub24tVGVz
dFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlw
ZWRlZnMiLCAiLiIsICJUZXN0U3ViT2JqIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIlRl
c3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0zMDcsMTQgKzI5MywxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBzbAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyBv
biBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjcsMTYg
KzMwOSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTM0
NiwxNCArMzIzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdFR5cGVkZWZz
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAi
LiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBl
ZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzY2LDI2ICsz
MzksMTkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2IKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdFR5cGVkZWZzIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVj
dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0zOTUsMTAgKzM2
MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFCiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0VHlwZWRlZnMiLCAiLiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNDEyLDEwICszNzcsOSBAQCB2b2lkIHNldEpT
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iagogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBl
ZGVmcyIsICIuIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQyOSwxMCArMzkzLDkg
QEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kgogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVm
cyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQ0NiwxMCArNDA5LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2UKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVm
cyIsICIuIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC00NjUsMTAgKzQyNyw5IEBAIHZvaWQgc2V0SlNUZXN0
VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlCiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMi
LCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVk
ZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNDgyLDEwICs0NDMsOSBAQCB2b2lk
IHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLwogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTUwOCw3ICs0Njgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogZXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIs
ICIuIiwgImZ1bmMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImZ1
bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5
cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKIApAQCAtNTMwLDcgKzQ5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVm
cyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic2V0U2hhZG93IiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzZXRTaGFkb3ciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRl
c3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMykKQEAgLTU3MSw3ICs1MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgIm1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0
aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC01
ODgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyhFeGUKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
VHlwZWRlZnMiLCAiLiIsICJudWxsYWJsZUFycmF5QXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJudWxsYWJsZUFycmF5QXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCkBAIC02MDUsNyArNTY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChF
eGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJmdW5jV2l0aENsYW1wIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVm
czo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC02NDIsNyArNjAyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGkKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIs
ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBl
ZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RU
eXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0
VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0
aW9uKCkpKSk7CkBAIC02NTQsNyArNjE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVk
ZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25s
eSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBl
ZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC02NzQsNyArNjM0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAi
LiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uMiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlw
ZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTY5NCw3ICs2NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0
UmVxdWlyZXNJbmNsdWRlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAg
VGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQpAQCAtNzExLDcgKzY3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNl
cHRpb24oCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAibWV0aG9kV2l0aEV4Y2Vw
dGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0
aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5k
ZXggMmNkOWFjMWQxNzk1MjM4YzlkZjY1MmFlZTMxNGMxZTFkMGZiYjFhOS4uODgzMjRmODhiMGQ3
NjQ0NjFkNDk4MGIwZGI4ZGExNmEyMjA5MWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjgsMjYg
KzEyOCwxOSBAQCBib29sIEpTYXR0cmlidXRlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogRW5jb2RlZEpTVmFsdWUganNhdHRy
aWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNhdHRyaWJ1dGUqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0
ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRvbmx5JyBvbiBhIG5vbi1hdHRyaWJ1dGUgb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgImF0dHJpYnV0ZSIsICIuIiwgInJl
YWRvbmx5IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgImF0
dHJpYnV0ZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgYXR0cmlidXRlJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbC5yZWFkb25seSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNhdHRyaWJ1dGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApp
bmRleCBjZDFmNjdjYjc5YWE4NmQ4N2I4ZmFmMmQ0MGQ2ZGUxNDVjZmQ5MDk0Li5kNDQzMDhhZGY0
YmQzODEwNmY4NWJlNDk3YzYxMTcyOGY0Yzk2MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0xMTksMTAg
KzExOSw4IEBAIGJvb2wgSlNyZWFkb25seTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNyZWFkb25seVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU3Jl
YWRvbmx5UHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228708</attachid>
            <date>2014-04-06 16:59:38 -0700</date>
            <delta_ts>2014-04-06 17:19:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131285-20140406165921.patch</filename>
            <type>text/plain</type>
            <size>326306</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNmMTU5Mjg1MTBmMTZm
YTEwZjhhNWYwMzQwNDJmNTcwMmU5MjkzMi4uMTllMDlmZjAyMTZhZThmYmEyNjY5NzkyOTY2MTVk
ZmRlODYwMmZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE0LTA0LTA2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHNvbWUgYmluZGluZ3Mg
aW1wcm92ZW1lbnRzLCB3aXRoIHNtYWxsZXIgY29kZSBzaXplIGZvciBlcnJvciBtZXNzYWdlIGdl
bmVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IFJlbW92ZWQgZXhwb3J0IG9mIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZ0ludGVybmFsLgorICAgICAgICBOb3Qgc3VyZSB3aHkgaXQgbmVlZGVkIHRvIGJl
IGV4cG9ydGVkLCBidXQgaW4gYW55IGNhc2UgaXQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd1R5cGVFcnJvcik6IEFkZGVkLiBIZWxwZXIgdG8gYXZvaWQgcmVwZWF0aW5n
IHRocm93Vk1FcnJvci9jcmVhdGVUeXBlRXJyb3IuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRB
cmd1bWVudE11c3RCZSk6IEFkZGVkLiBIZWxwZXIgZm9yIGJ1aWxkaW5nIHVwIGFyZ3VtZW50IGVy
cm9yIHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IpOiBBZGRlZC4gRm9yIGJpbmRpbmdzIHRvIHVzZS4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3RydWN0
b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93R2V0dGVyVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlcXVl
bmNlVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NldHRlclR5cGVF
cnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dUaGlzVHlwZUVycm9yKTogRGl0
dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkZWQgZGVjbGFy
YXRpb25zIGZvciBuZXcgZnVuY3Rpb25zLiBSZW1vdmVkIGZvcndhcmQKKyAgICAgICAgZGVjbGFy
YXRpb25zIGZvciB0aGluZ3Mgbm90IHVzZWQgaW4gdGhpcyBmaWxlLiBVc2UgbnVsbHB0ciBpbnN0
ZWFkIG9mIDAuIEZvcm1hdAorICAgICAgICB0ZW1wbGF0ZXMgY29uc2lzdGVudGx5LiBVc2UgYSBi
ZXR0ZXIgZm9yIGxvb3AgaW4gdGhlIGpzQXJyYXkgZnVuY3Rpb24uIFJlbW92ZWQKKyAgICAgICAg
dW51c2VkIEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbiwgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nLCBhbmQKKyAgICAgICAgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50
ZXJuYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6IFVwZGF0
ZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBDdXQg
ZG93biBvbiB1c2Ugb2YgVU5VU0VEX1BBUkFNLiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAg
ICAgZm9yIGVycm9ycywga2VlcGluZyB0aGUgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8g
YSBtaW5pbXVtLgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBEaXR0by4KKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKTogRGl0dG8uCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoK
KyAgICAgICAgVXBkYXRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBjaGFuZ2VzIGFib3ZlLgorCiAy
MDE0LTA0LTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEhvbm9yIFN5c3RlbS1MZXZlbCBVc2VyIFByZWZlcmVuY2VzIGZvciBDYXB0aW9uIERpc3BsYXkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWE3NGU4NThlOTA2ZjdiNzU3ZDE5ZjJiYjM0N2UxNGM0
YTk4YTQzYy4uYmNkNjYxZjc5ZGIxZTk3NzdjNTA4MTg2OWE4MTM2ZTM2YWMwMDk1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTEwMDEsNyArMTAwMSw2IEBAIF9fWk43V2ViQ29yZTMzc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MzZzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWVFUktOM1dURjZTdHJpbmdFUzNf
CiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1v
dmVXaWRnZXRzRXYKIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNp
b25TY29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnRFCi1fX1pON1dlYkNv
cmUzOG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsRVBLY3oKIF9fWk43V2Vi
Q29yZTNVUkwxMGludmFsaWRhdGVFdgogX19aTjdXZWJDb3JlM1VSTEMxRU5TXzE4UGFyc2VkVVJM
U3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlM1VSTEMxRVA1TlNVUkwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDU4YjczODYx
MjUxNGVjYmIyMzYyNjVjMjRmZGVkY2NiNTk2OGQxZWYuLjAzOTU1ZWZmMWYxZGIwM2U3YmM1NWEy
ZGEzZGJhZGQ5MDBjNTQ1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtNTI3LDE4ICs1MjcsOTcgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSogdGFyZ2UK
ICAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCAmdGFyZ2V0LT5k
b2N1bWVudCgpKTsKIH0KICAgICAKLVN0cmluZyBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmdJbnRlcm5hbChjb25zdCBjaGFyKiBmaXJzdCwgLi4uKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCit7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVF
cnJvcigmc3RhdGUsIGVycm9yTWVzc2FnZSkpOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRBcmd1
bWVudE11c3RCZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFy
Z3VtZW50ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFyZ3VtZW50SW5kZXggKyAxKTsK
KyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoJyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGFy
Z3VtZW50TmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInKSB0byAiKTsKKyAgICBp
ZiAoIWZ1bmN0aW9uTmFtZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInRoZSAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbnN0cnVjdG9yIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcu
Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZSk7CisgICAgfQorICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG11c3QgYmUgIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK3sKKyAg
ICBhdXRvJiBjb250ZXh0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBjb250ZXh0
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBtYWtlU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICciLCBh
dHRyaWJ1dGVOYW1lLCAiJyBvbiBhIG5vbi0iLCBpbnRlcmZhY2VOYW1lLCAiIG9iamVjdC4iKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGNvbnN0IGNoYXIqIHN0ciA9IGZpcnN0OwotICAgIHZhX2xpc3QgbGlzdDsK
LSAgICB2YV9zdGFydChsaXN0LCBmaXJzdCk7Ci0gICAgZG8gewotICAgICAgICBidWlsZGVyLmFw
cGVuZChzdHIpOwotICAgICAgICBzdHIgPSB2YV9hcmcobGlzdCwgY2hhciopOwotICAgIH0gd2hp
bGUgKHN0cik7Ci0gICAgdmFfZW5kKGxpc3QpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CisgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJn
dW1lbnROYW1lLCBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7CisgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJvbmUgb2Y6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGV4cGVj
dGVkVmFsdWVzKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1aWxkZXIudG9T
dHJpbmcoKSk7CiB9Ci0gICAgCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVu
dEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5h
bWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJn
dW1lbnROYW1lLCBpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOworICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiYSBmdW5jdGlvbiIpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgYnVpbGRlci50b1N0cmluZygpKTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRU
eXBlKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBhcHBlbmRBcmd1bWVudE11
c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIGlu
c3RhbmNlIG9mICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVkVHlwZSk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorCit2b2lk
IHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAg
ICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgIkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIik7Cit9
CisKK3ZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCit7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VT
dHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmli
dXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7Cit9CisKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCit7CisgICAg
Ly8gRklYTUU6IFRoaXMgaXMgY29uZnVzaW5nIGV4Y2VwdGlvbiB3b3JkaW5nLiBDYW4gd2UgcmV3
b3JkIHRvIGJlIGNsZWFyZXIgYW5kIG1vcmUgc3BlY2lmaWM/CisgICAgcmV0dXJuIHRocm93Vk1F
cnJvcigmc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhpbnRl
cmZhY2VOYW1lLCAiIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFi
bGUiKSkpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hh
ciogYXR0cmlidXRlTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1h
a2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsK
K30KKwordm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkK
K3sKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgIlZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlIik7
Cit9CisKK3ZvaWQgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorewor
ICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFt
ZSwgJy4nLCBhdHRyaWJ1dGVOYW1lLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIHRocm93VGhp
c1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5h
bWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIG1ha2VTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgaW50ZXJmYWNlTmFtZSwgJy4n
LCBmdW5jdGlvbk5hbWUsICIgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCA3MDViOGQ1NDZhYzY0ODdkNTBiOGUzMWRkNDhlZTljMjczM2I1ODIy
Li40ODM1MDQ5OWQ2NzdhMzQ2OTg3M2FjZjExMGZjNjVmNTFjZjQ2Yjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNTQsMTMgKzU0LDEwIEBAIGNsYXNz
IEhhc2hFbnRyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01TdHJpbmdMaXN0
OwotCiBjbGFzcyBDYWNoZWRTY3JpcHQ7Ci1jbGFzcyBEb2N1bWVudDsKK2NsYXNzIERPTVN0cmlu
Z0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEhUTUxEb2N1bWVu
dDsKIGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiAKQEAgLTY5LDYgKzY2LDIwIEBAIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiBET01XaW5kb3cmIGFjdGl2ZURPTVdpbmRvdyhKU0M6OkV4ZWNT
dGF0ZSopOwogRE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogCitK
U0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpOworCit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7
Cit2b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciog
ZXhwZWN0ZWRUeXBlKTsKK3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYpOwordm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOworCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcyk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1l
bnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbklu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1
bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
SW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFR5cGUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRV
bmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFt
ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7
CisKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjb25zdHJ1Y3RvciBvYmplY3RzIGluIHRoZSBKU0Mg
YmluZGluZ3MuCiBjbGFzcyBET01Db25zdHJ1Y3Rvck9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXIgewogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CkBAIC05NywyMCArMTA4LDIwIEBA
IGlubGluZSBKU0RPTUdsb2JhbE9iamVjdCogZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3Rv
dHlwZShKU0M6OkV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKIH0KIAotdGVtcGxhdGU8
Y2xhc3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01TdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgaWYgKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRDYWNoZWRET01TdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBzdHJ1
Y3R1cmU7CiAgICAgcmV0dXJuIGNhY2hlRE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBl
ckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpj
cmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJl
KiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQordGVtcGxh
dGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgZnVuY3Rpb24gaXMgd3JvbmcuICBJdCB1c2VzIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
IGZvciBjcmVhdGluZyB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZS4KKyAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3Ig
Y3JlYXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCiAgICAgcmV0dXJuIGdldERPTVN0cnVj
dHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMtPnZtKCksIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQ
cm90b3R5cGUoZXhlYykpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4g
aW5saW5lIEpTQzo6SlNPYmplY3QqIGdldERPTVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxK
U0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0s
IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSktPnN0b3JlZFBy
b3RvdHlwZSgpKSk7CiB9CkBAIC0xMjUsMjEgKzEzNiwyMSBAQCBpbmxpbmUgdm9pZCogd3JhcHBl
ckNvbnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciopCiAgICAg
cmV0dXJuICZ3b3JsZDsKIH0KIAotaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0SW5saW5lQ2FjaGVk
V3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKikgeyByZXR1cm4gMDsgfQoraW5saW5lIEpT
RE9NV3JhcHBlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lk
KikgeyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGJvb2wgc2V0SW5saW5lQ2FjaGVkV3JhcHBl
cihET01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFuZGxl
T3duZXIqLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGNsZWFySW5saW5l
Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01XcmFwcGVyKikgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0SW5saW5lQ2FjaGVkV3Jh
cHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBTY3JpcHRXcmFwcGFibGUqIGRvbU9iamVjdCkK
IHsKICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG9tT2JqZWN0LT53cmFwcGVyKCk7CiB9CiAK
IGlubGluZSBKU0M6OkpTQXJyYXlCdWZmZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICgh
d29ybGQuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBidWZmZXItPm1fd3JhcHBlci5nZXQoKTsKIH0KIApAQCAtMTc1LDE0
ICsxODYsMTQgQEAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqIGQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0
Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0
KQordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRD
YWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3Qp
CiB7CiAgICAgaWYgKEpTQzo6SlNPYmplY3QqIHdyYXBwZXIgPSBnZXRJbmxpbmVDYWNoZWRXcmFw
cGVyKHdvcmxkLCBkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1
cm4gd29ybGQubV93cmFwcGVycy5nZXQoZG9tT2JqZWN0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3Jh
cHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVy
Q2xhc3MqIHdyYXBwZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3Jh
cHBlckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQogewogICAgIEpT
Qzo6V2Vha0hhbmRsZU93bmVyKiBvd25lciA9IHdyYXBwZXJPd25lcih3b3JsZCwgZG9tT2JqZWN0
KTsKICAgICB2b2lkKiBjb250ZXh0ID0gd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9iamVjdCk7
CkBAIC0xOTEsNyArMjAyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFt
ZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBlcihET00KICAgICB3ZWFrQWRk
KHdvcmxkLm1fd3JhcHBlcnMsICh2b2lkKilkb21PYmplY3QsIEpTQzo6V2VhazxKU0M6OkpTT2Jq
ZWN0Pih3cmFwcGVyLCBvd25lciwgY29udGV4dCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBw
ZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNs
YXNzKiB3cmFwcGVyKQordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBw
ZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQogewogICAgIGlm
IChjbGVhcklubGluZUNhY2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE5OSw3ICsyMTAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9N
Q2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIo
RAogfQogCiAjZGVmaW5lIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIGNsYXNzTmFt
ZSwgb2JqZWN0KSBjcmVhdGVXcmFwcGVyPEpTIyNjbGFzc05hbWU+KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8Y2xhc3NOYW1lKj4ob2JqZWN0KSkKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFz
cywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyYXBwZXIoSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIG5vZGUpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFw
cGVyKiBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQoIWdldENhY2hlZFdy
YXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBub2RlKSk7CkBAIC0yMDgsNyArMjE5LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTRE9N
V3JhcHBlciogY3JlYXRlV3JhcHBlcigKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdGVtcGxh
dGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1
ZSB3cmFwKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmpl
Y3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBp
bmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0
dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0yMTcsMTMgKzIyOCwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBX
cmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNE
T01HbG9iYQogICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdyYXBwZXJDbGFzcz4oZ2xvYmFsT2Jq
ZWN0LCBkb21PYmplY3QpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNz
IERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGdldEV4aXN0aW5nV3JhcHBlcihKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQordGVtcGxhdGU8
dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNW
YWx1ZSBnZXRFeGlzdGluZ1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBBU1NFUlQoZG9tT2JqZWN0KTsKICAgICByZXR1
cm4gZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGRvbU9iamVjdCk7CiB9
CiAKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBK
U0M6OkpTVmFsdWUgY3JlYXRlTmV3V3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNz
LCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSBjcmVhdGVOZXdXcmFwcGVy
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmplY3QpCiB7
CiAgICAgQVNTRVJUKGRvbU9iamVjdCk7CiAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGds
b2JhbE9iamVjdC0+d29ybGQoKSwgZG9tT2JqZWN0KSk7CkBAIC0yMzksNyArMjUwLDcgQEAgdm9p
ZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogY29uc3QgSlNDOjpI
YXNoVGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SGFzaFRhYmxlJiBzdGF0aWNUYWJsZSk7CiAKLXZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiA9IDApOwordm9p
ZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9u
LCBDYWNoZWRTY3JpcHQqID0gbnVsbHB0cik7CiB2b2lkIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUqKTsKIAogLy8gQ29udmVydCBhIERPTSBpbXBsZW1lbnRhdGlvbiBleGNl
cHRpb24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNlcHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBz
dGF0ZS4KQEAgLTMyNSwyMiArMzM2LDIyIEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2Vx
dWVuY2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zCiB7CiAg
ICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFv
YmplY3QpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKCpleGVjKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCiAgICAgSlNDOjpKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAobGVuZ3RoVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5j
ZSIpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3Io
KmV4ZWMpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBsZW5ndGggPSBs
ZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBvYmplY3Q7CiB9CkBAIC0zNjQsMzEgKzM3NSwyNCBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgcmV0dXJuIHZpZXctPndyYXAoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VD4gcHRy
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRy
PFQ+IHB0cikKIHsKICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQo
KSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBWZWN0b3I8VD4mIHZlY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCiB7Ci0gICAgSlNDOjpKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNpemUoKSk7Ci0K
KyAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxs
cHRyLCB2ZWN0b3Iuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvci5z
aXplKCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCB2ZWN0b3JbaV0pKTsKLQogICAgIHJldHVybiBhcnJheTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8VD4+JiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8VD4+JiB2ZWN0b3IpCiB7Ci0gICAgSlND
OjpKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNp
emUoKSk7Ci0KKyAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBudWxscHRyLCB2ZWN0b3Iuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMs
IGksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB2ZWN0b3JbaV0uZ2V0KCkpKTsKLQogICAgIHJl
dHVybiBhcnJheTsKIH0KIApAQCAtMzk3LDQ5ICs0MDEsNDAgQEAgaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdmFsdWUpOwogfQogCi10ZW1w
bGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzIHsKLSAgICBzdGF0aWMgaW5saW5l
IEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFQmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEpTVmFsdWVUcmFpdHMgeworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgYXJy
YXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBUJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgV1RGOjpnZXRQdHIodmFsdWUpKTsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgSlNWYWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICBzdGF0aWMgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVU
cmFpdHM8U3RyaW5nPiB7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB2YWx1ZSk7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IEpTVmFsdWVUcmFpdHM8ZmxvYXQ+IHsK
LSAgICBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IGZsb2F0JiB2YWx1ZSkKK3RlbXBsYXRlPD4g
c3RydWN0IEpTVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFy
cmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgZmxv
YXQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdW1iZXIodmFsdWUpOwog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzPHVuc2lnbmVkIGxv
bmc+IHsKLSAgICBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVl
KQordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czx1bnNpZ25lZCBsb25nPiB7CisgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEpTQzo6anNOdW1iZXIodmFsdWUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci1KU0M6OkpTVmFsdWUganNBcnJheShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgaXRlcmF0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IEpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiB7CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1
ZmZlciBsaXN0OwotICAgIHR5cGVuYW1lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGl0ZXJhdG9yLmVuZCgpOwotICAgIHR5cGVkZWYgSlNWYWx1ZVRyYWl0
czxUPiBUcmFpdHNUeXBlOwotCi0gICAgZm9yICh0eXBlbmFtZSBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikKLSAgICAgICAgbGlzdC5hcHBlbmQoVHJhaXRzVHlwZTo6YXJyYXlKU1ZhbHVl
KGV4ZWMsIGdsb2JhbE9iamVjdCwgKml0ZXIpKTsKLQotICAgIHJldHVybiBKU0M6OmNvbnN0cnVj
dEFycmF5KGV4ZWMsIDAsIGdsb2JhbE9iamVjdCwgbGlzdCk7CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogdmVjdG9yKQorICAgICAgICBsaXN0LmFwcGVuZChKU1ZhbHVlVHJhaXRzPFQ+OjphcnJh
eUpTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0LCBlbGVtZW50KSk7CisgICAgcmV0dXJuIEpTQzo6
Y29uc3RydWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKIH0KIAog
SlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwpAQCAtNDQ4LDcgKzQ0Myw3IEBAIGlubGluZSBQ
YXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0b0FycmF5QnVmZmVyVmlldyhKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyogd3JhcHBlciA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOwogICAgIGlm
ICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CiB9CiAKQEAgLTQ2MiwxMCArNDU3LDkgQEAgaW5s
aW5lIFBhc3NSZWZQdHI8SlNDOjpVaW50MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFs
dWUgdmFsdWUpIHsgcmV0dXJuIEoKIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5
PiB0b0Zsb2F0MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRp
dmVUeXBlZFZpZXc8SlNDOjpGbG9hdDMyQWRhcHRvcj4odmFsdWUpOyB9CiBpbmxpbmUgUGFzc1Jl
ZlB0cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVl
KSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6RmxvYXQ2NEFkYXB0b3I+KHZh
bHVlKTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7CiAKLXRlbXBsYXRl
PD4KLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKK3RlbXBsYXRlPD4gc3RydWN0
IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRp
dmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmlu
ZyYgaW5kZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC00NzMsOCArNDY3LDcgQEAgc3RydWN0IE5h
dGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVj
dCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZl
VmFsdWVUcmFpdHM8dW5zaWduZWQ+IHsKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCYg
aW5kZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpCkBA
IC00ODgsOCArNDgxLDcgQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewogICAgIHN0YXRp
YyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIGpzVmFsdWUsIGZsb2F0JiBpbmRleGVkVmFsdWUpCiAgICAgewogICAgICAgICBpbmRleGVk
VmFsdWUgPSBqc1ZhbHVlLnRvRmxvYXQoZXhlYyk7CkBAIC00OTcsOCArNDg5LDcgQEAgc3RydWN0
IE5hdGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEpTVD4KLVZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxS
ZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNWYWx1ZSB2YWx1ZSkpCiB7CiAgICAgaWYg
KCFpc0pTQXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPj4oKTsK
QEAgLTUxMiwxNSArNTAzLDE0IEBAIFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJy
YXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwKICAgICAgICAgaWYg
KGVsZW1lbnQuaW5oZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0LnVuY2hl
Y2tlZEFwcGVuZCgoKnRvVCkoZWxlbWVudCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgQXJyYXkg
ZWxlbWVudCB0eXBlIikpOworICAgICAgICAgICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3Io
KmV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4+KCk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1W
ZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSAwOwogICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CkBAIC01NDMsMTQgKzUzMywx
MyBAQCBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBU
PgotVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXpl
X3Qgc3RhcnRJbmRleCA9IDApCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRp
dmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBzdGFydEluZGV4ID0gMCkK
IHsKICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIEFTU0VS
VChzdGFydEluZGV4IDw9IGxlbmd0aCk7CiAKICAgICBWZWN0b3I8VD4gcmVzdWx0OwotICAgIHJl
c3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgcmVzdWx0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CiAgICAgdHlwZWRlZiBOYXRpdmVW
YWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5k
ZXg7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtNjAxLDQxICs1OTAsMjIgQEAgaW5saW5lIEF0b21p
Y1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXA+Ci1pbmxpbmUgY29uc3QgSlNDOjpI
YXNoVGFibGVWYWx1ZSogZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQordGVtcGxh
dGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBn
ZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgY29uc3QgSlNDOjpIYXNo
VGFibGUqIHRhYmxlID0gVGhpc0ltcDo6aW5mbygpLT5wcm9wSGFzaFRhYmxlKGV4ZWMpOworICAg
IGNvbnN0IEpTQzo6SGFzaFRhYmxlKiB0YWJsZSA9IERPTUNsYXNzOjppbmZvKCktPnByb3BIYXNo
VGFibGUoZXhlYyk7CiAgICAgaWYgKCF0YWJsZSkKLSAgICAgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8dHlwZW5hbWUgVGhpc0ltcDo6QmFzZT4oZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0
aG91dENhY2hpbmc8dHlwZW5hbWUgRE9NQ2xhc3M6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiAgICAgY29uc3QgSlNDOjpIYXNoVGFibGVWYWx1ZSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhl
YywgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQg
dG8gcGFyZW50Ci0gICAgICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRD
YWNoaW5nPHR5cGVuYW1lIFRoaXNJbXA6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPHR5cGVuYW1l
IERPTUNsYXNzOjpCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBlbnRyeTsK
IH0KIAotdGVtcGxhdGUgPD4KLWlubGluZSBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBnZXRT
dGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPEpTRE9NV3JhcHBlcj4oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSkKK3RlbXBsYXRlPD4gaW5saW5lIGNvbnN0IEpTQzo6
SGFzaFRhYmxlVmFsdWUqIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8SlNE
T01XcmFwcGVyPihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y2xhc3MgSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uIHsKLSAgICB0eXBlZGVmIGNoYXIgWWVz
VHlwZTsKLSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAg
IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBkZWNsdHlwZShzdGF0
aWNfY2FzdDxVKj4obnVsbHB0ciktPm1lbW9yeUNvc3QoKSwgWWVzVHlwZSgpKSB0ZXN0KGludCk7
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBOb1R5cGUgdGVzdCguLi4p
OwotCi1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YodGVzdDxU
PigwKSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQogZW51bSBTZWN1cml0eVJlcG9ydGluZ09w
dGlvbiB7CiAgICAgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yLAogICAgIFJlcG9ydFNlY3VyaXR5
RXJyb3IsCkBAIC02NDgsMTAgKzYxOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSosIFNlY3VyaXR5UmVw
b3J0aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcik7CiB9OwogICAgIAotICAgIAotI2Rl
ZmluZSBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoLi4uKSBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmdJbnRlcm5hbChfX1ZBX0FSR1NfXywgKGNvbnN0IGNoYXIqKW51bGxwdHIp
Ci1TdHJpbmcgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50ZXJuYWwoY29uc3QgY2hh
ciosIC4uLik7Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU0RP
TUJpbmRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCmluZGV4IDAyMDFlYjk5YjM0YjYyNmY2YjA4MTBlYjhhZjY2ZjUxY2Y2OTM2OTIuLjFjYzU2
OGQ0ZThiNWU5NjgyOTU3MzA2NzY4N2YwMDVlMzViMmIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTMyLDggKzMyLDggQEAKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLU9CSkNfQ0xBU1Mg
V2ViU2NyaXB0T2JqZWN0OwogT0JKQ19DTEFTUyBKU0NvbnRleHQ7CitPQkpDX0NMQVNTIFdlYlNj
cmlwdE9iamVjdDsKICNlbmRpZgogCiBzdHJ1Y3QgTlBPYmplY3Q7CkBAIC01NCw4ICs1NCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQbHVn
SW5FbGVtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CitjbGFzcyBIVE1M
UGx1Z0luRWxlbWVudDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFdpZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMGMzNmJkYTVhZTNmNTQwZDhiNGQ0NjU2ZjI3
YWU3NDM3NDFmYWQ0Ni4uMDgyMDkyYTIxZDQ3YWE0MDE3ODU0ZjdhYzA0ZjU3MjBjMzZlMmRiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTIxNDUsMTkgKzIxNDUsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3QifSkg
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2Fz
dGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAu
ICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIn0gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihzbG90QmFzZSkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZyhcIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJyRu
YW1lJyBvbiBhIG5vbi0kaW50ZXJmYWNlTmFtZSBvYmplY3QuXCIpKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKFwiVGhlIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiLlwiLCBcIiRuYW1l
XCIsIFwiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBcIiwgXCIkaW50
ZXJmYWNlTmFtZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oc2xvdEJh
c2UpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VO
YW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZh
Y2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKTsKQEAg
LTIyNjcsNyArMjI2Miw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYg
JGlzTnVsbGFibGU7CiAKICAgICAgICAgICAgICAgICBteSAkY2FjaGVJbmRleCA9IDA7CkBAIC0y
MzA5LDcgKzIzMDMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0
cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgdG9KUyhleGVjLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqLmdldCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMjMzOSwxMiArMjMzMywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJl
c3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50
ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOworCiAgICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051
bGwpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIpOwogICAgICAgICAgICAgfQog
CkBAIC0yMzU4LDE1ICsyMzUzLDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2Jq
ZWN0In0pIHsKICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJqcyIg
LiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShi
YXNlVmFsdWUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3QifSkgeworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1
bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTtcbiIpOworICAgICAgICAgICAgfSBlbHNpZiAoQ29uc3RydWN0b3JTaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmpl
Y3QgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9i
amVjdCA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIo
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIikgaWYgQ29uc3RydWN0b3JTaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7
Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7XG4iKSBpZiAhQ29uc3RydWN0b3JTaG91
bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihiYXNl
VmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoIWRvbU9iamVjdClcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7CkBAIC0yNDQ0
LDkgKzI0NDIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1l
fSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CisKICAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFVOVVNFRF9QQVJBTShzaG91bGRU
aHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKGV4ZWMsIGluZGV4LCB2YWx1ZSk7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKQEAg
LTI0OTIsNyArMjQ5MCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYg
KCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7XG4iKTsKQEAgLTI1MDAsNyArMjQ5Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNz
TmFtZX0qIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGlu
dGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJUaGUgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIu
XCIsIFwiJG5hbWVcIiwgXCIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
IFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIFwiJGlu
dGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1
NDAsNyArMjUzNyw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKLQogICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CkBAIC0y
NTYxLDcgKzI1NTcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUo
JGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICF2YWx1ZS5pbmhlcml0
cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIlRoZSBcIiwgXCIkaW50ZXJmYWNlTmFtZVwi
LCBcIi5cIiwgXCIkbmFtZVwiLCBcIiBhdHRyaWJ1dGUgbXVzdCBhbiBpbnN0YW5jZSBvZiBcIiwg
XCIkYXJnVHlwZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKmV4ZWMsIFwiJGlu
dGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiRhcmdUeXBlXCIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI3MzUsNyArMjczMSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBl
ckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgbXkgJGRvbUZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJDYW4gb25seSBjYWxsIFwiLCBcIiRpbnRlcmZhY2VOYW1l
XCIsIFwiLlwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIiwgXCIgb24gaW5zdGFuY2VzIG9mIFwiLCBc
IiRpbnRlcmZhY2VOYW1lXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgXCIkaW50
ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpOwpA
QCAtMjgzOCwxMiArMjgzNCwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNv
ZGVkSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgICAgICBpZiAoJGNvbnN0YW50LT50eXBlIGVxICJET01TdHJpbmci
KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAk
e2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVl
IC4gIikpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIiAu
ICRjb25zdGFudC0+dmFsdWUgLiAiKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTMxNzksMjIgKzMxNzYsMTkgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4k
e2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CiAgICAgfQogICAgIAotICAgIAotICAgIG15
ICRwcmV0dHlGdW5jdGlvbk5hbWU7CisgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKICAgICBp
ZiAoISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwot
ICAgICAgICAkcHJldHR5RnVuY3Rpb25OYW1lID0gIlwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIs
IFwiJG5hbWVcIiI7CisgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAiXCIkbmFtZVwiIjsK
ICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEAkb3V0cHV0QXJyYXks
ICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiLCAkZnVuY3Rpb24pKTsKICAgICB9IGVs
c2UgewotICAgICAgICAkcHJldHR5RnVuY3Rpb25OYW1lID0gIlwidGhlIFwiLCBcIiRpbnRlcmZh
Y2VOYW1lXCIsIFwiIGNvbnN0cnVjdG9yXCIiOworICAgICAgICAkcXVvdGVkRnVuY3Rpb25OYW1l
ID0gIm51bGxwdHIiOwogICAgIH0KIAogICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUu
aCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAgICBt
eSAkYXJndW1lbnRJbmRleCA9IDA7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50
eXBlOwotICAgICAgICAkYXJndW1lbnRJbmRleCA9ICRhcmd1bWVudEluZGV4ICsgMTsKICAgICAg
ICAgIyBPcHRpb25hbCBhcmd1bWVudHMgd2l0aCBbT3B0aW9uYWxdIHNob3VsZCBnZW5lcmF0ZSBh
biBlYXJseSBjYWxsIHdpdGggZmV3ZXIgYXJndW1lbnRzLgogICAgICAgICAjIE9wdGlvbmFsIGFy
Z3VtZW50cyB3aXRoIFtPcHRpb25hbD0uLi5dIHNob3VsZCBub3QgZ2VuZXJhdGUgdGhlIGVhcmx5
IGNhbGwuCiAgICAgICAgICMgT3B0aW9uYWwgRGljdGlvbmFyeSBhcmd1bWVudHMgYWx3YXlzIGNv
bnNpZGVyZWQgdG8gaGF2ZSBkZWZhdWx0IG9mIGVtcHR5IGRpY3Rpb25hcnkuCkBAIC0zMjMzLDcg
KzMyMjcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KCRhcmdzSW5kZXgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHtcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBcIiwgXCIkYXJndW1lbnRJ
bmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRwcmV0dHlGdW5jdGlvbk5h
bWUsIFwiIG11c3QgYmUgYSBmdW5jdGlvblwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKmV4ZWMsICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFt
ZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2Fs
bGJhY2tDbGFzc05hbWV9PihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4
KSk7XG4iKTsKQEAgLTMyNDMsNyArMzIzNyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmICghZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBc
IiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRw
cmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgYSBmdW5jdGlvblwiKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRp
bnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9IGNyZWF0ZUZ1
bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihleGVjLCBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKQEAgLTMyNzEsNyArMzI2NSw3IEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFtZTtcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAkYXJn
c0luZGV4LCBjb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFl
eGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkp
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoXCJBcmd1bWVudCBcIiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIs
IFwiJykgdG8gXCIsICRwcmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgYSBmdW5jdGlvblwi
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgaSwgXCIkbmFtZVwiLCBcIiRp
bnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGFyZ1R5cGVcIik7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVu
ZCh0byRhcmdUeXBlKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikKICAgICAgICAgICAgIH0gZWxz
ZSB7CkBAIC0zMjk5LDEwICszMjkzLDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgJGVudW1zID0gJGVu
dW1zIC4gIiwgXFxcIiIgLiAkZW51bVZhbHVlIC4gIlxcXCIiOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2ggKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIp
OwotICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiQXJndW1l
bnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwgXCIgKCdcIiwgXCIkbmFtZVwiLCBcIicpIHRvIFwi
LCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBtdXN0IGJlIG9uZSBvZjogXCIsIFwiJGVudW1zXCIp
KTtcbiIpOworICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKmV4ZWMsICRhcmdzSW5kZXgsIFwiJG5hbWVc
IiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiRlbnVtc1wiKTtc
biIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVD
aGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQn
cyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGludGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBp
bmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVy
cm9yCkBAIC0zMzE0LDggKzMzMDcsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAog
ICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4
KSI7CiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRh
cmdUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+ICRhcmdzSW5kZXggJiYgISR7YXJnVmFsdWV9Lmlz
VW5kZWZpbmVkT3JOdWxsKCkgJiYgISR7YXJnVmFsdWV9LmluaGVyaXRzKEpTJHthcmdUeXBlfTo6
aW5mbygpKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwi
JG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBcIiwgXCIkYXJnVHlwZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHthcmdWYWx1ZX0uaXNVbmRlZmluZWRPck51
bGwoKSAmJiAhJHthcmdWYWx1ZX0uaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZvKCkpKVxuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKmV4ZWMsICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIk
aW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiRhcmdUeXBlXCIpO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC00NDc0LDcgKzQ0NjcsNyBA
QCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4
dCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICgh
Y29udGV4dClcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBc
IiR7aW50ZXJmYWNlTmFtZX0gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2
YWlsYWJsZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpl
eGVjLCBcIiR7aW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmICgkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKICAgICAgICAgICAgICAgICBw
dXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqY2FzdGVkVGhpcy0+ZG9jdW1lbnQoKSIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBlY2RiNDQ1MTQwOGM4MmVhN2FlOTIw
ZjBlODcxNTViOTllODA1YjhkLi43NzMzNGZiZjViNjM2ZjMyMTZmMGU5NTZlMjk5MjIwZTljYTI5
MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQ3LDI4ICsxNDcs
MjEgQEAgYm9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2
ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2V4Y2l0aW5nQXR0cicgb24gYSBub24tVGVzdEFjdGl2ZURPTU9iamVjdCBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICIu
IiwgImV4Y2l0aW5nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURP
TU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKICAg
ICB9CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEFj
dGl2ZURPTU9iamVjdCYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuZXhjaXRpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01P
YmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dEFjdGl2ZURPTU9iamVjdCogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkb21PYmpl
Y3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMTg3LDcgKzE4
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4iLCAiZXhjaXRpbmdGdW5jdGlvbiIsICIgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1
bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTIwNiw3ICsx
OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICIuIiwgInBvc3RNZXNzYWdlIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RBY3RpdmVET01PYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmluZm8oKSk7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGQyYjQ2MDM2NjU3OTQ4ODg5NDQ3
MzdjZTkzOTI4NjM0NWUzMGI4MjUuLjQ0YzQxNWQ5YjJmM2E0NTRhMGFiNGE2MjE2ZGRlODdiYzQ1
YjkxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTUzLDEw
ICsxNTMsOCBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMTczLDcgKzE3MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5j
dGlvbkFub3RoZXJGdW5jCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyIiwgIi4iLCAiYW5vdGhlckZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJhbm90aGVyRnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjppbmZvKCkpOwogICAgIFRlc3RDdXN0b21OYW1lZEdldHRlciYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyZDk2ZjZjYjBkZmYyYmVj
ODA1YzczMTFkYmZmYWYyNjdiNjU1ZDMxLi45YWQ5ZWVmZGJkYzhlOGZlMzYzMzhkYjBjYmZjY2Ri
NTdmMWViNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xODAs
MTYgKzE4MCwxMSBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogRW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xv
dEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2Vz
cyBwcm9wZXJ0eSAnYXR0cjEnIG9uIGEgbm9uLVRlc3RFdmVudENvbnN0cnVjdG9yIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICIu
IiwgImF0dHIxIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RFdmVudENvbnN0cnVjdG9yIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVj
dG9yIiwgImF0dHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTk5
LDI2ICsxOTQsMTkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIx
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xv
dEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2Vz
cyBwcm9wZXJ0eSAnYXR0cjInIG9uIGEgbm9uLVRlc3RFdmVudENvbnN0cnVjdG9yIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICIu
IiwgImF0dHIyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RFdmVudENvbnN0cnVjdG9yIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVj
dG9yIiwgImF0dHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwuYXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90
b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDk4
NjQzZjYyZmUyYjY0NTY2ZDllZWNmM2U2ZTFmNDdhOWVhYTVhYTcuLmZhM2JlZTc4MjkzNDYxYjk5
NzlmYjk4NmVkYmUyNWVjN2Q4MzE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAt
MTg0LDEwICsxODQsOCBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZQogICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwpAQCAtMjEzLDcgKzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBlCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RFdmVu
dFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIi4iLCAiaXRlbSIsICIgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0RXZlbnRUYXJnZXQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8o
KSk7CiAgICAgVGVzdEV2ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMjM0LDcgKzIzMiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkFkZEV2ZW50TGlzdGVuZXIoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEV2ZW50VGFyZ2V0Iiwg
Ii4iLCAiYWRkRXZlbnRMaXN0ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRU
YXJnZXQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
RXZlbnRUYXJnZXQiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgVGVz
dEV2ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlz
dGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTI0OSw3ICsyNDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25SZW1v
dmVFdmVudExpc3RlbgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEV2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RFdmVudFRhcmdldCIsICIuIiwg
InJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFy
Z2V0IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2
ZW50VGFyZ2V0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRl
c3RFdmVudFRhcmdldCYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxp
c3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC0yNjQsNyArMjYyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uRGlz
cGF0Y2hFdmVudChFeGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIs
ICJkaXNwYXRjaEV2ZW50IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdldCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRh
cmdldCIsICJkaXNwYXRjaEV2ZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKICAgICBUZXN0RXZlbnRUYXJn
ZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDFiZmNlNWNlMzc3Mjk1MDg0OTI0
YWViNThkZTBiNjczMDcxNmYwNTcuLjVlM2E2ZWIzMGU5NjFlZWJmNTc4N2U3YzE2ZmJjZjc5YTJm
YWM2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0xMzksMjYgKzEzOSwxOSBAQCBib29s
IEpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ25hbWUnIG9uIGEgbm9uLVRlc3RFeGNlcHRpb24gb2JqZWN0
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RFeGNlcHRpb24iLCAiLiIsICJu
YW1lIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RF
eGNlcHRpb24iKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEV4Y2VwdGlvbiIsICJuYW1lIik7
CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0RXhjZXB0aW9uJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihiYXNlVmFs
dWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAx
MzQ4NDVlYTRkYjE2OGIxNmNlNmFiNTAzMzhmMWRkZGMzMzU0YzNiLi5mOGZmYjY5YWFjNDUxMzFj
YmYxZDI4NDllMDA0ZWJkYTk5MGU3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCkBAIC0xMTksMTAgKzExOSw4IEBAIGJvb2wgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSoK
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihiYXNlVmFsdWUpOwog
ICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZGVkMWJkZmJmNzNmNGM4ZDE0NzMxYWVjZjRk
YTFmNzdjYTZlNTJkYi4uZDZjMGZlZTBiMGUyMzkzN2Q3OWVkMTUzMDZkZDBlYTIyZmY3ZDZkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RJbnRlcmZhYwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUZXN0SW50ZXJm
YWNlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpl
eGVjLCAiVGVzdEludGVyZmFjZSIpOwogICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3Qg
PSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoKmNvbnRleHQsIHN0cjEsIHN0cjIsIGVjKTsKICAgICBp
ZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTQxNiw3ICs0
MTYsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVu
dHNTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXRlKgogewogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoVGVzdEludGVyZmFjZTo6aW1wbGVt
ZW50c1N0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC00MjgsNyArNDI3LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEoKIHsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQzOSwxNiArNDM3LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVudHNTdHIxJyBv
biBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjEiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2Up
KQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIp
OwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIGltcGwuaW1wbGVtZW50c1N0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtNDYwLDE2ICs0NTMsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnaW1wbGVtZW50c1N0cjInIG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ug
b2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAi
LiIsICJpbXBsZW1lbnRzU3RyMiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5pbXBs
ZW1lbnRzU3RyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC00
ODEsMTQgKzQ2OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
U3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZQogRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdpbXBs
ZW1lbnRzU3RyMycgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNTdHIzIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZh
Y2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5pbXBsZW1lbnRzU3RyMyhleGVjKSk7CiB9CkBAIC00OTksMTYgKzQ4MywxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBzbG90QmFzZQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50c05vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdpbXBsZW1lbnRzTm9kZScgb24gYSBub24t
VGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNOb2RlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICB9
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNOb2RlKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01MjEsNyArNTAwLDYgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0
aWNSZWFkT25seUF0dHIoRXhlY1N0YXQKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC01MzMsNyArNTExLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywKIHsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTQ0LDE2ICs1MjEs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50
YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdXBwbGVtZW50YWxT
dHIxJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsU3RyMSIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxl
bWVudGFsU3RyMSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdElu
dGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0
cjEoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01NjUs
MTYgKzUzNywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxT
dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYQogRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBs
ZW1lbnRhbFN0cjInIG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIy
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRl
cmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxl
bWVudGFsU3RyMigmaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTU4NiwxNCArNTUzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnc3VwcGxlbWVudGFsU3RyMycgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1l
bnRhbFN0cjMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3Ry
MyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxTdHIzKGV4ZWMpKTsKIH0KQEAgLTYwNCwx
NiArNTY3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0
cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3VwcGxl
bWVudGFsTm9kZScgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE5vZGUi
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVy
ZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxOb2RlKCZpbXBsKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTYyMSwxMCArNTc5LDggQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmEKIAogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtNjU1LDcgKzYxMSw2IEBAIHZvaWQgSlNUZXN0SW50
ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCwKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBT
dHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjY4LDEw
ICs2MjMsOSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNTdHIyIiwgIiBzZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3Ry
MiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC02ODcsMTAgKzY0MSw5IEBAIHZvaWQgc2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqCiB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVt
ZW50c1N0cjMiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0cjMoZXhlYywgdmFsdWUpOwpAQCAtNzAy
LDEwICs2NTUsOSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNOb2RlIiwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
Tm9kZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC03MjEsNyArNjczLDYgQEAgdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxT
dGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03MzQs
MTAgKzY4NSw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50
YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplCiB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIyIiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVt
ZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTc1MywxMCArNzAzLDkgQEAgdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIu
IiwgInN1cHBsZW1lbnRhbFN0cjMiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRTdXBwbGVtZW50YWxTdHIzKGV4ZWMs
IHZhbHVlKTsKQEAgLTc2OCwxMCArNzE3LDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QKIHZv
aWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE5v
ZGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdElu
dGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNzk0LDcgKzc0
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJm
YWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhvZDEiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBU
ZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGltcGwuaW1wbGVt
ZW50c01ldGhvZDEoKTsKQEAgLTgwOSw3ICs3NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIo
RQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNNZXRob2Qy
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNN
ZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTgzOCw3
ICs3ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdElu
dGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNNZXRob2QzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QzIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbXBsZW1lbnRzTWV0aG9kMyhl
eGVjKSk7CiB9CkBAIC04NjAsNyArODA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxNZXRob2QxIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1l
dGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dEludGVyZmFjZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoJmlt
cGwpOwpAQCAtODc1LDcgKzgyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsTWV0aG9kMiIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2Qy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRl
cmZhY2U6OmluZm8oKSk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTkwNCw3ICs4NTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFj
ZSIsICIuIiwgInN1cHBsZW1lbnRhbE1ldGhvZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VwcGxlbWVudGFsTWV0aG9kMyhl
eGVjKSk7CiB9CkBAIC05MjMsMzMgKzg3MSwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRobwog
Ly8gQ29uc3RhbnQgZ2V0dGVycwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09O
U1RBTlQxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5U
MShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoMSkpOwogfQogCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFND
T05TVEFOVDIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RB
TlQyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcigyKSk7CiB9CiAKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVO
VEFMQ09OU1RBTlQxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFM
Q09OU1RBTlQxKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcigxKSk7CiB9CiAKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQ
UExFTUVOVEFMQ09OU1RBTlQyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExF
TUVOVEFMQ09OU1RBTlQyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcigyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA0ZmUwZGRhYjg0NDAwMTFiNjNjY2FkODY5NzViZGY4
YmM0MWZmM2RlLi44Yjg5NzA3Y2Q4OTZmOTNjYmEyYWRmYzRhNTY4MzQwNjhkNzI0N2M5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xMjYsMTAg
KzEyNiw4IEBAIGJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRv
bU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xNDYs
MTMgKzE0NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICIuIiwg
Im1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsK
ICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJn
dW1lbnQgIiwgIjEiLCAiICgnIiwgImxpc3RlbmVyIiwgIicpIHRvICIsICJUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciIsICIuIiwgIm1ldGhvZCIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAs
ICJsaXN0ZW5lciIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2QiKTsKICAg
ICBSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIgPSBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSks
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZChsaXN0ZW5lcik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBkMTNhNjU5MDE4NmJkMzc5MmE2N2Q5NzE3OGM3
NzZiODcxNGQ5YjRkLi44NmMzMjM3NmYzYTc0ODhjMzQ1OTU5MWZhMTk4MzFhNzIyMWYwMmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xNjYsMTAgKzE2Niw4IEBA
IGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4o
YmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggNTlkMzFjYmJiM2NlNTRhYjI4NmRkOGY4
NGQ0ODIxNDY3OTA4Yzc3MC4uYjA3MGVhZDhhMTVlMGM5NzIwNzhkOGU0Y2VmNTdkZmE3ODc0NGVj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcApAQCAtMTIzLDEwICsxMjMsOCBAQCBib29sIEpTVGVzdE5vZGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2Rl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7
CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCAxZmJlYTg1NWNjZGRkZTQ3MTgzYjU2ZjFhMDEwMTBiMWJhYzA1
NzEzLi44MWIzZDlmMWU4MDM0NGU1M2IwNjI5NGI1ZDI5MGJiMmY3MDBkMWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtMjI1LDcgKzIyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0
T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqCiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+
YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwg
IiAoJyIsICJ0ZXN0Q2FsbGJhY2siLCAiJykgdG8gIiwgInRoZSAiLCAiVGVzdE9iaiIsICIgY29u
c3RydWN0b3IiLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAidGVzdENhbGxiYWNrIiwgIlRl
c3RPYmoiLCBudWxscHRyKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sg
PSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0T2JqPiBv
YmplY3QgPSBUZXN0T2JqOjpjcmVhdGUodGVzdENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IG9iamVjdC5nZXQoKSkpKTsKQEAgLTEwMDksMTYgKzEwMDksMTEgQEAgYm9vbCBKU1Rlc3RPYmo6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdy
ZWFkT25seUxvbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVhZE9ubHlMb25nQXR0ciIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVhZE9ubHlMb25nQXR0
cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDI4LDE2ICsx
MDIzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWFkT25seVN0cmluZ0F0dHInIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJyZWFkT25seVN0cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5yZWFkT25seVN0cmluZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA0NywxNiArMTAzNywx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFk
T25seVRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0
IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVhZE9ubHlUZXN0T2JqQXR0cicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
InJlYWRPbmx5VGVzdE9iakF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihp
bXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTEwNjcsNyArMTA1Miw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwNzcsNyArMTA2MSw2IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0T2JqOjpzdGF0aWNTdHJpbmdBdHRyKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwODYsMTQgKzEw
NjksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ1Rlc3RTdWJPYmonIG9uIGEgbm9uLVRlc3RPYmog
b2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJU
ZXN0U3ViT2JqIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqIik7CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3Rv
cihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTEwMiwx
NCArMTA4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJP
YmooRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhcwogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ1Rlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmciLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAgIH0KICAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwo
KS5mcmFtZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTEyMywxNiArMTA5OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSgogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdlbnVtQXR0cicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
ImVudW1BdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
LmVudW1BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEx
NDIsMTYgKzExMTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1YKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYnl0ZUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJieXRlQXR0
ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTYxLDE2ICsxMTI2LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdvY3RldEF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJvY3RldEF0dHIiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0
ZXRBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5vY3RldEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTE4MCwxNiArMTE0MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
UwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc2hvcnRBdHRyJyBvbiBh
IG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAic2hvcnRBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0
ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
c2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEx
OTksMTYgKzExNTQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAndW5zaWduZWRTaG9ydEF0dHInIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJ1bnNpZ25lZFNob3J0QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjE4LDE2ICsxMTY4LDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2xv
bmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJsb25nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwubG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTIzNywxNiArMTE4MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVgogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbG9uZ0xvbmdBdHRyJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAibG9uZ0xvbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdM
b25nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwubG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTEyNTYsMTYgKzExOTYsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAndW5zaWduZWRMb25n
TG9uZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExv
bmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0x
Mjc1LDE2ICsxMjEwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9iaiBv
YmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0
cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICB9
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBp
bXBsLnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTI5NCwxNiArMTIyNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd0ZXN0T2JqQXR0cicgb24gYSBub24tVGVz
dE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgInRlc3RPYmpBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIi
KTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnRlc3RPYmpBdHRyKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzEzLDE2ICsxMjM4LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxP
YmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2Vz
cyBwcm9wZXJ0eSAnWE1MT2JqQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlhNTE9iakF0dHIiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiWE1MT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTEzMzIsMTYgKzEyNTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NyZWF0ZScgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgImNyZWF0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzUxLDE2ICsxMjY2LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0
IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkU3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
InJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzNzAsMTYgKzEyODAsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ3JlZmxlY3RlZEludGVncmFsQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZElu
dGVncmFsQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTEzODksMTYgKzEyOTQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXMKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIp
KTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRl
Z3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdy
YWxhdHRyQXR0cikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0x
NDA4LDE2ICsxMzA4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZEJvb2xlYW5BdHRy
JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDI3LDE2ICsxMzIyLDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAncmVmbGVjdGVkVVJMQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFVSTEF0
dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsK
ICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVy
bGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ0
NiwxNiArMTMzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZFN0cmluZ0F0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5mYXN0R2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ2NSwxNiArMTM1MCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFs
QXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50
SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTE0ODQsMTYgKzEzNjQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0xNTAzLDE2ICsxMzc4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVm
bGVjdGVkQ3VzdG9tVVJMQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0
dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3Rv
bVVSTEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTE1MjIsMTYgKzEzOTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAndHlwZWRBcnJheUF0
dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJ0eXBlZEFycmF5QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFy
cmF5QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC50eXBlZEFycmF5QXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTU0MSwxNCArMTQwNiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpU
eXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jbwog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTE1NjEsMTYgKzE0MjIsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0
IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlv
bigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTgwLDE0ICsx
NDM2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTYwMCwxNiArMTQ1
MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXBy
ZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MTksMTQg
KzE0NjYsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdjdXN0b21BdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY3VzdG9tQXR0
ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3RvbUF0dHIoZXhlYykpOwogfQpA
QCAtMTYzNSwxNCArMTQ3OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZSIpOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoZXhlYykpOwpAQCAtMTY1MywxNCArMTQ5MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNj
ZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZScgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNj
cmlwdENvbnRleHQpCkBAIC0xNjc0LDE0ICsxNTA5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIG9uIGEgbm9uLVRlc3RPYmog
b2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0xNjk0LDE0ICsxNTI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwog
ICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMTcxNywx
NCArMTU0NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZQogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUnIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlIik7CiAgICAgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQpAQCAtMTczOCwxNCArMTU2MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNzYxLDE0
ICsxNTgwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKQEAgLTE3
ODIsMTQgKzE1OTcsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWIKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKQEAgLTE4MDEsMTYgKzE2MTIsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHIxJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxB
dHRyMSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIp
OwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29u
ZGl0aW9uYWxBdHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xODIyLDE2ICsxNjI4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyMicgb24g
YSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg0MywxNiArMTY0NCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ2NvbmRpdGlvbmFsQXR0cjMnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIzIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25h
bEF0dHIzKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4NjQs
MTQgKzE2NjAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NvbmRpdGlvbmFsQXR0cjQn
IG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHI0IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0T2JqZWN0QTo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE4ODIsMTQgKzE2NzQsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ2NvbmRpdGlvbmFsQXR0cjUnIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25k
aXRpb25hbEF0dHI1IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHI1Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0
Qjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KQEAgLTE5MDAsMTQgKzE2ODgsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2Nv
bmRpdGlvbmFsQXR0cjYnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHI2IiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qzo6Z2V0Q29uc3RydWN0b3IoZXhl
Yy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE5MTcsMTYgKzE3
MDEsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNoZWRBdHRyaWJ1dGUxJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
Y2FjaGVkQXR0cmlidXRlMSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUxIik7CisgICAgfQogICAg
IGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUx
LmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTkzOSwxNiArMTcxOCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ2NhY2hlZEF0dHJpYnV0ZTInIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjYWNo
ZWRBdHRyaWJ1dGUyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTIiKTsKKyAgICB9CiAgICAgaWYg
KEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTIuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xOTYxLDE2ICsxNzM1LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdhbnlBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhbnlBdHRyaWJ1dGUiLCAi
IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKGltcGwuYW55QXR0cmlidXRlKCkuaGFzTm9WYWx1ZSgp
ID8ganNOdWxsKCkgOiBpbXBsLmFueUF0dHJpYnV0ZSgpLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTk4MCwxNCArMTc0OSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAnY29udGVudERvY3VtZW50JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29udGVudERvY3VtZW50Iiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImNvbnRlbnREb2N1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnRlbnREb2N1bWVudCIpOwogICAgIH0K
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgaW1wbC5jb250ZW50RG9j
dW1lbnQoKSkgPyB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgpKSkgOiBqc051bGwoKSk7CkBAIC0xOTk3LDE2ICsx
NzYyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdtdXRhYmxlUG9pbnQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJtdXRhYmxl
UG9pbnQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RP
YmosIFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2Jq
Ojp1cGRhdGVNdXRhYmxlUG9pbnQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMjAxNiwxNiArMTc3NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRh
YmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdpbW11dGFibGVQb2ludCcg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgImltbXV0YWJsZVBvaW50IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBv
aW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihT
VkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgp
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwMzUsMTYgKzE3
OTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY28KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alN0cmF3YmVycnkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdzdHJhd2JlcnJ5JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyYXdiZXJyeSIs
ICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgIH0KLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwNTQsMTYgKzE4MDQsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAnc3RyaWN0RmxvYXQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGbG9hdCIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJzdHJpY3RGbG9hdCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zdHJpY3RGbG9hdCgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDczLDE2ICsxODE4LDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J2Rlc2NyaXB0aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiZGVzY3JpcHRpb24iLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
ZGVzY3JpcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJkZXNjcmlwdGlvbiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA5MiwxNiArMTgzMiwxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdpZCcgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgImlkIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImlkIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaWQiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTIxMTEsMTYgKzE4NDYsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqSWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdoYXNoJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAiaGFzaCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJoYXNoIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuaGFz
aCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTMwLDE2ICsx
ODYwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjE0OSwxNiArMTg3NCwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZURvdWJsZUF0dHJpYnV0ZScgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgIm51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZURv
dWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjE3MSwx
NiArMTg5MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFibGVMb25nQXR0cmlidXRlJyBv
biBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0T2JqIiwgIi4iLCAibnVsbGFibGVMb25nQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFi
bGVMb25nQXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjE5Mywx
NiArMTkwOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhcwogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFibGVCb29sZWFuQXR0cmli
dXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmli
dXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxs
ID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpKTsKQEAgLTIyMTUsMTYgKzE5MjUsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3QK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxh
YmxlU3RyaW5nQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiKTsKKyAgICB9CiAg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1w
bC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsKQEAgLTIyMzcsMTYgKzE5NDIsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwotICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICB9CiAg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsKQEAgLTIyNTksMjIgKzE5NTksMTggQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5n
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdudWxsYWJsZVN0cmluZ1ZhbHVlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVT
dHJpbmdWYWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29s
IGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlU3RyaW5nVmFsdWUo
aXNOdWxsLCBlYykpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgaWYgKGlz
TnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKQEAgLTIyODIsMTYgKzE5NzgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJpYnV0ZScgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgImF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGUi
KTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLmF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0yMzAxLDI2ICsxOTkyLDE5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J2F0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cmlidXRl
V2l0aFJlc2VydmVkRW51bVR5cGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuYXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21P
YmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMjMzMCw3
ICsyMDE0LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGUKIHZvaWQgc2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZh
bHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzQxLDEwICsyMDI0LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU8KIHZv
aWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0yMzU1LDEwICsy
MDM3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJlbnVtQXR0ciIs
ICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZW51bUF0
dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjM3NCwxMCArMjA1NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqRW51
bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTCiB2b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAiYnl0ZUF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIzOTEsMTAgKzIw
NzEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKUwogdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJvY3RldEF0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDA4LDEwICsyMDg3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpP
Y3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5j
b2RlZEoKIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAic2hvcnRBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQyNSwx
MCArMjEwMyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKCiB2b2lkIHNldEpTVGVzdE9ialVu
c2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAidW5zaWduZWRTaG9ydEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0NDIsMTAg
KzIxMTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sCiB2b2lkIHNldEpTVGVzdE9iakxvbmdB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ0F0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI0NTksMTAgKzIxMzUsOSBAQCB2b2lkIHNldEpTVGVzdE9iakxv
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKUwogdm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJsb25nTG9uZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0yNDc2LDEwICsyMTUxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2QKIHZvaWQgc2V0SlNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMjQ5MywxMCArMjE2Nyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25n
TG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lk
IHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJzdHJpbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1MTAsMTAgKzIxODMs
OSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZAogdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInRlc3RPYmpBdHRy
IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0
T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTI3LDEwICsyMTk5LDkgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICov
LCBFbmNvZGUKIHZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlhNTE9iakF0dHIiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAt
MjU0NCwxMCArMjIxNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVz
dE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNy
ZWF0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
Y3JlYXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1NjEsMTAgKzIyMzEsOSBAQCB2b2lkIHNldEpTVGVzdE9i
akNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYQogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
U3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTc4LDEwICsyMjQ3LDkgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8KIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkSW50ZWdyYWxB
dHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjU5NSwxMCArMjI2Myw5IEBAIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMjYxMiwxMCArMjI3OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzCiB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5B
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI2MjksMTAgKzIyOTUsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKgogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkVVJMQXR0ciIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yNjQ2LDEwICsyMzExLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEUK
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0
dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjY2MywxMCArMjMyNyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI2ODAsMTAgKzIz
NDMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yNjk3LDEwICsyMzU5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2IK
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1
c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjcxNCwxMCArMjM3NSw5IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
KiBiYXNlT2JqZWN0CiB2b2lkIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidHlwZWRBcnJheUF0dHIiLCAiIHNldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRy
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTI3MzEsMTAgKzIzOTEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Ywogdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzQ4LDEwICsyNDA3LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWMKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc2NywxMCAr
MjQyNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjCiB2b2lkIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3ODQsMTAgKzI0NDEsOSBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0yODAzLDEwICsyNDU5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQgc2V0SlNU
ZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgImN1c3RvbUF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXN0
ZWRUaGlzLT5zZXRDdXN0b21BdHRyKGV4ZWMsIHZhbHVlKTsKQEAgLTI4MTYsMTAgKzI0NzEsOSBA
QCB2b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZAogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0yODMzLDEwICsyNDg3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamUKIHZvaWQgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg1
MywxMCArMjUwNiw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIHZvaWQgc2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg3MCwxMCArMjUyMiw5IEBAIHZvaWQg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4OTAsMTAgKzI1
NDEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYgogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTEwLDEwICsyNTYwLDkgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXgKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
KiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjkzMCwxMCArMjU3OSw5IEBAIHZvaWQgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhFeGVjU3RhCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5NTAsMTAgKzI1OTgsOSBAQCB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlKEV4ZQogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTY4LDEwICsyNjE1
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmoKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRp
dGlvbmFsQXR0cjEiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjk4NywxMCArMjYzMyw5IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFCiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25h
bEF0dHIyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMwMDYsMTAgKzI2NTEsOSBAQCB2b2lk
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRQogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRy
MyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29u
ZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMDI1LDEwICsyNjY5LDkgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9u
YWxBdHRyNCIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zMDQxLDEwICsyNjg0LDkgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU8KIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29u
ZGl0aW9uYWxBdHRyNSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zMDU3LDEwICsyNjk5LDkg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU8KIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiY29uZGl0aW9uYWxBdHRyNiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zMDcyLDEwICsy
NzEzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU8KIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYW55QXR0
cmlidXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJhbnlBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzA4OSwxMCArMjcyOSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kCiB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm11dGFibGVQb2ludCIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTMxMDYsMTAgKzI3NDUsOSBAQCB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQ
b2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZAog
dm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImltbXV0YWJsZVBvaW50IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0zMTIzLDEwICsyNzYxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmMKIHZvaWQgc2V0SlNU
ZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgInN0cmF3YmVycnkiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzE0MCwxMCArMjc3Nyw5IEBAIHZv
aWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaWN0RmxvYXQiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTMxNTcsMTAgKzI3OTMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmlj
dEZsb2F0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZQogdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgImlkIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTc0LDEwICsyODA5LDkgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZQogdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlcGxhY2VhYmxlQXR0cmlidXRl
IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBs
YWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIG9iamVjdApAQCAtMzE4OCwxMCArMjgyMiw5IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
QEAgLTMyMDUsMTAgKzI4MzgsOSBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRK
U1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8q
IGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0T2JqIiwgIi4iLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0zMjIyLDEwICsyODU0LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8KIHZvaWQg
c2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzI0OCw3ICsyODc5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZvaWRNZXRob2QoRXhlY1N0YXRlKiBleGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ2b2lkTWV0aG9k
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGltcGwudm9pZE1ldGhv
ZCgpOwpAQCAtMzI2MCw3ICsyODkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykK
QEAgLTMyODMsNyArMjkxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2Jq
IiwgIi4iLCAiYnl0ZU1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRl
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsKQEAgLTMy
OTUsNyArMjkyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4i
LCAiYnl0ZU1ldGhvZFdpdGhBcmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5
dGVNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMzE4LDcg
KzI5NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBleAogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9j
dGV0TWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwub2N0ZXRNZXRob2QoKSk7CkBAIC0zMzMwLDcgKzI5
NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0
TWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMzUzLDcgKzI5ODQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIGV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImxvbmdNZXRo
b2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLmxvbmdNZXRob2QoKSk7CkBAIC0zMzY1LDcgKzI5OTYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9u
Z01ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImxvbmdNZXRob2RXaXRo
QXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kV2l0aEFyZ3Mi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAtMzM4OCw3ICszMDE5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvYmpNZXRob2QiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2JqTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwub2JqTWV0aG9k
KCkpKTsKQEAgLTM0MDAsNyArMzAzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAib2JqTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpA
QCAtMzQyMyw3ICszMDU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
QEAgLTM0NDAsNyArMzA3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShFCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2Jq
IiwgIi4iLCAibWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtMzQ1Nyw3ICszMDg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJtZXRob2RXaXRoRW51bUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBA
IC0zNDY2LDcgKzMwOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKGVudW1BcmcgIT0gIiIgJiYgZW51bUFyZyAhPSAi
RW51bVZhbHVlMSIgJiYgZW51bUFyZyAhPSAiRW51bVZhbHVlMiIgJiYgZW51bUFyZyAhPSAiRW51
bVZhbHVlMyIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImVudW1Bcmci
LCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoRW51bUFyZyIsICIgbXVzdCBi
ZSBvbmUgb2Y6ICIsICJcIlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51
bVZhbHVlM1wiIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqZXhlYywgMCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIsICJc
IlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIik7CiAg
ICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzQ3Niw3ICszMTA3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAt
MzQ5OSw3ICszMTMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJzZXJpYWxpemVkVmFsdWUiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2Vy
aWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM1MTYsNyArMzE0
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvcHRpb25z
T2JqZWN0IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9wdGlvbnNPYmplY3QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzUzNiw3ICszMTY3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb24oRXhlY1MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoRXhjZXB0aW9uIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtMzU1MCw3ICszMTgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUq
IGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21NZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiY3VzdG9tTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRob2QoZXhlYykpOwogfQpAQCAtMzU2MCw3ICszMTkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21N
ZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21NZXRo
b2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoZXhlYykpOwogfQpAQCAtMzU3MCw3ICszMjAxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFk
ZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJhZGRFdmVudExpc3Rl
bmVyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTM1ODUsNyArMzIxNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1v
dmVFdmVudExpc3RlbmVyKEV4ZWNTCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAicmVtb3ZlRXZlbnRMaXN0
ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZW1vdmVFdmVudExpc3RlbmVy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC0zNjAwLDcgKzMyMzEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRT
dGF0ZVZvaWQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRl
Vm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKGV4ZWMpOwpAQCAtMzYxMiw3ICszMjQzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3Rh
dGVPYmoiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2Jq
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlT2JqKGV4ZWMpKSk7CkBAIC0zNjI2LDcgKzMy
NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0zNjQw
LDcgKzMyNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
IndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
MzY1Nyw3ICszMjg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM2NzIsNyArMzMw
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwpAQCAtMzY4Nyw3ICszMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhj
ZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtMzcwNyw3ICszMzM4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
cyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3MjQsNyArMzM1NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFjayIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVj
LCAwKSk7CkBAIC0zNzM3LDcgKzMzNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogCkBAIC0zNzU5LDcgKzMzOTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZE9wdGlvbmFsQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTM3ODYsNyArMzQxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxB
cmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0z
ODIxLDcgKzM0NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKAogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogCkBAIC0zODQzLDcgKzM0NzQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzVW5kZWZpbmVkIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcmIHN0cihleGVjLT5hcmd1bWVudCgw
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CkBAIC0zODU4LDcgKzM0ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0
cmluZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc051bGxTdHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyKGFyZ3VtZW50T3JOdWxsKGV4ZWMsIDAp
LmlzRW1wdHkoKSA/IFN0cmluZygpIDogYXJndW1lbnRPck51bGwoZXhlYywgMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTM4NzMsMTMgKzM1MDQsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxs
YmFja0FyZyhFeGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAi
ICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aENh
bGxiYWNrQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4g
Y2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0
aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg5MCw3ICszNTIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0EKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5
IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCkBAIC0z
ODk5LDcgKzM1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjIiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRv
ICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tB
cmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIFJlZlB0cjxUZXN0
Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAg
ICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKG5vbkNhbGxiYWNr
LCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTM5MTAsMTMgKzM1NDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgUmVmUHRy
PFRlc3RDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkuaXNGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCci
LCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAg
ICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgfQog
ICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoY2FsbGJhY2spOwpAQCAt
MzkyOCw3ICszNTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWMKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJj
YWxsYmFjayIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgInN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqIiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
Iik7CiAgICAgICAgIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0
Q2FsbGJhY2s+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICB9CiAgICAg
VGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoY2FsbGJhY2sp
OwpAQCAtMzk0MCw3ICszNTcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWMKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEi
LCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAic3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmoiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRy
PFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rl
c3RDYWxsYmFjaz4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFRlc3RP
Ymo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjayk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM5NTIsNyArMzU4Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDEoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxNZXRob2Qx
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9k
MSgpKTsKQEAgLTM5NjcsNyArMzU5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoRXhlY1N0CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxNZXRob2QyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsKQEAg
LTM5ODIsNyArMzYxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoRXhlY1N0CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAiY29uZGl0aW9uYWxNZXRob2QzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKQEAgLTM5OTYsNyAr
MzYyNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTQwMTYsNyArMzY0Nyw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1l
dGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQwNDMsNyArMzY3NCw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDMoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKQEAgLTQwNjAsNyArMzY5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDQoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25s
eSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTQwNzcsMTMgKzM3MDgsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAx
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24o
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAiY2FsbGJhY2siLCAiJykg
dG8gIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVu
Y3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwog
ICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0
ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2spOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MDk0LDcgKzM3MjUsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRN
ZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTExLDcgKzM3NDIsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q3KAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTI4LDcgKzM3NTksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q4KAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCkBAIC00MTQ1LDcgKzM3NzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KAog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CkBAIC00MTYyLDcgKzM3OTMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTc5
LDcgKzM4MTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
Im92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MzA0LDcgKzM5MzUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNsYXNzTWV0
aG9kV2l0aENsYW1wIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNsYXNzTWV0aG9k
V2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTQzMzQsNyArMzk2NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0
aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CkBAIC00MzUxLDcgKzM5ODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjUwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBA
IC00MzcxLDcgKzQwMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpA
QCAtNDM5MSw3ICs0MDIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJnZXRTVkdEb2N1bWVudCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJn
ZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NDA4LDcgKzQwMzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDEoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbnZlcnQxIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTQ0MjUsNyArNDA1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29udmVydDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDQ0Miw3ICs0MDcz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjb252ZXJ0
NCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCkBAIC00NDU5LDcgKzQwOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDUoRXhlY1N0YXRlKiBl
eGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbnZlcnQ1IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQ0NzYs
NyArNDEwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAi
bXV0YWJsZVBvaW50RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibXV0
YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6
Y3JlYXRlKGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKQEAgLTQ0ODgsNyArNDExOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiaW1tdXRhYmxl
UG9pbnRGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpbW11dGFibGVQ
b2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0
ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKQEAgLTQ1MDAsNyArNDEzMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cmFuZ2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9yYW5nZSIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvcmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGltcGwuYmFuYW5hKCk7CkBAIC00NTEyLDcg
KzQxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0
cmljdEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTQ1MzgsMTQgKzQxNjksMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0
cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlv
bldpdGhTZXF1ZW5jZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5j
dGlvbldpdGhTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhl
YykpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFl
eGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgIm9iakFyZyIsICInKSB0byAiLCAiVGVzdE9iaiIs
ICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIiwgIiBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mICIsICJUZXN0T2JqIikpOworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZv
KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgMCwgIm9i
akFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoi
KTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1NjMsMTQgKzQxOTQsMTQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmlj
dEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbldp
dGhBcnJheSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldp
dGhBcnJheSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAw
ICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1
bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1l
bnQgIiwgIjEiLCAiICgnIiwgIm9iakFyZyIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgInN0
cmljdEZ1bmN0aW9uV2l0aEFycmF5IiwgIiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICIsICJUZXN0
T2JqIikpOworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAm
JiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKQorICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgMCwgIm9iakFyZyIsICJUZXN0
T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5IiwgIlRlc3RPYmoiKTsKICAgICBUZXN0T2Jq
KiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTQ1ODgsNyArNDIxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChF
eGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0T2JqIiwgIi4iLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiLCAiIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQpAQCAtNDYwOCw3ICs0MjM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4
ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCkBAIC00NjI4LDcgKzQyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNT
dAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY05vZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQpAQCAtNDYzOSw3ICs0MjcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3QKICAg
ICBWZWN0b3I8Tm9kZSo+IHRhaWw7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQgPSBl
eGVjLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmICghZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5oZXJpdHMoSlNOb2RlOjppbmZvKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIsICIgKCciLCAidGFpbCIsICInKSB0byAiLCAiVGVz
dE9iaiIsICIuIiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKmV4ZWMsIGksICJ0
YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKICAgICAgICAg
dGFpbC5hcHBlbmQodG9Ob2RlKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAgfQog
ICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKGhlYWQsIHRhaWwpOwpAQCAtNDY1MSw3ICs0Mjgy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFueShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiYW55IiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFueSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIp
CkBAIC00NjgwLDQ2ICs0MzExLDM5IEBAIHZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAvLyBDb25zdGFudCBnZXR0ZXJzCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTkRJVElP
TkFMX0NPTlNUKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09ORElUSU9OQUxfQ09OU1QoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KDApKTsKIH0KIAogI2VuZGlmCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8w
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMChFeGVjU3RhdGUqLCBKU09i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ09OU1RfVkFMVUVfMShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDT05TVF9WQUxVRV8yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMihF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfNChFeGVjU3RhdGUqLCBKU09iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoNCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV84KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q09OU1RfVkFMVUVfOChFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoOCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05T
VF9WQUxVRV85KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfOShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEp
KTsKIH0KIApAQCAtNDcyOCwzOSArNDM1MiwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
T05TVF9WQUxVRV8xMChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCJt
eSBjb25zdGFudCBzdHJpbmciKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05T
VF9WQUxVRV8xMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzExKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigw
eGZmZmZmZmZmKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTIoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDB4MDEpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMFgyMCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xNChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNU
X1ZBTFVFXzE0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcigweDFhYmMpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09O
U1RfSkFWQVNDUklQVChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKDE1KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRvbmx5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVhZG9ubHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGMzODA5MDdmMDJjZjYzOTc5MmJj
OGU4OWY5OTJlNzBmYzAzMDQwZjYuLmQ4Y2E3NGU4NTgxYzQ3YzNkYjBjMWE5YTliYzZmYjc1ZDJh
OGE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTE5NCwxMCArMTk0LDggQEAgYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihiYXNlVmFsdWUpOwog
ICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKaW5kZXggN2ZkMzM0ZjZlZGM1OGRkMjNmNjljY2FmNDc1NzA4ZTMzNmY1MzFhNC4u
ZmUzOTAyNDI5NzFhMDEzNzliNzE1MWVhMjAzYjU0YzI4YTZlZjIyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTE1
MCwxNiArMTUwLDExIEBAIGJvb2wgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xv
dEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2Vz
cyBwcm9wZXJ0eSAndmFsdWUnIG9uIGEgbm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJ2YWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZh
bHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gaW1wbC52YWx1ZSgpID8gaW1wbC52YWx1ZSgpLT5kZXNlcmlhbGl6ZShl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjksMTYgKzE2NCwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZQogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3Jl
YWRvbmx5VmFsdWUnIG9uIGEgbm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ug
b2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJyZWFkb25seVZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5yZWFkb25seVZhbHVlKCkgPyBp
bXBsLnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTg4LDE2ICsxNzgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY2FjaGVkVmFsdWUnIG9uIGEgbm9uLVRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJj
YWNoZWRWYWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRW
YWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7CiAgICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNh
c3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yMTAsMTYgKzE5NSwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3BvcnRzJyBv
biBhIG5vbi1UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIiwgIi4iLCAicG9ydHMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIpKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
cG9ydHMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJy
YXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjI5LDE2ICsyMDksMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdjYWNoZWRSZWFkb25seVZhbHVlJyBvbiBhIG5vbi1UZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAiY2FjaGVkUmVhZG9ubHlW
YWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25s
eVZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIp
OwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVk
VmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDgs
MTAgKzIyMyw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlCiB9CiAKIAotRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFz
ZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oYmFzZVZh
bHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CkBAIC0yNjEsMTAgKzIzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywKIHZv
aWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIs
ICJ2YWx1ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
dmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc4LDEwICsy
NTAsOSBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qCiB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAiY2FjaGVkVmFsdWUiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CmluZGV4IGY3ZmI0NjM5NzMzYjg5NzcwNTQ2Mjk3N2E0ZTk3ZDk4MTI5NTVhODguLjQ4NTgxMWU2
MDdmZDg2YjMyNGQxOGU3MWMzNmI2YWUyYWYwYjExZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApA
QCAtODAsNyArODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKAogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjIiLCAiICgnIiwgInRlc3RDYWxsYmFjayIsICIn
KSB0byAiLCAidGhlICIsICJUZXN0VHlwZWRlZnMiLCAiIGNvbnN0cnVjdG9yIiwgIiBtdXN0IGJl
IGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqZXhlYywgMSwgInRlc3RDYWxsYmFjayIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRy
KTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0VHlwZWRlZnM+IG9iamVjdCA9IFRl
c3RUeXBlZGVmczo6Y3JlYXRlKGhlbGxvLCB0ZXN0Q2FsbGJhY2spOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgb2JqZWN0LmdldCgpKSkpOwpAQCAtMjUzLDE2ICsyNTMsMTEgQEAgYm9vbCBKU1Rlc3RUeXBl
ZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNpZ25lZExvbmdMb25nQXR0cicgb24gYSBub24tVGVz
dFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlw
ZWRlZnMiLCAiLiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBl
ZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIi
KTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMjcyLDE2ICsyNjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRl
ZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG8KIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90
eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0
IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlJyBvbiBh
IG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RUeXBlZGVmcyIsICIuIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVk
ZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFs
aXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI5MSwxNCArMjgxLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0
cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRl
ZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ1Rlc3RTdWJPYmonIG9uIGEgbm9u
LVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiVGVzdFN1Yk9iaiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJUZXN0U3ViT2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMzA3LDE0ICsyOTMsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2wKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZz
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXBy
ZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhdHRyV2l0aEdldHRlckV4Y2VwdGlv
bicgb24gYSBub24tVGVzdFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzI3
LDE2ICszMDksMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0zNDYsMTQgKzMyMywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBl
ZGVmcyBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZz
IiwgIi4iLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTM2Niwy
NiArMzM5LDE5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBv
YmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4i
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21P
YmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMzk1LDEw
ICszNjEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRQogdm9pZCBzZXRKU1Rlc3RUeXBlZGVm
c1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25l
ZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVm
cyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQxMiwxMCArMzc3LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmoKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxp
emVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
LywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
VHlwZWRlZnMiLCAiLiIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiLCAiIHNldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC00MjksMTAgKzM5
Myw5IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlw
ZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC00NDYsMTAgKzQwOSw5IEBAIHZv
aWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlCiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlw
ZWRlZnMiLCAiLiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNDY1LDEwICs0MjcsOSBAQCB2b2lkIHNldEpT
VGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZQogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVk
ZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQ4MiwxMCArNDQzLDkgQEAg
dm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8KIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC01MDgsNyAr
NDY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIGV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRl
ZnMiLCAiLiIsICJmdW5jIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJmdW5jIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAKQEAgLTUzMCw3ICs0OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInNldFNoYWRvdyIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAg
ICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC01NzEsNyArNTMxLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNl
cXVlbmNlQXIKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJtZXRob2RXaXRoU2Vx
dWVuY2VBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpA
QCAtNTg4LDcgKzU0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJyYXlBcmcoRXhlCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdFR5cGVkZWZzIiwgIi4iLCAibnVsbGFibGVBcnJheUFyZyIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJheUFyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAg
ICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNjA1LDcgKzU2NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xh
bXAoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiZnVuY1dpdGhDbGFt
cCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFt
cCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlw
ZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNjQyLDcgKzYwMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3RpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwg
Ii4iLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAg
VGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbigpKSkpOwpAQCAtNjU0LDcgKzYxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24o
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIs
ICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5j
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNjc0LDcgKzYz
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZz
IiwgIi4iLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rpb24yIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCkBAIC02OTQsNyArNjU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5j
ZVRoYXQKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJjYWxsV2l0aFNlcXVlbmNl
VGhhdFJlcXVpcmVzSW5jbHVkZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRl
ZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwog
ICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTcxMSw3ICs2NzEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
RXhjZXB0aW9uKAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgIm1ldGhvZFdpdGhF
eGNlcHRpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhv
ZFdpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CmluZGV4IDJjZDlhYzFkMTc5NTIzOGM5ZGY2NTJhZWUzMTRjMWUxZDBmYmIxYTkuLjg4MzI0Zjg4
YjBkNzY0NDYxZDQ5ODBiMGRiOGRhMTZhMjIwOTFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTI4
LDI2ICsxMjgsMTkgQEAgYm9vbCBKU2F0dHJpYnV0ZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKIEVuY29kZWRKU1ZhbHVlIGpz
YXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTYXR0cmlidXRl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1
dGVQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWFkb25seScgb24gYSBub24tYXR0cmlidXRl
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJhdHRyaWJ1dGUiLCAiLiIs
ICJyZWFkb25seSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsK
ICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGF0dHJpYnV0ZSYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIGltcGwucmVhZG9ubHkoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTYXR0cmlidXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRv
bU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKaW5kZXggY2QxZjY3Y2I3OWFhODZkODdiOGZhZjJkNDBkNmRlMTQ1Y2ZkOTA5NC4uZDQ0MzA4
YWRmNGJkMzgxMDZmODViZTQ5N2M2MTE3MjhmNGM5NjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApAQCAtMTE5
LDEwICsxMTksOCBAQCBib29sIEpTcmVhZG9ubHk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNyZWFkb25seVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228709</attachid>
            <date>2014-04-06 17:19:41 -0700</date>
            <delta_ts>2014-04-06 18:19:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131285-20140406171924.patch</filename>
            <type>text/plain</type>
            <size>328012</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIwMmU5N2VmYWI4MDFi
ZDBlNzk4YWVjNThmNDYyMjZhOGNkNmE4OC4uZDdjYjYzMmI5OWI5N2Y2ZjlhMmViYjBjMjhlNzc0
YmYzYmQwZDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY2IEBACiAyMDE0LTA0LTA2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIHNvbWUgYmluZGluZ3Mg
aW1wcm92ZW1lbnRzLCB3aXRoIHNtYWxsZXIgY29kZSBzaXplIGZvciBlcnJvciBtZXNzYWdlIGdl
bmVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IFJlbW92ZWQgZXhwb3J0IG9mIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZ0ludGVybmFsLgorICAgICAgICBOb3Qgc3VyZSB3aHkgaXQgbmVlZGVkIHRvIGJl
IGV4cG9ydGVkLCBidXQgaW4gYW55IGNhc2UgaXQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd1R5cGVFcnJvcik6IEFkZGVkLiBIZWxwZXIgdG8gYXZvaWQgcmVwZWF0aW5n
IHRocm93Vk1FcnJvci9jcmVhdGVUeXBlRXJyb3IuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRB
cmd1bWVudE11c3RCZSk6IEFkZGVkLiBIZWxwZXIgZm9yIGJ1aWxkaW5nIHVwIGFyZ3VtZW50IGVy
cm9yIHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IpOiBBZGRlZC4gRm9yIGJpbmRpbmdzIHRvIHVzZS4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3RydWN0
b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93R2V0dGVyVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlcXVl
bmNlVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NldHRlclR5cGVF
cnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dUaGlzVHlwZUVycm9yKTogRGl0
dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkZWQgZGVjbGFy
YXRpb25zIGZvciBuZXcgZnVuY3Rpb25zLiBSZW1vdmVkIGZvcndhcmQKKyAgICAgICAgZGVjbGFy
YXRpb25zIGZvciB0aGluZ3Mgbm90IHVzZWQgaW4gdGhpcyBmaWxlLiBVc2UgbnVsbHB0ciBpbnN0
ZWFkIG9mIDAuIEZvcm1hdAorICAgICAgICB0ZW1wbGF0ZXMgY29uc2lzdGVudGx5LiBVc2UgYSBi
ZXR0ZXIgZm9yIGxvb3AgaW4gdGhlIGpzQXJyYXkgZnVuY3Rpb24uIFJlbW92ZWQKKyAgICAgICAg
dW51c2VkIEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbiwgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nLCBhbmQKKyAgICAgICAgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50
ZXJuYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6IEZp
eGVkIGEgaGFuZC13cml0dGVuIGJpbmRpbmcgdGhhdCB3YXMgdXNpbmcKKyAgICAgICAgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nIHRvIG1ha2UgYSBzdHJpbmcuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6IFVwZGF0ZWQgZm9yd2FyZCBkZWNsYXJhdGlv
bnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBDdXQgZG93biBvbiB1c2Ugb2YgVU5VU0VE
X1BBUkFNLiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgZm9yIGVycm9ycywga2VlcGlu
ZyB0aGUgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8gYSBtaW5pbXVtLgorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWZpbml0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoKKyAgICAgICAgVXBkYXRlZCBleHBl
Y3RlZCByZXN1bHRzIGZvciBjaGFuZ2VzIGFib3ZlLgorCisyMDE0LTA0LTA2ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXdvcmsgQ1NTIGNhbGMgbG9naWMsIGZp
eGluZyBzb21lIHJlZmVyZW5jZSBjb3VudCBtaXN0YWtlcyBpbiBMZW5ndGgKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTI4MAogICAgICAgICByZGFy
Oi8vcHJvYmxlbS8xNjQwMDgyMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyN2E0ZmIzZWYwYWY2
YTdiMjdjZDBhMjQ1OWMwZTZiMzExYTQwNWMzLi44MzYxYjBkZmU5MWZiZWRkMzZiMmQ3OTJkOWVi
ZDRiM2U3Zjc3NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTAwMiw3ICsxMDAyLDYgQEAg
X19aTjdXZWJDb3JlMzNzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXNFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUzNnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFt
ZUVSS04zV1RGNlN0cmluZ0VTM18KIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRl
c1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNFdgogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3Bl
bmRDb3VudEUKLV9fWk43V2ViQ29yZTM4bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50
ZXJuYWxFUEtjegogX19aTjdXZWJDb3JlM1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmUz
VVJMQzFFTlNfMThQYXJzZWRVUkxTdHJpbmdUYWdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUzVVJMQzFFUDVOU1VSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKaW5kZXggNThiNzM4NjEyNTE0ZWNiYjIzNjI2NWMyNGZkZWRjY2I1OTY4ZDFlZi4uMDM5
NTVlZmYxZjFkYjAzZTdiYzU1YTJkYTNkYmFkZDkwMGM1NDVkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC01MjcsMTggKzUyNyw5NyBAQCBib29s
IEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBOb2RlKiB0YXJnZQogICAgIHJldHVybiB0YXJnZXQgJiYgY2FuQWNjZXNzRG9jdW1l
bnQoc3RhdGUsICZ0YXJnZXQtPmRvY3VtZW50KCkpOwogfQogICAgIAotU3RyaW5nIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsKGNvbnN0IGNoYXIqIGZpcnN0LCAuLi4pCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dWTUVycm9y
KCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7Cit9CisKK3N0
YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50TXVzdEJlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVu
c2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiQXJndW1lbnQgIik7CisgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
YXJndW1lbnRJbmRleCArIDEpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgnIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoYXJndW1lbnROYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIicpIHRvICIpOworICAgIGlmICghZnVuY3Rpb25OYW1lKSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgidGhlICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChpbnRlcmZhY2VO
YW1lKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29uc3RydWN0b3IiKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBidWlsZGVyLmFwcGVuZChpbnRlcmZhY2VOYW1lKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJy4nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25O
YW1lKTsKKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgbXVzdCBiZSAiKTsKK30K
KworSlNDOjpFbmNvZGVkSlNWYWx1ZSByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBh
dHRyaWJ1dGVOYW1lKQoreworICAgIGF1dG8mIGNvbnRleHQgPSAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJyIsIGF0dHJpYnV0ZU5hbWUsICInIG9uIGEgbm9uLSIsIGludGVyZmFj
ZU5hbWUsICIgb2JqZWN0LiIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVt
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25z
dCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgY29uc3QgY2hhciogc3RyID0gZmlyc3Q7
Ci0gICAgdmFfbGlzdCBsaXN0OwotICAgIHZhX3N0YXJ0KGxpc3QsIGZpcnN0KTsKLSAgICBkbyB7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cik7Ci0gICAgICAgIHN0ciA9IHZhX2FyZyhsaXN0
LCBjaGFyKik7Ci0gICAgfSB3aGlsZSAoc3RyKTsKLSAgICB2YV9lbmQobGlzdCk7Ci0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVy
LCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVu
Y3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm9uZSBvZjogIik7CisgICAg
YnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KLSAgICAKKworSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVy
LCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFt
ZSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50
TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOworICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CisgICAgYnVpbGRlci5hcHBlbmQoZXhw
ZWN0ZWRUeXBlKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1aWxkZXIudG9T
dHJpbmcoKSk7Cit9CisKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQoreworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiSW52YWxpZCBBcnJh
eSBlbGVtZW50IHR5cGUiKTsKK30KKwordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKK3sKKyAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0
cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAiLCBleHBlY3Rl
ZFR5cGUpKTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50
ZXJmYWNlTmFtZSkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBjb25mdXNpbmcgZXhjZXB0aW9u
IHdvcmRpbmcuIENhbiB3ZSByZXdvcmQgdG8gYmUgY2xlYXJlciBhbmQgbW9yZSBzcGVjaWZpYz8K
KyAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJnN0
YXRlLCBtYWtlU3RyaW5nKGludGVyZmFjZU5hbWUsICIgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBk
b2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKSk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRl
cmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQoreworICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywg
YXR0cmlidXRlTmFtZSwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgaW50ZXJmYWNlTmFtZSkpOworfQorCit2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UiKTsKK30KKwordm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpCit7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmco
IlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQoreworICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCBpbnRlcmZhY2VOYW1lLCAnLicsIGZ1bmN0aW9uTmFtZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
aW50ZXJmYWNlTmFtZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDcwNWI4ZDU0NmFjNjQ4N2Q1MGI4
ZTMxZGQ0OGVlOWMyNzMzYjU4MjIuLjQ4MzUwNDk5ZDY3N2EzNDY5ODczYWNmMTEwZmM2NWY1MWNm
NDZiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC01
NCwxMyArNTQsMTAgQEAgY2xhc3MgSGFzaEVudHJ5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERPTVN0cmluZ0xpc3Q7Ci0KIGNsYXNzIENhY2hlZFNjcmlwdDsKLWNsYXNzIERvY3Vt
ZW50OworY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1l
OwotY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIApAQCAtNjks
NiArNjYsMjAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIERPTVdpbmRvdyYgYWN0aXZl
RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEpT
Qzo6RXhlY1N0YXRlKik7CiAKK0pTQzo6RW5jb2RlZEpTVmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogYXR0cmlidXRlTmFtZSk7CisKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmKTsKK3ZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1
dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwordm9pZCB0aHJvd1NlcXVlbmNlVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Cit2b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSk7CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIq
IGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93
Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25z
dCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lKTsKKwogLy8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0cnVjdG9y
IG9iamVjdHMgaW4gdGhlIEpTQyBiaW5kaW5ncy4KIGNsYXNzIERPTUNvbnN0cnVjdG9yT2JqZWN0
IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsK
QEAgLTk3LDIwICsxMDgsMjAgQEAgaW5saW5lIEpTRE9NR2xvYmFsT2JqZWN0KiBkZXByZWNhdGVk
R2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4g
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVj
dHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpT
dHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdl
dENhY2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkK
ICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSksIFdy
YXBwZXJDbGFzczo6aW5mbygpKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzPiBp
bmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6
OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhl
IHdyb25nIGdsb2JhbCBvYmplY3QgZm9yIGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJl
LgorICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdyb25nLiBJdCB1c2VzIHRoZSB3cm9u
ZyBnbG9iYWwgb2JqZWN0IGZvciBjcmVhdGluZyB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZS4KICAg
ICByZXR1cm4gZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYy0+dm0oKSwgZGVwcmVj
YXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNz
IFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdldERPTVByb3RvdHlwZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NUHJvdG90eXBl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1
cmU8V3JhcHBlckNsYXNzPih2bSwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKIH0KQEAgLTEyNSwyMSArMTM2LDIxIEBA
IGlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBKU0M6
OkFycmF5QnVmZmVyKikKICAgICByZXR1cm4gJndvcmxkOwogfQogCi1pbmxpbmUgSlNET01XcmFw
cGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqKSB7IHJl
dHVybiAwOyB9CitpbmxpbmUgSlNET01XcmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCYsIHZvaWQqKSB7IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgYm9vbCBz
ZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBKU0RPTVdyYXBw
ZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQogaW5s
aW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQq
LCBKU0RPTVdyYXBwZXIqKSB7IHJldHVybiBmYWxzZTsgfQogCiBpbmxpbmUgSlNET01XcmFwcGVy
KiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFNjcmlwdFdy
YXBwYWJsZSogZG9tT2JqZWN0KQogewogICAgIGlmICghd29ybGQuaXNOb3JtYWwoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBkb21PYmpl
Y3QtPndyYXBwZXIoKTsKIH0KIAogaW5saW5lIEpTQzo6SlNBcnJheUJ1ZmZlciogZ2V0SW5saW5l
Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGJ1ZmZlci0+bV93cmFwcGVyLmdl
dCgpOwogfQogCkBAIC0xNzUsMTQgKzE4NiwxNCBAQCBpbmxpbmUgYm9vbCBjbGVhcklubGluZUNh
Y2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogZAog
ICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IERPTUNsYXNzKiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5l
IEpTQzo6SlNPYmplY3QqIGdldENhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBpZiAoSlNDOjpKU09iamVjdCogd3JhcHBlciA9
IGdldElubGluZUNhY2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIHJldHVybiB3b3JsZC5tX3dyYXBwZXJzLmdldChkb21PYmplY3QpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4g
aW5saW5lIHZvaWQgY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNz
KiBkb21PYmplY3QsIFdyYXBwZXJDbGFzcyogd3JhcHBlcikKK3RlbXBsYXRlPHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBlcihE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3Mq
IHdyYXBwZXIpCiB7CiAgICAgSlNDOjpXZWFrSGFuZGxlT3duZXIqIG93bmVyID0gd3JhcHBlck93
bmVyKHdvcmxkLCBkb21PYmplY3QpOwogICAgIHZvaWQqIGNvbnRleHQgPSB3cmFwcGVyQ29udGV4
dCh3b3JsZCwgZG9tT2JqZWN0KTsKQEAgLTE5MSw3ICsyMDIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgY2FjaGVXcmFw
cGVyKERPTQogICAgIHdlYWtBZGQod29ybGQubV93cmFwcGVycywgKHZvaWQqKWRvbU9iamVjdCwg
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+KHdyYXBwZXIsIG93bmVyLCBjb250ZXh0KSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxp
bmUgdm9pZCB1bmNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyog
ZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01D
bGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3Mq
IHdyYXBwZXIpCiB7CiAgICAgaWYgKGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9t
T2JqZWN0LCB3cmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk5LDcgKzIxMCw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUg
dm9pZCB1bmNhY2hlV3JhcHBlcihECiB9CiAKICNkZWZpbmUgQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgY2xhc3NOYW1lLCBvYmplY3QpIGNyZWF0ZVdyYXBwZXI8SlMjI2NsYXNzTmFt
ZT4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxjbGFzc05hbWUqPihvYmplY3QpKQotdGVtcGxh
dGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTRE9NV3JhcHBl
ciogY3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFz
cyogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAg
IEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIG5vZGUpKTsK
QEAgLTIwOCw3ICsyMTksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERP
TUNsYXNzPiBpbmxpbmUgSlNET01XcmFwcGVyKiBjcmVhdGVXcmFwcGVyKAogICAgIHJldHVybiB3
cmFwcGVyOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNz
PiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3JhcChKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQogewogICAgIGlmICghZG9t
T2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKQEAgLTIxNywxMyArMjI4LDEz
IEBAIHRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBK
U0M6OkpTVmFsdWUgd3JhcChKU0RPTUdsb2JhCiAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V3Jh
cHBlckNsYXNzPihnbG9iYWxPYmplY3QsIGRvbU9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNz
IFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgZ2V0RXhp
c3RpbmdXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBk
b21PYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNs
YXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGdldEV4aXN0aW5nV3JhcHBlcihKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQogewogICAgIEFTU0VSVChk
b21PYmplY3QpOwogICAgIHJldHVybiBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29y
bGQoKSwgZG9tT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFz
cyBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSBjcmVhdGVOZXdXcmFwcGVyKEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1Zh
bHVlIGNyZWF0ZU5ld1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9N
Q2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBBU1NFUlQoZG9tT2JqZWN0KTsKICAgICBBU1NFUlQo
IWdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKTsKQEAg
LTIzOSw3ICsyNTAsNyBAQCB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiBjb25zdCBKU0M6Okhhc2hUYWJsZSYgZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShK
U0M6OlZNJiwgY29uc3QgSlNDOjpIYXNoVGFibGUmIHN0YXRpY1RhYmxlKTsKIAotdm9pZCByZXBv
cnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBDYWNo
ZWRTY3JpcHQqID0gMCk7Cit2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogPSBudWxscHRyKTsKIHZvaWQgcmVw
b3J0Q3VycmVudEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogCiAvLyBDb252ZXJ0IGEgRE9N
IGltcGxlbWVudGF0aW9uIGV4Y2VwdGlvbiBjb2RlIGludG8gYSBKYXZhU2NyaXB0IGV4Y2VwdGlv
biBpbiB0aGUgZXhlY3V0aW9uIHN0YXRlLgpAQCAtMzI1LDIyICszMzYsMjIgQEAgaW5saW5lIEpT
Qzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlLCB1bnMKIHsKICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRP
YmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBKU0M6OkpTVmFsdWUgbGVuZ3RoVmFs
dWUgPSBvYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZh
bHVlIGlzIG5vdCBhIHNlcXVlbmNlIikpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdGhy
b3dTZXF1ZW5jZVR5cGVFcnJvcigqZXhlYyk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAogICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTM2NCwzMSArMzc1LDI0IEBAIGlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBnbG9iYWxP
YmplY3QpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjxUPiBwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFBhc3NSZWZQdHI8VD4gcHRyKQogewogICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8VD4mIHZlY3RvcikK
IHsKLSAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAw
LCB2ZWN0b3Iuc2l6ZSgpKTsKLQorICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIHZlY3Rvci5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgaSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHZlY3RvcltpXSkpOwotCiAg
ICAgcmV0dXJuIGFycmF5OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxUPj4mIHZlY3RvcikKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxUPj4m
IHZlY3RvcikKIHsKLSAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCAwLCB2ZWN0b3Iuc2l6ZSgpKTsKLQorICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIHZlY3Rvci5zaXplKCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHZlY3Rvcltp
XS5nZXQoKSkpOwotCiAgICAgcmV0dXJuIGFycmF5OwogfQogCkBAIC0zOTcsNDkgKzQwMSw0MCBA
QCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVj
LCB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IEpTVmFsdWVUcmFpdHMg
ewotICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVCYgdmFs
dWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0cyB7CisgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBXVEY6OmdldFB0cih2YWx1ZSkpOwog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzPFN0cmluZz4gewot
ICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czxTdHJpbmc+IHsKKyAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIHZhbHVlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSlNW
YWx1ZVRyYWl0czxmbG9hdD4gewotICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5
SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgZmxvYXQm
IHZhbHVlKQordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czxmbG9hdD4geworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBjb25zdCBmbG9hdCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gSlND
Ojpqc051bWJlcih2YWx1ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IEpTVmFs
dWVUcmFpdHM8dW5zaWduZWQgbG9uZz4gewotICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVl
IGFycmF5SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3Qg
dW5zaWduZWQgbG9uZyYgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPHVu
c2lnbmVkIGxvbmc+IHsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgdW5zaWduZWQgbG9uZyYgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpqc051bWJlcih2YWx1ZSk7CiAgICAgfQog
fTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUpTQzo6
SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBpdGVyYXRvcikK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVl
IGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKIHsKICAgICBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Ci0gICAgdHlwZW5hbWUgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaXRlcmF0b3IuZW5kKCk7Ci0gICAg
dHlwZWRlZiBKU1ZhbHVlVHJhaXRzPFQ+IFRyYWl0c1R5cGU7Ci0KLSAgICBmb3IgKHR5cGVuYW1l
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpdGVyYXRv
ci5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBsaXN0LmFwcGVuZChUcmFp
dHNUeXBlOjphcnJheUpTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0LCAqaXRlcikpOwotCi0gICAg
cmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgMCwgZ2xvYmFsT2JqZWN0LCBsaXN0KTsK
KyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiB2ZWN0b3IpCisgICAgICAgIGxpc3QuYXBwZW5kKEpT
VmFsdWVUcmFpdHM8VD46OmFycmF5SlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQp
KTsKKyAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3RBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxP
YmplY3QsIGxpc3QpOwogfQogCiBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CkBAIC00NDgs
NyArNDQzLDcgQEAgaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IHRvQXJy
YXlCdWZmZXJWaWV3KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU0M6OkpTQXJyYXlCdWZm
ZXJWaWV3KiB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXcqPih2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHdyYXBwZXItPmltcGwoKTsKIH0KIApAQCAt
NDYyLDEwICs0NTcsOSBAQCBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlVpbnQzMkFycmF5PiB0b1Vp
bnQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSgogaW5saW5lIFBhc3NSZWZQ
dHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkg
eyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2YWx1
ZSk7IH0KIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJh
eShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlND
OjpGbG9hdDY0QWRhcHRvcj4odmFsdWUpOyB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBO
YXRpdmVWYWx1ZVRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBOYXRpdmVWYWx1
ZVRyYWl0czsKIAotdGVtcGxhdGU8Pgotc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4g
ewordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgc3Rh
dGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCiAgICAgewogICAgICAgICBpbmRl
eGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTQ3Myw4
ICs0NjcsNyBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8Pgotc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewogICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUsIHVuc2lnbmVkJiBpbmRleGVkVmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIWpz
VmFsdWUuaXNOdW1iZXIoKSkKQEAgLTQ4OCw4ICs0ODEsNyBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVU
cmFpdHM8dW5zaWduZWQ+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTmF0aXZl
VmFsdWVUcmFpdHM8ZmxvYXQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
PGZsb2F0PiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKICAg
ICB7CiAgICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9GbG9hdChleGVjKTsKQEAgLTQ5
Nyw4ICs0ODksNyBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKICAgICB9CiB9
OwogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSlNUPgotVmVjdG9yPFJlZlB0cjxUPj4gdG9S
ZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBUKiAoKnRvVCkoSlNDOjpKU1ZhbHVlIHZhbHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEpTVD4gVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBUKiAoKnRvVCkoSlNDOjpKU1ZhbHVl
IHZhbHVlKSkKIHsKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBW
ZWN0b3I8UmVmUHRyPFQ+PigpOwpAQCAtNTEyLDE1ICs1MDMsMTQgQEAgVmVjdG9yPFJlZlB0cjxU
Pj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlLAogICAgICAgICBpZiAoZWxlbWVudC5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCgqdG9UKShlbGVtZW50KSk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CisgICAgICAgICAgICB0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcigqZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJl
ZlB0cjxUPj4oKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10
ZW1wbGF0ZSA8Y2xhc3MgVD4KLVZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8
VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CiAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkp
IHsKQEAgLTU0MywxNCArNTMzLDEzIEBAIFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1WZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBzdGFydEluZGV4ID0gMCkKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IHN0YXJ0SW5kZXggPSAwKQogewogICAgIHNpemVfdCBsZW5ndGggPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgQVNTRVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKIAogICAgIFZlY3Rv
cjxUPiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsK
KyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsK
ICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IFRyYWl0c1R5cGU7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC02MDEsNDEgKzU5
MCwyMiBAQCBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpT
Qzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcD4K
LWlubGluZSBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRy
eVdpdGhvdXRDYWNoaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIGNvbnN0IEpT
Qzo6SGFzaFRhYmxlVmFsdWUqIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmco
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBjb25zdCBKU0M6Okhhc2hUYWJsZSogdGFibGUgPSBUaGlzSW1wOjppbmZvKCktPnByb3BI
YXNoVGFibGUoZXhlYyk7CisgICAgY29uc3QgSlNDOjpIYXNoVGFibGUqIHRhYmxlID0gRE9NQ2xh
c3M6OmluZm8oKS0+cHJvcEhhc2hUYWJsZShleGVjKTsKICAgICBpZiAoIXRhYmxlKQotICAgICAg
ICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzx0eXBlbmFtZSBU
aGlzSW1wOjpCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzx0eXBlbmFtZSBET01DbGFzczo6QmFzZT4o
ZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBlbnRy
eSA9IHRhYmxlLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIC8v
IG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKLSAgICAgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8dHlwZW5hbWUgVGhpc0ltcDo6QmFzZT4oZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0
aG91dENhY2hpbmc8dHlwZW5hbWUgRE9NQ2xhc3M6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiAgICAgcmV0dXJuIGVudHJ5OwogfQogCi10ZW1wbGF0ZSA8PgotaW5saW5lIGNvbnN0IEpTQzo6
SGFzaFRhYmxlVmFsdWUqIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8SlNE
T01XcmFwcGVyPihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKQordGVtcGxhdGU8
PiBpbmxpbmUgY29uc3QgSlNDOjpIYXNoVGFibGVWYWx1ZSogZ2V0U3RhdGljVmFsdWVTbG90RW50
cnlXaXRob3V0Q2FjaGluZzxKU0RPTVdyYXBwZXI+KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb24gewot
ICAgIHR5cGVkZWYgY2hhciBZZXNUeXBlOwotICAgIHN0cnVjdCBOb1R5cGUgewotICAgICAgICBj
aGFyIHBhZGRpbmdbOF07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAg
c3RhdGljIGRlY2x0eXBlKHN0YXRpY19jYXN0PFUqPihudWxscHRyKS0+bWVtb3J5Q29zdCgpLCBZ
ZXNUeXBlKCkpIHRlc3QoaW50KTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3Rh
dGljIE5vVHlwZSB0ZXN0KC4uLik7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDApKSA9PSBzaXplb2YoWWVzVHlwZSk7Ci19OwotCiBlbnVt
IFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHsKICAgICBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3Is
CiAgICAgUmVwb3J0U2VjdXJpdHlFcnJvciwKQEAgLTY0OCwxMCArNjE4LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSos
IEZyYW1lKiwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKTsK
IH07CiAgICAgCi0gICAgCi0jZGVmaW5lIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygu
Li4pIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsKF9fVkFfQVJHU19fLCAo
Y29uc3QgY2hhciopbnVsbHB0cikKLVN0cmluZyBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmdJbnRlcm5hbChjb25zdCBjaGFyKiwgLi4uKTsKLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEpTRE9NQmluZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggZTUwNGRhZjE4YzUwZjc1N2M3NTJk
NDU0YzJhYjQ3OWZiOWI1ZWYwMy4uZWVjN2U4ODIzNDM2YjQxZWFkZGIxZjRiMDUyZGI2YTJlODVk
ZDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3Vz
dG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRV
c2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAyICgnc3VjY2Vzc0NhbGxiYWNr
JykiLCAiIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9u
IikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCAyICgnc3VjY2Vz
c0NhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCkBAIC02Myw3
ICs2Myw3IEBAIEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2s7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgyKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CiAgICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikuaXNGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSIsICIgdG8gTmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFjaycp
IHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICBlcnJv
ckNhbGxiYWNrID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXNP
YmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggMDIwMWViOTliMzRiNjI2ZjZiMDgxMGViOGFmNjZmNTFjZjY5MzY5Mi4uMWNjNTY4ZDRl
OGI1ZTk2ODI5NTczMDY3Njg3ZjAwNWUzNWIyYjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMzIsOCArMzIsOCBAQAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotT0JKQ19DTEFTUyBXZWJT
Y3JpcHRPYmplY3Q7CiBPQkpDX0NMQVNTIEpTQ29udGV4dDsKK09CSkNfQ0xBU1MgV2ViU2NyaXB0
T2JqZWN0OwogI2VuZGlmCiAKIHN0cnVjdCBOUE9iamVjdDsKQEAgLTU0LDggKzU0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFBsdWdJbkVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxEb2N1bWVudDsKK2NsYXNzIEhUTUxQbHVn
SW5FbGVtZW50OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgV2lkZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwYzM2YmRhNWFlM2Y1NDBkOGI0ZDQ2NTZmMjdhZTc0
Mzc0MWZhZDQ2Li4wODIwOTJhMjFkNDdhYTQwMTc4NTRmN2FjMDRmNTcyMGMzNmUyZGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjE0NSwxOSArMjE0NSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYyB8fCAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSog
Y2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRU
aGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKFwiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnJG5hbWUn
IG9uIGEgbm9uLSRpbnRlcmZhY2VOYW1lIG9iamVjdC5cIikpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIH1cbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoXCJUaGUgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIsIFwiJG5hbWVcIiwg
XCIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFwiLCBcIiRpbnRlcmZh
Y2VOYW1lXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihzbG90QmFzZSkp
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVc
IiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5h
bWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpOwpAQCAtMjI2
Nyw3ICsyMjYyLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKUyIg
LiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzaWYgKCEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJHZXR0ZXJSYWlzZXNFeGNlcHRpb24ifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlmICEkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkaXNO
dWxsYWJsZTsKIAogICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKQEAgLTIzMDks
NyArMjMwMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR0
eXBlPiBvYmogPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQoKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yMzM5LDEyICsyMzMzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZh
Y2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpO1xuIik7CisKICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAg
LTIzNTgsMTUgKzIzNTMsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
aWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3Qi
fSkgewogICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gImpzIiAuICRp
bnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGJhc2VW
YWx1ZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfSogZG9tT2JqZWN0ID0gdG8ke2NsYXNzTmFtZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmIChDb25zdHJ1Y3RvclNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9
ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0
ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKSBpZiBDb25zdHJ1Y3RvclNob3VsZEJlT25JbnN0
YW5jZSgkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFz
c05hbWV9UHJvdG90eXBlKj4oYmFzZVZhbHVlKTtcbiIpIGlmICFDb25zdHJ1Y3RvclNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSlc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGJhc2VWYWx1
ZSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghZG9tT2JqZWN0KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKQEAgLTI0NDQsOSAr
MjQ0Miw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKKwogICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5k
ZXhlZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpIHtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVU5VU0VEX1BBUkFNKHNob3VsZFRocm93
KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
dGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMjQ5
Miw3ICsyNDkwLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoISRh
dHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSog
Y2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwpAQCAtMjUwMCw3ICsyNDk3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJm
YWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZyhcIlRoZSBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwg
XCIkbmFtZVwiLCBcIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgXCIs
IFwiJGludGVyZmFjZU5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0MCw3
ICsyNTM3LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwotCiAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKQEAgLTI1NjEs
NyArMjU1Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICBteSAkYXJnVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkYXJn
VHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVyaXRzKEpT
JHthcmdUeXBlfTo6aW5mbygpKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiVGhlIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwi
LlwiLCBcIiRuYW1lXCIsIFwiIGF0dHJpYnV0ZSBtdXN0IGFuIGluc3RhbmNlIG9mIFwiLCBcIiRh
cmdUeXBlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjczNSw3ICsyNzMxLDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9y
VGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZyhcIkNhbiBvbmx5IGNhbGwgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwg
XCIuXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiLCBcIiBvbiBpbnN0YW5jZXMgb2YgXCIsIFwiJGlu
dGVyZmFjZU5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZh
Y2VOYW1lXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9OjppbmZvKCkpO1xuIik7CkBAIC0y
ODM4LDEyICsyODM0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRK
U1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgICAgIGlmICgkY29uc3RhbnQtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0
dGVyfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZ09yTnVsbChleGVjLCBTdHJpbmcoIiAuICRjb25zdGFudC0+dmFsdWUgLiAi
KSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigiIC4gJGNv
bnN0YW50LT52YWx1ZSAuICIpKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMzE3OSwyMiArMzE3NiwxOSBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9CiAgICAgCi0gICAgCi0gICAgbXkgJHBy
ZXR0eUZ1bmN0aW9uTmFtZTsKKyAgICBteSAkcXVvdGVkRnVuY3Rpb25OYW1lOwogICAgIGlmICgh
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9
KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAg
ICAgICRwcmV0dHlGdW5jdGlvbk5hbWUgPSAiXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwgXCIk
bmFtZVwiIjsKKyAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJcIiRuYW1lXCIiOwogICAg
ICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBcQCRvdXRwdXRBcnJheSwgIkpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIsICRmdW5jdGlvbikpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgICRwcmV0dHlGdW5jdGlvbk5hbWUgPSAiXCJ0aGUgXCIsIFwiJGludGVyZmFjZU5h
bWVcIiwgXCIgY29uc3RydWN0b3JcIiI7CisgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAi
bnVsbHB0ciI7CiAgICAgfQogCiAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0g
PSAxOwogICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgIG15ICRh
cmd1bWVudEluZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7
Ci0gICAgICAgICRhcmd1bWVudEluZGV4ID0gJGFyZ3VtZW50SW5kZXggKyAxOwogICAgICAgICAj
IE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIFtPcHRpb25hbF0gc2hvdWxkIGdlbmVyYXRlIGFuIGVh
cmx5IGNhbGwgd2l0aCBmZXdlciBhcmd1bWVudHMuCiAgICAgICAgICMgT3B0aW9uYWwgYXJndW1l
bnRzIHdpdGggW09wdGlvbmFsPS4uLl0gc2hvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgZWFybHkgY2Fs
bC4KICAgICAgICAgIyBPcHRpb25hbCBEaWN0aW9uYXJ5IGFyZ3VtZW50cyBhbHdheXMgY29uc2lk
ZXJlZCB0byBoYXZlIGRlZmF1bHQgb2YgZW1wdHkgZGljdGlvbmFyeS4KQEAgLTMyMzMsNyArMzIy
Nyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGFyZ1R5cGU+ICRuYW1lO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghZXhlYy0+YXJndW1lbnQoJGFy
Z3NJbmRleCkuaXNVbmRlZmluZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRh
cmdzSW5kZXgpLmlzRnVuY3Rpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4
XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwg
XCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIs
ICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNh
bGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFj
a0NsYXNzTmFtZX0+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmdzSW5kZXgpKTtc
biIpOwpAQCAtMzI0Myw3ICszMjM3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBc
IiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0
eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGFyZ1R5cGU+ICRuYW1lID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFja0NsYXNzTmFtZX0+KGV4ZWMsIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KCRhcmdzSW5kZXgpKTtcbiIpOwpAQCAtMzI3MSw3ICszMjY1LDcgQEAgc3ViIEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGZvciAodW5zaWduZWQgaSA9ICRhcmdzSW5k
ZXgsIGNvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkge1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSlcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhc
IkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCIn
KSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCBpLCBcIiRuYW1lXCIsIFwiJGludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkYXJnVHlwZVwiKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUuYXBwZW5kKHRv
JGFyZ1R5cGUoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTMyOTksMTAgKzMyOTMsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZW51bXMgPSAkZW51bXMg
LiAiLCBcXFwiIiAuICRlbnVtVmFsdWUgLiAiXFxcIiI7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoIiAuIGpvaW4oIiAmJiAiLCBAZW51bUNoZWNrcykgLiAiKVxuIik7Ci0g
ICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBc
IiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRw
cmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgb25lIG9mOiBcIiwgXCIkZW51bXNcIikpO1xu
Iik7CisgICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBc
IiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGVudW1zXCIpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNr
aW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5
cGUgaXMgYW4KICAgICAgICAgICAgICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29t
aW5nIHZhbHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IK
QEAgLTMzMTQsOCArMzMwNyw4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAg
ICAgICAgICAgICAgbXkgJGFyZ1ZhbHVlID0gImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpIjsK
ICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGFyZ1R5
cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gJGFyZ3NJbmRleCAmJiAhJHthcmdWYWx1ZX0uaXNVbmRl
ZmluZWRPck51bGwoKSAmJiAhJHthcmdWYWx1ZX0uaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZv
KCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwgXCIgKCdcIiwgXCIkbmFt
ZVwiLCBcIicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIFwiLCBcIiRhcmdUeXBlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke2FyZ1ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmICEke2FyZ1ZhbHVlfS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRl
cmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ0NzQsNyArNDQ2Nyw3IEBAIEVO
RAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250
ZXh0KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtp
bnRlcmZhY2VOYW1lfSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlXCIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoKmV4ZWMs
IFwiJHtpbnRlcmZhY2VOYW1lfVwiKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgICAgIHB1c2go
QGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjYXN0ZWRUaGlzLT5kb2N1bWVudCgpIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGVjZGI0NDUxNDA4YzgyZWE3YWU5MjBmMGU4
NzE1NWI5OWU4MDViOGQuLjc3MzM0ZmJmNWI2MzZmMzIxNmYwZTk1NmUyOTkyMjBlOWNhMjkyMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNDcsMjggKzE0NywyMSBA
QCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RBY3Rp
dmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnZXhjaXRpbmdBdHRyJyBvbiBhIG5vbi1UZXN0QWN0aXZlRE9NT2JqZWN0IG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4iLCAi
ZXhjaXRpbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RBY3RpdmVET01PYmplY3QiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2Jq
ZWN0IiwgImV4Y2l0aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nQXR0ciIpOwogICAgIH0K
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0QWN0aXZl
RE9NT2JqZWN0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5leGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RB
Y3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xODcsNyArMTgwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RBY3RpdmVET01PYmplY3QiLCAiLiIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RBY3RpdmVET01PYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFj
dGl2ZURPTU9iamVjdDo6aW5mbygpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjA2LDcgKzE5OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4iLCAicG9zdE1lc3NhZ2UiLCAiIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6aW5mbygpKTsKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0JiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggZDJiNDYwMzY2NTc5NDg4ODk0NDczN2Nl
OTM5Mjg2MzQ1ZTMwYjgyNS4uNDRjNDE1ZDliMmYzYTQ1NGEwYWI0YTYyMTZkZGU4N2JjNDViOTFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNTMsMTAgKzE1
Myw4IEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xNzMsNyArMTcxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
QW5vdGhlckZ1bmMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIiLCAiLiIsICJhbm90aGVyRnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdEN1c3RvbU5hbWVkR2V0dGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmluZm8oKSk7CiAgICAgVGVzdEN1c3RvbU5hbWVkR2V0dGVyJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDJkOTZmNmNiMGRmZjJiZWM4MDVj
NzMxMWRiZmZhZjI2N2I2NTVkMzEuLjlhZDllZWZkYmRjOGU4ZmUzNjMzOGRiMGNiZmNjZGI1N2Yx
ZWI2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE4MCwxNiAr
MTgwLDExIEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdhdHRyMScgb24gYSBub24tVGVzdEV2ZW50Q29uc3RydWN0b3Igb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgIi4iLCAi
YXR0cjEiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAiYXR0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5h
dHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTksMjYg
KzE5NCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdhdHRyMicgb24gYSBub24tVGVzdEV2ZW50Q29uc3RydWN0b3Igb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgIi4iLCAi
YXR0cjIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAiYXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5h
dHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggOTg2NDNm
NjJmZTJiNjQ1NjZkOWVlY2YzZTZlMWY0N2E5ZWFhNWFhNy4uZmEzYmVlNzgyOTM0NjFiOTk3OWZi
OTg2ZWRiZTI1ZWM3ZDgzMThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xODQs
MTAgKzE4NCw4IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldCogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CkBAIC0yMTMsNyArMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIGUKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEV2ZW50VGFy
Z2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIsICJpdGVtIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRhcmdldCIsICJpdGVtIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsK
ICAgICBUZXN0RXZlbnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0yMzQsNyArMjMyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRk
RXZlbnRMaXN0ZW5lcigKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIs
ICJhZGRFdmVudExpc3RlbmVyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdl
dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVu
dFRhcmdldCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKICAgICBUZXN0RXZl
bnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtMjQ5LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RFdmVudFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZl
bnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIi4iLCAicmVt
b3ZlRXZlbnRMaXN0ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRUYXJnZXQi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRU
YXJnZXQiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgVGVzdEV2
ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlzdGVu
ZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTI2NCw3ICsyNjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRj
aEV2ZW50KEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0RXZlbnRUYXJnZXQqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RFdmVudFRhcmdldCIsICIuIiwgImRp
c3BhdGNoRXZlbnQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFyZ2V0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50VGFyZ2V0
IiwgImRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRlc3RFdmVudFRhcmdldCYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMWJmY2U1Y2UzNzcyOTUwODQ5MjRhZWI1
OGRlMGI2NzMwNzE2ZjA1Ny4uNWUzYTZlYjMwZTk2MWVlYmY1Nzg3ZTdjMTZmYmNmNzlhMmZhYzY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEzOSwyNiArMTM5LDE5IEBAIGJvb2wgSlNU
ZXN0RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnbmFtZScgb24gYSBub24tVGVzdEV4Y2VwdGlvbiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEV4Y2VwdGlvbiIsICIuIiwgIm5hbWUi
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV4Y2Vw
dGlvbiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKICAg
ICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RFeGNlcHRpb24mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7
CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDEzNDg0
NWVhNGRiMTY4YjE2Y2U2YWI1MDMzOGYxZGRkYzMzNTRjM2IuLmY4ZmZiNjlhYWM0NTEzMWNiZjFk
Mjg0OWUwMDRlYmRhOTkwZTdmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKQEAgLTExOSwxMCArMTE5LDggQEAgYm9vbCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAg
aWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBkZWQxYmRmYmY3M2Y0YzhkMTQ3MzFhZWNmNGRhMWY3
N2NhNmU1MmRiLi5kNmMwZmVlMGIwZTIzOTM3ZDc5ZWQxNTMwNmRkMGVhMjJmZjdkNmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdElu
dGVyZmFjCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRlc3RJbnRlcmZhY2Ug
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoKmV4ZWMs
ICJUZXN0SW50ZXJmYWNlIik7CiAgICAgUmVmUHRyPFRlc3RJbnRlcmZhY2U+IG9iamVjdCA9IFRl
c3RJbnRlcmZhY2U6OmNyZWF0ZSgqY29udGV4dCwgc3RyMSwgc3RyMiwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwpAQCAtNDE2LDcgKzQxNiw2
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0
YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRz
U3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTQyOCw3ICs0MjcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSgogewogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDM5LDE2ICs0MzcsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1wbGVtZW50c1N0cjEnIG9uIGEg
bm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRzU3RyMSIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC00NjAsMTYgKzQ1MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihz
bG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNj
ZXNzIHByb3BlcnR5ICdpbXBsZW1lbnRzU3RyMicgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwg
ImltcGxlbWVudHNTdHIyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmltcGxlbWVu
dHNTdHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ4MSwx
NCArNDY5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVu
dHNTdHIzJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjMiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmltcGxlbWVudHNTdHIzKGV4ZWMpKTsKIH0KQEAgLTQ5OSwxNiArNDgzLDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
Tm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVudHNOb2RlJyBvbiBhIG5vbi1UZXN0
SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50
ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c05vZGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAiaW1wbGVtZW50c05vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuaW1wbGVtZW50c05vZGUoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTUyMSw3ICs1MDAsNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1Jl
YWRPbmx5QXR0cihFeGVjU3RhdAogewogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3Rh
dGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTUzMyw3ICs1MTEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLAogewogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NDQsMTYgKzUyMSwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLAogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBsZW1lbnRhbFN0cjEn
IG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIxIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxTdHIxIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJm
YWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMSgm
aW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTU2NSwxNiAr
NTM3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3VwcGxlbWVu
dGFsU3RyMicgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjIiLCAi
IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFj
ZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxTdHIyKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
NTg2LDE0ICs1NTMsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdz
dXBwbGVtZW50YWxTdHIzJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFs
U3RyMyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoZXhlYykpOwogfQpAQCAtNjA0LDE2ICs1
NjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
U3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdXBwbGVtZW50
YWxOb2RlJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsTm9kZSIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNl
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsTm9kZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjIxLDEwICs1NzksOCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYQogCiAjZW5kaWYKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC02NTUsNyArNjExLDYgQEAgdm9pZCBKU1Rlc3RJbnRlcmZh
Y2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC02NjgsMTAgKzYy
Myw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiB2b2lkIHNldEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTY4NywxMCArNjQxLDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICoKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRz
U3RyMyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJ
bnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXN0ZWRUaGlzLT5zZXRJbXBsZW1lbnRzU3RyMyhleGVjLCB2YWx1ZSk7CkBAIC03MDIsMTAg
KzY1NSw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c05vZGUiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2Rl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTcyMSw3ICs2NzMsNiBAQCB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKgogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRp
Y0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTczNCwxMCAr
Njg1LDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamUKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjIiLCAiIHNldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0SW50ZXJmYWNlJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNzUzLDEwICs3MDMsOSBAQCB2b2lkIHNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAi
c3VwcGxlbWVudGFsU3RyMyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldFN1cHBsZW1lbnRhbFN0cjMoZXhlYywgdmFs
dWUpOwpAQCAtNzY4LDEwICs3MTcsOSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdAogdm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3VwcGxlbWVudGFsTm9kZSIs
ICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJm
YWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC03OTQsNyArNzQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2Ui
LCAiLiIsICJpbXBsZW1lbnRzTWV0aG9kMSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50
ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIFRlc3RJ
bnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRz
TWV0aG9kMSgpOwpAQCAtODA5LDcgKzc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRl
cmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhvZDIiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhv
ZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdElu
dGVyZmFjZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtODM4LDcgKzc4
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJm
YWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhvZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVudHNNZXRob2QzKGV4ZWMp
KTsKIH0KQEAgLTg2MCw3ICs4MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9k
MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50
ZXJmYWNlOjppbmZvKCkpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMSgmaW1wbCk7
CkBAIC04NzUsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxNZXRob2QyIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFj
ZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtOTA0LDcgKzg1Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2QzCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwg
Ii4iLCAic3VwcGxlbWVudGFsTWV0aG9kMyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50
ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKGV4ZWMp
KTsKIH0KQEAgLTkyMywzMyArODcxLDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvCiAvLyBD
b25zdGFudCBnZXR0ZXJzCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFO
VDEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQxKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cigxKSk7CiB9CiAKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNU
QU5UMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDIo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKDIpKTsKIH0KIAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxD
T05TVEFOVDEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05T
VEFOVDEoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDEpKTsKIH0KIAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVN
RU5UQUxDT05TVEFOVDIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5U
QUxDT05TVEFOVDIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKDIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCmluZGV4IDRmZTBkZGFiODQ0MDAxMWI2M2NjYWQ4Njk3NWJkZjhiYzQx
ZmYzZGUuLjhiODk3MDdjZDg5NmY5M2NiYTJhZGZjNGE1NjgzNDA2OGQ3MjQ3YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEyNiwxMCArMTI2
LDggQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKQEAgLTE0NiwxMyAr
MTQ0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIi4iLCAibWV0
aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbmZvKCkpOwogICAg
IFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVu
dCAiLCAiMSIsICIgKCciLCAibGlzdGVuZXIiLCAiJykgdG8gIiwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIi4iLCAibWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImxp
c3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIFJl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kKGxpc3RlbmVyKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQxM2E2NTkwMTg2YmQzNzkyYTY3ZDk3MTc4Yzc3NmI4
NzE0ZDliNGQuLjg2YzMyMzc2ZjNhNzQ4OGMzNDU5NTkxZmExOTgzMWE3MjIxZjAyYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2NiwxMCArMTY2LDggQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihiYXNl
VmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA1OWQzMWNiYmIzY2U1NGFiMjg2ZGQ4Zjg0ZDQ4
MjE0Njc5MDhjNzcwLi5iMDcwZWFkOGExNWUwYzk3MjA3OGQ4ZTRjZWY1N2RmYTc4NzQ0ZWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCkBAIC0xMjMsMTAgKzEyMyw4IEBAIGJvb2wgSlNUZXN0Tm9kZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAg
ICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDFmYmVhODU1Y2NkZGRlNDcxODNiNTZmMWEwMTAxMGIxYmFjMDU3MTMu
LjgxYjNkOWYxZTgwMzQ0ZTUzYjA2Mjk0YjVkMjkwYmIyZjcwMGQxYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T2JqKEV4ZWNTdGF0ZSoKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgn
IiwgInRlc3RDYWxsYmFjayIsICInKSB0byAiLCAidGhlICIsICJUZXN0T2JqIiwgIiBjb25zdHJ1
Y3RvciIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9i
aiIsIG51bGxwdHIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpT
VGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IG9iamVj
dCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2Jq
ZWN0LmdldCgpKSkpOwpAQCAtMTAwOSwxNiArMTAwOSwxMSBAQCBib29sIEpTVGVzdE9iajo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRP
bmx5TG9uZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWFkT25seUxvbmdBdHRyIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwMjgsMTYgKzEwMjMs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
YWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRPbmx5U3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
InJlYWRPbmx5U3RyaW5nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWFkT25seVN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDQ3LDE2ICsxMDM3LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdyZWFkT25seVRlc3RPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVh
ZE9ubHlUZXN0T2JqQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVh
ZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwu
cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTA2Nyw3ICsxMDUyLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmoKIHsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRl
c3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtMTA3Nyw3ICsxMDYxLDYgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHMKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RPYmo6OnN0YXRpY1N0cmluZ0F0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4NiwxNCArMTA2OSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iaicgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlRlc3RT
dWJPYmoiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmoiKTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKGV4
ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0xMTAyLDE0ICsx
MDgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmcnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
ZyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZy
YW1lKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMTIzLDE2ICsxMDk4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2VudW1BdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiZW51
bUF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuZW51
bUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE0Miwx
NiArMTExMiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdieXRlQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImJ5dGVBdHRyIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNjEsMTYgKzExMjYsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1YKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ29j
dGV0QXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0
dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJvY3RldEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xMTgwLDE2ICsxMTQwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9j
dGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJE
ZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzaG9ydEF0dHInIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJzaG9ydEF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7
CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zaG9y
dEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE5OSwx
NiArMTE1NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNpZ25lZFNob3J0QXR0cicgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgInVuc2lnbmVkU2hvcnRBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkU2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMTgsMTYgKzExNjgsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbG9uZ0F0
dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJsb25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxv
bmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xMjM3LDE2ICsxMTgyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdsb25nTG9uZ0F0dHInIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJsb25nTG9uZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdB
dHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5sb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTI1NiwxNiArMTE5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNpZ25lZExvbmdMb25n
QXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRo
ZSAiLCAiVGVzdE9iaiIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xv
bmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNzUs
MTYgKzEyMTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5n
QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwu
c3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0x
Mjk0LDE2ICsxMjI0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3Rlc3RPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
dGVzdE9iakF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudGVzdE9iakF0dHIoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMTMsMTYgKzEyMzgsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdYTUxPYmpBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiWE1MT2JqQXR0ciIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJYTUxPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcGwueG1sT2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTMzMiwxNiArMTI1MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpY
TUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY3JlYXRlJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiY3JlYXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNyZWF0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzNTEsMTYgKzEyNjYsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVm
bGVjdGVkU3RyaW5nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTM3MCwxNiArMTI4MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAncmVmbGVjdGVkSW50ZWdyYWxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkSW50ZWdy
YWxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZElu
dGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTM4OSwxNiArMTI5NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhcwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBsLmdldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0
dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MDgs
MTYgKzEzMDgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkQm9vbGVhbkF0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRCb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cikpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MjcsMTYgKzEzMjIsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdyZWZsZWN0ZWRVUkxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkVVJMQXR0ciIs
ICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0
ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDQ2LDE2
ICsxMzM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkU3RyaW5nQXR0cicgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3Ry
aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmZhc3RHZXRBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDY1LDE2ICsxMzUwLDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5n
ZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRl
Z3JhbEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTQ4NCwxNiArMTM2NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9t
Q29udGVudEJvb2xlYW5BdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTE1MDMsMTYgKzEzNzgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2wKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIs
ICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJM
QXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTUyMiwxNiArMTM5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYQogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd0eXBlZEFycmF5QXR0cicg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgInR5cGVkQXJyYXlBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihp
bXBsLnR5cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNTQxLDE0ICsxNDA2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTU2MSwxNiArMTQyMiwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdhdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE1ODAsMTQgKzE0MzYs
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
CisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xNjAwLDE2ICsxNDUyLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTYxOSwxNCArMTQ2
NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ2N1c3RvbUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21BdHRyIiwg
IiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tQXR0cihleGVjKSk7CiB9CkBAIC0x
NjM1LDE0ICsxNDc4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShleGVjKSk7CkBAIC0xNjUzLDE0ICsxNDkyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3Mg
cHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKQEAgLTE2NzQsMTQgKzE1MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU08K
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTE2OTQsMTQgKzE1MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXMnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAg
fQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNzE3LDE0ICsx
NTQ0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZScgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCkBA
IC0xNzM4LDE0ICsxNTYxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcycgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE3NjEsMTQgKzE1
ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7
CiAgICAgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTc4Miwx
NCArMTU5NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYgogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUoKSkpOwpAQCAtMTgwMSwxNiArMTYxMiwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2NvbmRpdGlvbmFsQXR0cjEnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIx
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4
MjIsMTYgKzE2MjgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHIyJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xODQzLDE2ICsxNjQ0LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
Y29uZGl0aW9uYWxBdHRyMycgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjMiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0
cjMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg2NCwxNCAr
MTY2MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyNCcgb24g
YSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RPYmplY3RBOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTg4MiwxNCArMTY3NCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyNScgb24gYSBub24tVGVzdE9iaiBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlv
bmFsQXR0cjUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjUiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RCOjpn
ZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwog
fQpAQCAtMTkwMCwxNCArMTY4OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0
aW9uYWxBdHRyNicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjYiLCAiIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICB9CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52
bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTkxNywxNiArMTcwMSwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ2NhY2hlZEF0dHJpYnV0ZTEnIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjYWNo
ZWRBdHRyaWJ1dGUxIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKKyAgICB9CiAgICAgaWYg
KEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTEuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xOTM5LDE2ICsxNzE4LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRB
dHRyaWJ1dGUyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnY2FjaGVkQXR0cmlidXRlMicgb24gYSBub24tVGVzdE9iaiBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNhY2hlZEF0
dHJpYnV0ZTIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
YWNoZWRBdHRyaWJ1dGUyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgIH0KICAgICBpZiAoSlNW
YWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5nZXQoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTE5NjEsMTYgKzE3MzUsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2FueUF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImFueUF0dHJpYnV0ZSIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5hbnlBdHRyaWJ1dGUoKS5oYXNOb1ZhbHVlKCkgPyBq
c051bGwoKSA6IGltcGwuYW55QXR0cmlidXRlKCkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTgwLDE0ICsxNzQ5LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdjb250ZW50RG9jdW1lbnQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb250ZW50RG9jdW1lbnQiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29udGVudERvY3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udGVudERvY3VtZW50Iik7CiAgICAgfQogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShleGVjLCBpbXBsLmNvbnRlbnREb2N1bWVu
dCgpKSA/IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwuY29udGVudERvY3VtZW50KCkpKSA6IGpzTnVsbCgpKTsKQEAgLTE5OTcsMTYgKzE3NjIs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11
dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ211dGFibGVQb2ludCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm11dGFibGVQb2lu
dCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9iaiwg
U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbCwgaW1wbC5tdXRhYmxlUG9pbnQoKSwgJlRlc3RPYmo6OnVw
ZGF0ZU11dGFibGVQb2ludCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yMDE2LDE2ICsxNzc2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQ
b2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltbXV0YWJsZVBvaW50JyBvbiBh
IG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJpbW11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50KCkpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjAzNSwxNiArMTc5MCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jbwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3Ry
YXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ3N0cmF3YmVycnknIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJhd2JlcnJ5IiwgIiBn
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA1NCwxNiArMTgwNCwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdzdHJpY3RGbG9hdCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZsb2F0IiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InN0cmljdEZsb2F0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwNzMsMTYgKzE4MTgsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnZGVz
Y3JpcHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJkZXNjcmlwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJkZXNj
cmlwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5kZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDkyLDE2ICsxODMyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2lkJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiaWQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiaWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpZCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuaWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMjExMSwxNiArMTg0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2hhc2gnIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJoYXNoIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImhhc2giKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5oYXNoKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIxMzAsMTYgKzE4NjAs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVwbGFjZWFibGVBdHRyaWJ1dGUnIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJp
YnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTQ5LDE2ICsxODc0LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURv
dWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ251bGxhYmxlRG91YmxlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0yMTcxLDE2ICsx
ODkxLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUxvbmdBdHRyaWJ1dGUnIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxv
bmdBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0yMTkzLDE2ICsx
OTA4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUn
IG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwubnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVs
bCkpOwpAQCAtMjIxNSwxNiArMTkyNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRl
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIpOworICAgIH0KICAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLm51
bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjIzNywxNiArMTk0MiwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZScg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjI1OSwyMiArMTk1OSwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ251bGxhYmxlU3RyaW5nVmFsdWUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZVN0cmlu
Z1ZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmlu
Z1ZhbHVlIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShpc051
bGwsIGVjKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoaXNOdWxs
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIApAQCAtMjI4MiwxNiArMTk3OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cmlidXRlJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAiYXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwuYXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTIzMDEsMjYgKzE5OTIsMTkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyaWJ1dGVXaXRo
UmVzZXJ2ZWRFbnVtVHlwZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5hdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVj
dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0yMzMwLDcgKzIw
MTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZQogdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1
Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUodmFsdWUu
aXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNDEsMTAgKzIwMjQsOSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3Rh
dGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBz
ZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmciLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTIzNTUsMTAgKzIwMzcs
OSBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImVudW1BdHRyIiwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yMzc0LDEwICsyMDU1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlMK
IHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJieXRlQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjM5MSwxMCArMjA3MSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTCiB2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0QXR0ciIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRBdHRy
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTI0MDgsMTAgKzIwODcsOSBAQCB2b2lkIHNldEpTVGVzdE9iak9jdGV0
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVk
Sgogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJzaG9ydEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDI1LDEwICsy
MTAzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEoKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWdu
ZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1
bnNpZ25lZFNob3J0QXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ0MiwxMCArMjEx
OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywKIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJsb25nQXR0ciIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMjQ1OSwxMCArMjEzNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
CiB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImxvbmdMb25nQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0
NzYsMTAgKzIxNTEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZAogdm9pZCBzZXRKU1Rlc3RP
YmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC0yNDkzLDEwICsyMTY3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICoKIHZvaWQgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgInN0cmluZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjUxMCwxMCArMjE4Myw5IEBA
IHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
KiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidGVzdE9iakF0dHIiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI1MjcsMTAgKzIxOTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialRl
c3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZQogdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiWE1MT2JqQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTQ0
LDEwICsyMjE1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWQKIHZvaWQgc2V0SlNUZXN0T2Jq
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY3JlYXRl
IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjcmVh
dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjU2MSwxMCArMjIzMSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1NzgsMTAgKzIyNDcsOSBAQCB2b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTk1LDEwICsyMjYzLDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdAogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0yNjEyLDEwICsyMjc5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMjYyOSwxMCArMjI5NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
CiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRVUkxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTI2NDYsMTAgKzIzMTEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVS
TEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRQogdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yNjYzLDEwICsyMzI3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8K
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjY4MCwxMCArMjM0Myw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTI2OTcsMTAgKzIzNTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYgogdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzE0LDEwICsyMzc1LDkgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QKIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ0eXBlZEFycmF5QXR0ciIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMjczMSwxMCArMjM5MSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJh
eUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jCiB2
b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3NDgsMTAgKzI0MDcsOSBAQCB2b2lkIHNldEpT
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplYwogdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzY3LDEwICsyNDI1
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWMKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc4NCwxMCArMjQ0MSw5IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4
MDMsMTAgKzI0NTksOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RP
YmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
Y3VzdG9tQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY3VzdG9tQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc3RlZFRo
aXMtPnNldEN1c3RvbUF0dHIoZXhlYywgdmFsdWUpOwpAQCAtMjgxNiwxMCArMjQ3MSw5IEBAIHZv
aWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4
MzMsMTAgKzI0ODcsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZQogdm9pZCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODUzLDEw
ICsyNTA2LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kgogdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODcwLDEwICsyNTIyLDkgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmEKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg5MCwxMCArMjU0MSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5MTAsMTAgKzI1NjAsOSBAQCB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleAogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTMwLDEwICsyNTc5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGEKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjk1MCwxMCArMjU5OCw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgIiBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5NjgsMTAgKzI2MTUsOSBA
QCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iagogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9u
YWxBdHRyMSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTg3LDEwICsyNjMzLDkgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0
cjIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzAwNiwxMCArMjY1MSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFCiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIzIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRp
b25hbEF0dHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMwMjUsMTAgKzI2NjksOSBAQCB2b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRQogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0
dHI0IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHI0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNDEsMTAgKzI2ODQsOSBAQCB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRp
b25hbEF0dHI1IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNTcsMTAgKzI2OTksOSBAQCB2
b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJj
b25kaXRpb25hbEF0dHI2IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMwNzIsMTAgKzI3MTMs
OSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhbnlBdHRyaWJ1
dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFu
eUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMDg5LDEwICsyNzI5LDkgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2QKIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibXV0YWJsZVBvaW50IiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMzEwNiwxMCArMjc0NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kCiB2b2lk
IHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8q
IGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0T2JqIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMx
MjMsMTAgKzI3NjEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuYwogdm9pZCBzZXRKU1Rlc3RP
YmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
c3RyYXdiZXJyeSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTQwLDEwICsyNzc3LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kZWQKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGbG9hdCIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMzE1NywxMCArMjc5Myw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0Rmxv
YXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlCiB2
b2lkIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAiaWQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTMxNzQsMTAgKzI4MDksOSBAQCB2b2lkIHNldEpTVGVzdE9i
aklkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlCiB2b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlcGxhY2Vh
YmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gb2JqZWN0CkBAIC0zMTg4LDEwICsyODIyLDkgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAt
MzIwNSwxMCArMjgzOCw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzCiB2b2lkIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
QEAgLTMyMjIsMTAgKzI4NTQsOSBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLwogdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjQ4LDcgKzI4NzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZChFeGVjU3RhdGUqIGV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInZvaWRNZXRob2QiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidm9pZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7
CkBAIC0zMjYwLDcgKzI4OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgInZvaWRNZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAt
MzI4Myw3ICsyOTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBleGUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJieXRlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kKCkpOwpAQCAtMzI5NSw3
ICsyOTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJi
eXRlTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZU1l
dGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTMzMTgsNyArMjk0
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib2N0ZXRN
ZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZCgpKTsKQEAgLTMzMzAsNyArMjk2MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTMzNTMsNyArMjk4NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
b25nTWV0aG9kKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ01ldGhvZCIs
ICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKQEAgLTMzNjUsNyArMjk5Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0
aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ01ldGhvZFdpdGhBcmdz
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdNZXRob2RXaXRoQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMzg4LDcgKzMwMTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9iak1ldGhvZCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkp
OwpAQCAtMzQwMCw3ICszMDMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJvYmpNZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0z
NDIzLDcgKzMwNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZQogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAt
MzQ0MCw3ICszMDcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CkBAIC0zNDU3LDcgKzMwODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM0
NjYsNyArMzA5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpZiAoZW51bUFyZyAhPSAiIiAmJiBlbnVtQXJnICE9ICJFbnVt
VmFsdWUxIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUyIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFs
dWUzIikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAiZW51bUFyZyIsICIn
KSB0byAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIiBtdXN0IGJlIG9u
ZSBvZjogIiwgIlwiXCIsIFwiRW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiwgXCJFbnVtVmFs
dWUzXCIiKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpl
eGVjLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgIlwiXCIs
IFwiRW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiwgXCJFbnVtVmFsdWUzXCIiKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0zNDc2LDcgKzMxMDcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJncwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCkBAIC0zNDk5
LDcgKzMxMzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
InNlcmlhbGl6ZWRWYWx1ZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzZXJpYWxp
emVkVmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzUxNiw3ICszMTQ3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9wdGlvbnNPYmpl
Y3QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3B0aW9uc09iamVjdCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zNTM2LDcgKzMxNjcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbihFeGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC0zNTUwLDcgKzMxODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEV4ZWNTdGF0ZSogZQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbU1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJjdXN0b21NZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZChleGVjKSk7CiB9CkBAIC0zNTYwLDcgKzMxOTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kV2l0aEFyZ3MoRXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbU1ldGhv
ZFdpdGhBcmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImN1c3RvbU1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5j
dXN0b21NZXRob2RXaXRoQXJncyhleGVjKSk7CiB9CkBAIC0zNTcwLDcgKzMyMDEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZl
bnRMaXN0ZW5lcihFeGVjU3RhdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImFkZEV2ZW50TGlzdGVuZXIi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBs
aXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtMzU4NSw3ICszMjE2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuZXIoRXhlY1MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJyZW1vdmVFdmVudExpc3RlbmVy
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTM2MDAsNyArMzIzMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRl
Vm9pZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lk
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
bXBsLndpdGhTY3JpcHRTdGF0ZVZvaWQoZXhlYyk7CkBAIC0zNjEyLDcgKzMyNDMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlT2JqKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRTdGF0ZU9i
aiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVPYmoiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooZXhlYykpKTsKQEAgLTM2MjYsNyArMzI1Nyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlw
dFN0YXRlVm9pZEV4Y2VwdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM2NDAsNyAr
MzI3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0
aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0zNjU3
LDcgKzMyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzY3Miw3ICszMzAzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBA
IC0zNjg3LDcgKzMzMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0z
NzA3LDcgKzMzMzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzcyNCw3ICszMzU1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4g
c2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDAp
KTsKQEAgLTM3MzcsNyArMzM2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAKQEAgLTM3NTksNyArMzM5MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kT3B0aW9uYWxBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtMzc4Niw3ICszNDE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM4MjEs
NyArMzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAi
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAKQEAgLTM4NDMsNyArMzQ3NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNV
bmRlZmluZWQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyKGV4ZWMtPmFyZ3VtZW50KDApLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKQEAgLTM4NTgsNyArMzQ4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5n
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzTnVsbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHIoYXJndW1lbnRPck51bGwoZXhlYywgMCkuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBhcmd1bWVudE9yTnVsbChleGVjLCAwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwpAQCAtMzg3MywxMyArMzUwNCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCci
LCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxs
YmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RX
aXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zODkwLDcgKzM1MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTM4OTks
NyArMzUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIsICIgKCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwg
IlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIs
ICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxs
YmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcobm9uQ2FsbGJhY2ssIGNh
bGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MzkxMCwxMyArMzU0MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJj
YWxsYmFjayIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgICAg
IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAg
aW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CkBAIC0zOTI4
LDcgKzM1NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogICAgIFJlZlB0cjxUZXN0Q2Fs
bGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRP
ck51bGwoKSkgewogICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVu
Y3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImNhbGxi
YWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmoiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsK
ICAgICAgICAgY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxs
YmFjaz4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0
T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CkBA
IC0zOTQwLDcgKzM1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIg
KCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iaiIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTVGVzdENh
bGxiYWNrPihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgVGVzdE9iajo6
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzk1Miw3ICszNTgzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
TWV0aG9kMShFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbE1ldGhvZDEiLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkp
OwpAQCAtMzk2Nyw3ICszNTk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3QKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJjb25kaXRpb25hbE1ldGhvZDIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOwpAQCAtMzk4
Miw3ICszNjEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIs
ICJjb25kaXRpb25hbE1ldGhvZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29u
ZGl0aW9uYWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMygpOwpAQCAtMzk5Niw3ICszNjI3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNDAxNiw3ICszNjQ3LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMigKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9k
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDA0Myw3ICszNjc0LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMygKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQpAQCAtNDA2MCw3ICszNjkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NCgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNDA3NywxMyArMzcwOCwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAi
LCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG11c3QgYmUgYSBmdW5jdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpl
eGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
UmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjayk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQwOTQsNyArMzcyNSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQxMTEsNyArMzc0Miw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDcoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJD
YW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTQxMjgsNyArMzc1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDgoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKQEAgLTQxNDUsNyArMzc3Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTQxNjIsNyArMzc5Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJv
dmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQxNzksNyAr
MzgxMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQzMDQsNyArMzkzNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY2xhc3NNZXRob2RX
aXRoQ2xhbXAiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRo
Q2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNDMzNCw3ICszOTY1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2UiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTQzNTEsNyArMzk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQz
NzEsNyArNDAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4i
LCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00
MzkxLDcgKzQwMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIu
IiwgImdldFNWR0RvY3VtZW50IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImdldFNW
R0RvY3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ0MDgsNyArNDAzOSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDEiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udmVydDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNDQyNSw3ICs0MDU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJjb252ZXJ0MiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00NDQyLDcgKzQwNzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbnZlcnQ0Iiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnZlcnQ0Iik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKQEAgLTQ0NTksNyArNDA5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDUiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29udmVydDUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDQ3Niw3ICs0
MTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtdXRh
YmxlUG9pbnRGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxl
UG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVh
dGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwpAQCAtNDQ4OCw3ICs0MTE5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbklt
bXV0YWJsZVBvaW50RnVuY3Rpb24oRXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJpbW11dGFibGVQb2lu
dEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGlt
cGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwpAQCAtNDUwMCw3ICs0MTMxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5n
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3JhbmdlIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKQEAgLTQ1MTIsNyArNDE0
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaWN0
RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAtNDUzOCwxNCArNDE2OSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0
RnVuY3Rpb25XaXRoU2VxdWVuYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0
aFNlcXVlbmNlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9u
V2l0aFNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+IDAgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMt
PmFyZ3VtZW50KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJB
cmd1bWVudCAiLCAiMSIsICIgKCciLCAib2JqQXJnIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4i
LCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkp
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCAwLCAib2JqQXJn
IiwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiVGVzdE9iaiIpOwog
ICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBp
ZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDU2MywxNCArNDE5NCwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVu
Y3Rpb25XaXRoQXJyYXkoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDAgJiYg
IWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50
KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAi
LCAiMSIsICIgKCciLCAib2JqQXJnIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaWN0
RnVuY3Rpb25XaXRoQXJyYXkiLCAiIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFl
eGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpCisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCAwLCAib2JqQXJnIiwgIlRlc3RPYmoi
LCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiLCAiVGVzdE9iaiIpOwogICAgIFRlc3RPYmoqIG9i
akFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNDU4OCw3ICs0MjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWMK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCkBAIC00NjA4LDcgKzQyMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTQ2MjgsNyArNDI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCkBAIC00NjM5LDcgKzQyNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIFZl
Y3RvcjxOb2RlKj4gdGFpbDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxLCBjb3VudCA9IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKCFleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKS5pbmhlcml0cyhKU05vZGU6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkFyZ3VtZW50ICIsICIyIiwgIiAoJyIsICJ0YWlsIiwgIicpIHRvICIsICJUZXN0T2Jq
IiwgIi4iLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgaSwgInRhaWwi
LCAiVGVzdE9iaiIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwogICAgICAgICB0YWls
LmFwcGVuZCh0b05vZGUoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICB9CiAgICAg
aW1wbC52YXJpYWRpY05vZGVNZXRob2QoaGVhZCwgdGFpbCk7CkBAIC00NjUxLDcgKzQyODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QW55KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJhbnkiLCAiIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiYW55Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAg
LTQ2ODAsNDYgKzQzMTEsMzkgQEAgdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIC8vIENvbnN0YW50IGdldHRlcnMKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09ORElUSU9OQUxf
Q09OU1QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05ESVRJT05BTF9DT05TVChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkp
OwogfQogCiAjZW5kaWYKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzAoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDT05TVF9WQUxVRV8xKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcigxKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNP
TlNUX1ZBTFVFXzIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8yKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigy
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcig0KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05T
VF9WQUxVRV84KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcig4KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZB
TFVFXzkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV85KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwog
fQogCkBAIC00NzI4LDM5ICs0MzUyLDMzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNU
X1ZBTFVFXzEwKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZ09yTnVsbChleGVjLCBTdHJpbmcoIm15IGNv
bnN0YW50IHN0cmluZyIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZB
TFVFXzExKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTEoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDB4ZmZm
ZmZmZmYpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMihFeGVjU3RhdGUqLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMHgwMSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzEzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwWDIwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzE0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFM
VUVfMTQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDB4MWFiYykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9K
QVZBU0NSSVBUKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
MTUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZG9ubHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWFkb25seShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggYzM4MDkwN2YwMmNmNjM5NzkyYmM4ZTg5
Zjk5MmU3MGZjMDMwNDBmNi4uZDhjYTc0ZTg1ODFjNDdjM2RiMGMxYTlhOWJjNmZiNzVkMmE4YTY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
MTk0LDEwICsxOTQsOCBAQCBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAg
aWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCA3ZmQzMzRmNmVkYzU4ZGQyM2Y2OWNjYWY0NzU3MDhlMzM2ZjUzMWE0Li5mZTM5
MDI0Mjk3MWEwMTM3OWI3MTUxZWEyMDNiNTRjMjhhNmVmMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTUwLDE2
ICsxNTAsMTEgQEAgYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LAogRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICd2YWx1ZScgb24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgInZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUi
KTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2OSwxNiArMTY0LDExIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVhZG9u
bHlWYWx1ZScgb24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICIuIiwgInJlYWRvbmx5VmFsdWUiLCAiIGdldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
IiwgInJlYWRvbmx5VmFsdWUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwu
cmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xODgsMTYgKzE3OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYwogRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNoZWRWYWx1ZScgb24gYSBub24tVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgImNhY2hl
ZFZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNs
b3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVk
VGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIxMCwxNiArMTk1LDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncG9ydHMnIG9uIGEg
bm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
LCAiLiIsICJwb3J0cyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0
cyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb3J0cygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMjksMTYgKzIwOSwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZQogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ2NhY2hlZFJlYWRvbmx5VmFsdWUnIG9uIGEgbm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJjYWNoZWRSZWFkb25seVZhbHVl
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFJlYWRvbmx5VmFs
dWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVlIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1
ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0OCwxMCAr
MjIzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihiYXNlVmFsdWUp
OwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKQEAgLTI2MSwxMCArMjM0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLAogdm9pZCBz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgInZh
bHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzgsMTAgKzI1MCw5
IEBAIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogLyoKIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJjYWNoZWRWYWx1ZSIsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggZjdmYjQ2Mzk3MzNiODk3NzA1NDYyOTc3YTRlOTdkOTgxMjk1NWE4OC4uNDg1ODExZTYwN2Zk
ODZiMzI0ZDE4ZTcxYzM2YjZhZTJhZjBiMTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMoCiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIsICIgKCciLCAidGVzdENhbGxiYWNrIiwgIicpIHRv
ICIsICJ0aGUgIiwgIlRlc3RUeXBlZGVmcyIsICIgY29uc3RydWN0b3IiLCAiIG11c3QgYmUgYSBm
dW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpleGVjLCAxLCAidGVzdENhbGxiYWNrIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOwog
ICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpj
cmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgUmVmUHRyPFRlc3RUeXBlZGVmcz4gb2JqZWN0ID0gVGVzdFR5
cGVkZWZzOjpjcmVhdGUoaGVsbG8sIHRlc3RDYWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBv
YmplY3QuZ2V0KCkpKSk7CkBAIC0yNTMsMTYgKzI1MywxMSBAQCBib29sIEpTVGVzdFR5cGVkZWZz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZQogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyBvbiBhIG5vbi1UZXN0VHlw
ZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVm
cyIsICIuIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZz
IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51
bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0yNzIsMTYgKzI2NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vu
c2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsbwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUnIG9uIGEgbm9u
LVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMi
LCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpID8gaW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjkxLDE0ICsyODEsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU08KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnVGVzdFN1Yk9iaicgb24gYSBub24tVGVz
dFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlw
ZWRlZnMiLCAiLiIsICJUZXN0U3ViT2JqIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIlRl
c3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0zMDcsMTQgKzI5MywxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBzbAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyBv
biBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjcsMTYg
KzMwOSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTM0
NiwxNCArMzIzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdFR5cGVkZWZz
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAi
LiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBl
ZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzY2LDI2ICsz
MzksMTkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2IKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdFR5cGVkZWZzIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVj
dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0zOTUsMTAgKzM2
MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFCiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0VHlwZWRlZnMiLCAiLiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNDEyLDEwICszNzcsOSBAQCB2b2lkIHNldEpT
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iagogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBl
ZGVmcyIsICIuIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQyOSwxMCArMzkzLDkg
QEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kgogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVm
cyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQ0NiwxMCArNDA5LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2UKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVm
cyIsICIuIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC00NjUsMTAgKzQyNyw5IEBAIHZvaWQgc2V0SlNUZXN0
VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlCiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMi
LCAiLiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVk
ZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNDgyLDEwICs0NDMsOSBAQCB2b2lk
IHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLwogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTUwOCw3ICs0Njgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogZXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIs
ICIuIiwgImZ1bmMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImZ1
bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5
cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKIApAQCAtNTMwLDcgKzQ5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVm
cyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic2V0U2hhZG93IiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzZXRTaGFkb3ciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRl
c3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMykKQEAgLTU3MSw3ICs1MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgIm1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0
aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC01
ODgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyhFeGUKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
VHlwZWRlZnMiLCAiLiIsICJudWxsYWJsZUFycmF5QXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJudWxsYWJsZUFycmF5QXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCkBAIC02MDUsNyArNTY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChF
eGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJmdW5jV2l0aENsYW1wIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVm
czo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC02NDIsNyArNjAyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGkKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIs
ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBl
ZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RU
eXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0
VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0
aW9uKCkpKSk7CkBAIC02NTQsNyArNjE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVk
ZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25s
eSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBl
ZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC02NzQsNyArNjM0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAi
LiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uMiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlw
ZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTY5NCw3ICs2NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0
UmVxdWlyZXNJbmNsdWRlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAg
VGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQpAQCAtNzExLDcgKzY3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNl
cHRpb24oCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAibWV0aG9kV2l0aEV4Y2Vw
dGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0
aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5k
ZXggMmNkOWFjMWQxNzk1MjM4YzlkZjY1MmFlZTMxNGMxZTFkMGZiYjFhOS4uODgzMjRmODhiMGQ3
NjQ0NjFkNDk4MGIwZGI4ZGExNmEyMjA5MWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjgsMjYg
KzEyOCwxOSBAQCBib29sIEpTYXR0cmlidXRlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogRW5jb2RlZEpTVmFsdWUganNhdHRy
aWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNhdHRyaWJ1dGUqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0
ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRvbmx5JyBvbiBhIG5vbi1hdHRyaWJ1dGUgb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgImF0dHJpYnV0ZSIsICIuIiwgInJl
YWRvbmx5IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgImF0
dHJpYnV0ZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5
cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgYXR0cmlidXRlJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbC5yZWFkb25seSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNhdHRyaWJ1dGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApp
bmRleCBjZDFmNjdjYjc5YWE4NmQ4N2I4ZmFmMmQ0MGQ2ZGUxNDVjZmQ5MDk0Li5kNDQzMDhhZGY0
YmQzODEwNmY4NWJlNDk3YzYxMTcyOGY0Yzk2MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0xMTksMTAg
KzExOSw4IEBAIGJvb2wgSlNyZWFkb25seTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNyZWFkb25seVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU3Jl
YWRvbmx5UHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228711</attachid>
            <date>2014-04-06 18:19:31 -0700</date>
            <delta_ts>2014-04-06 18:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131285-20140406181913.patch</filename>
            <type>text/plain</type>
            <size>331997</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIwMmU5N2VmYWI4MDFi
ZDBlNzk4YWVjNThmNDYyMjZhOGNkNmE4OC4uYzI4ZTI2MjdkYzJiYTY4MDY4NDdmMGM5MDc5MmJk
YmU1MzQ5YTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY2IEBACiAyMDE0LTA0LTA2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIHNvbWUgYmluZGluZ3Mg
aW1wcm92ZW1lbnRzLCB3aXRoIHNtYWxsZXIgY29kZSBzaXplIGZvciBlcnJvciBtZXNzYWdlIGdl
bmVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IFVwZGF0ZWQgdG8gcmVtb3ZlIG9sZCBhbmQgYWRkIG5ldyBmdW5j
dGlvbnMsIGZvciB1c2UgYnkgdGhlIEludGVybmFscworICAgICAgICBKYXZhU2NyaXB0IGJpbmRp
bmdzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93VHlwZUVycm9yKTogQWRkZWQuIEhlbHBlciB0byBh
dm9pZCByZXBlYXRpbmcgdGhyb3dWTUVycm9yL2NyZWF0ZVR5cGVFcnJvci4KKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEFyZ3VtZW50TXVzdEJlKTogQWRkZWQuIEhlbHBlciBmb3IgYnVpbGRpbmcg
dXAgYXJndW1lbnQgZXJyb3Igc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcik6IEFkZGVkLiBGb3IgYmluZGluZ3MgdG8gdXNlLgorICAgICAgICAo
V2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OnRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjp0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
dGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dGhyb3dHZXR0ZXJUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnRocm93U2VxdWVuY2VUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93U2V0dGVyVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0aHJvd1RoaXNU
eXBlRXJyb3IpOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OiBBZGRlZCBkZWNsYXJhdGlvbnMgZm9yIG5ldyBmdW5jdGlvbnMuIFJlbW92ZWQgZm9yd2FyZAor
ICAgICAgICBkZWNsYXJhdGlvbnMgZm9yIHRoaW5ncyBub3QgdXNlZCBpbiB0aGlzIGZpbGUuIFVz
ZSBudWxscHRyIGluc3RlYWQgb2YgMC4gRm9ybWF0CisgICAgICAgIHRlbXBsYXRlcyBjb25zaXN0
ZW50bHkuIFVzZSBhIGJldHRlciBmb3IgbG9vcCBpbiB0aGUganNBcnJheSBmdW5jdGlvbi4gUmVt
b3ZlZAorICAgICAgICB1bnVzZWQgSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcsIGFuZAorICAgICAgICBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmdJbnRlcm5hbC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcDogRml4ZWQgYSBoYW5kLXdyaXR0ZW4gYmluZGluZyB0aGF0IHdhcyB1c2luZwor
ICAgICAgICBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcgdG8gbWFrZSBhIHN0cmluZy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDogVXBkYXRlZCBmb3J3
YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IEN1dCBkb3duIG9u
IHVzZSBvZiBVTlVTRURfUEFSQU0uIFVzZSB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICBmb3Ig
ZXJyb3JzLCBrZWVwaW5nIHRoZSBjb2RlIGluIHRoZSBnZW5lcmF0ZWQgZmlsZSB0byBhIG1pbmlt
dW0uCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IERpdHRvLgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBEaXR0by4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgorICAgICAg
ICBVcGRhdGVkIGV4cGVjdGVkIHJlc3VsdHMgZm9yIGNoYW5nZXMgYWJvdmUuCisKKzIwMTQtMDQt
MDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJld29yayBDU1Mg
Y2FsYyBsb2dpYywgZml4aW5nIHNvbWUgcmVmZXJlbmNlIGNvdW50IG1pc3Rha2VzIGluIExlbmd0
aAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjgw
CiAgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE2NDAwODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2YzFlYTk0NjNj
NjYzYjljZDhmNDU3YmM5ODcwZjJkYzk4OWYxYmYuLjViZDVhZGUyMDhiMTU5MDJlY2Y2YTk4Nzhk
MWQ0OWZiZWFiZWIxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDQtMDYgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc29tZSBiaW5kaW5n
cyBpbXByb3ZlbWVudHMsIHdpdGggc21hbGxlciBjb2RlIHNpemUgZm9yIGVycm9yIG1lc3NhZ2Ug
Z2VuZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMxMjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW46IFVwZGF0ZWQgZm9yCisgICAgICAgIGNoYW5nZXMgaW4gSmF2YVNjcmlwdCBiaW5kaW5n
IGZ1bmN0aW9ucy4KKwogMjAxNC0wNC0wNSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHVudXNlZCB0ZXN0IGhv
b2sgc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMjdhNGZiM2VmMGFmNmE3YjI3Y2QwYTI0NTljMGU2YjMxMWE0MDVjMy4uMDBmMGMwNGE4
YzA5ZDg4MDYzNzljMDVlMjcxODk1OGM2MDZiOWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTc3Miw2ICs3NzIsNyBAQCBfX1pON1dlYkNvcmUxOGlzU3RhcnRPZlBhcmFncmFwaEVSS05TXzE1
VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3JvcwogX19aTjdXZWJDb3JlMTht
YWtlQWxsRGlyZWN0b3JpZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOHBsdWdpblNj
cmlwdE9iamVjdEVQTjNKU0M5RXhlY1N0YXRlRVBOU18xM0pTSFRNTEVsZW1lbnRFCiBfX1pON1dl
YkNvcmUxOHByb3h5U2VydmVyc0ZvclVSTEVSS05TXzNVUkxFUEtOU18xN05ldHdvcmtpbmdDb250
ZXh0RQorX19aTjdXZWJDb3JlMTh0aHJvd1RoaXNUeXBlRXJyb3JFUk4zSlNDOUV4ZWNTdGF0ZUVQ
S2NTNF8KIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9u
c0V2CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25z
RXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRp
bWVFUE5TXzEzUmVuZGVyRWxlbWVudEVSS04zV1RGMTJBdG9taWNTdHJpbmdFZApAQCAtODUxLDYg
Kzg1Miw4IEBAIF9fWk43V2ViQ29yZTIwbG9va3NMaWtlQWJzb2x1dGVVUkxFUDhOU1N0cmluZwog
X19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZsb2F0c0VmZmZmCiBfX1pON1dlYkNvcmUyMHBy
ZXZpb3VzTGluZVBvc2l0aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FaU5TXzEyRWRpdGFibGVU
eXBlRQogX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zV1RGNlN0cmluZ0UK
K19fWk43V2ViQ29yZTIwdGhyb3dHZXR0ZXJUeXBlRXJyb3JFUk4zSlNDOUV4ZWNTdGF0ZUVQS2NT
NF8KK19fWk43V2ViQ29yZTIwdGhyb3dTZXR0ZXJUeXBlRXJyb3JFUk4zSlNDOUV4ZWNTdGF0ZUVQ
S2NTNF8KIF9fWk43V2ViQ29yZTIwdG9VSW50MzJFbmZvcmNlUmFuZ2VFUE4zSlNDOUV4ZWNTdGF0
ZUVOUzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUyMUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjZjcmVh
dGVFUk5TMF82Q2xpZW50RQogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0
ZW1BdEluZGV4RWkKQEAgLTkyNCw2ICs5MjcsNyBAQCBfX1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdt
ZW50RnJvbVRleHRFUk5TXzVSYW5nZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagogX19aTjdXZWJDb3JlMjJzeXN0ZW1NYXJrZXRp
bmdWZXJzaW9uRXYKK19fWk43V2ViQ29yZTIydGhyb3dTZXF1ZW5jZVR5cGVFcnJvckVSTjNKU0M5
RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43
V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKIF9fWk43
V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNmRlbGV0ZUFsbEVudHJpZXNFdgpAQCAt
OTg0LDYgKzk4OCw3IEBAIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
QzFFdgogX19aTjdXZWJDb3JlMjdhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXJFdgogX19aTjdX
ZWJDb3JlMjdhcHBsaWNhdGlvbklzTWljcm9zb2Z0TXlEYXlFdgogX19aTjdXZWJDb3JlMjdwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWxFUktOU18zVVJMRVMyXworX19aTjdXZWJDb3JlMjdyZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3JFUk4zSlNDOUV4ZWNTdGF0ZUVQS2NTNF8KIF9fWk43V2Vi
Q29yZTI3c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzRVBGdnZFCiBfX1pON1dlYkNvcmUyOERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjdQYXNzUmVmSU5T
XzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0
Q29udGVudHNFRUUKQEAgLTEwMDIsNyArMTAwNyw2IEBAIF9fWk43V2ViQ29yZTMzc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMzZz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWVFUktOM1dURjZTdHJpbmdFUzNfCiBf
X1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1vdmVX
aWRnZXRzRXYKIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25T
Y29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnRFCi1fX1pON1dlYkNvcmUz
OG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsRVBLY3oKIF9fWk43V2ViQ29y
ZTNVUkwxMGludmFsaWRhdGVFdgogX19aTjdXZWJDb3JlM1VSTEMxRU5TXzE4UGFyc2VkVVJMU3Ry
aW5nVGFnRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlM1VSTEMxRVA1TlNVUkwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDU4YjczODYxMjUx
NGVjYmIyMzYyNjVjMjRmZGVkY2NiNTk2OGQxZWYuLjAzOTU1ZWZmMWYxZGIwM2U3YmM1NWEyZGEz
ZGJhZGQ5MDBjNTQ1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcApAQCAtNTI3LDE4ICs1MjcsOTcgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSogdGFyZ2UKICAg
ICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCAmdGFyZ2V0LT5kb2N1
bWVudCgpKTsKIH0KICAgICAKLVN0cmluZyBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJ
bnRlcm5hbChjb25zdCBjaGFyKiBmaXJzdCwgLi4uKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRo
cm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJv
cigmc3RhdGUsIGVycm9yTWVzc2FnZSkpOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRBcmd1bWVu
dE11c3RCZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBj
b25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFyZ3Vt
ZW50ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFyZ3VtZW50SW5kZXggKyAxKTsKKyAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoJyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3Vt
ZW50TmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInKSB0byAiKTsKKyAgICBpZiAo
IWZ1bmN0aW9uTmFtZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInRoZSAiKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGNvbnN0cnVjdG9yIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZSk7CisgICAgfQorICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIG11c3QgYmUgIik7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK3sKKyAgICBh
dXRvJiBjb250ZXh0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBjb250ZXh0LmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBt
YWtlU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICciLCBhdHRy
aWJ1dGVOYW1lLCAiJyBvbiBhIG5vbi0iLCBpbnRlcmZhY2VOYW1lLCAiIG9iamVjdC4iKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGNvbnN0IGNoYXIqIHN0ciA9IGZpcnN0OwotICAgIHZhX2xpc3QgbGlzdDsKLSAg
ICB2YV9zdGFydChsaXN0LCBmaXJzdCk7Ci0gICAgZG8gewotICAgICAgICBidWlsZGVyLmFwcGVu
ZChzdHIpOwotICAgICAgICBzdHIgPSB2YV9hcmcobGlzdCwgY2hhciopOwotICAgIH0gd2hpbGUg
KHN0cik7Ci0gICAgdmFfZW5kKGxpc3QpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CisgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1l
bnROYW1lLCBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7CisgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJvbmUgb2Y6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVk
VmFsdWVzKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1aWxkZXIudG9TdHJp
bmcoKSk7CiB9Ci0gICAgCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1l
bnROYW1lLCBpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOworICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiYSBmdW5jdGlvbiIpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
YnVpbGRlci50b1N0cmluZygpKTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBl
KQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBhcHBlbmRBcmd1bWVudE11c3RC
ZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIGluc3Rh
bmNlIG9mICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVkVHlwZSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorCit2b2lkIHRo
cm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICB0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgIkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIik7Cit9CisK
K3ZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBj
aGFyKiBleHBlY3RlZFR5cGUpCit7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJp
bmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmlidXRl
IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7Cit9CisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCit7CisgICAgLy8g
RklYTUU6IFRoaXMgaXMgY29uZnVzaW5nIGV4Y2VwdGlvbiB3b3JkaW5nLiBDYW4gd2UgcmV3b3Jk
IHRvIGJlIGNsZWFyZXIgYW5kIG1vcmUgc3BlY2lmaWM/CisgICAgcmV0dXJuIHRocm93Vk1FcnJv
cigmc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhpbnRlcmZh
Y2VOYW1lLCAiIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUi
KSkpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciog
YXR0cmlidXRlTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VT
dHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKK30K
Kwordm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sK
KyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgIlZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlIik7Cit9
CisKK3ZvaWQgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQoreworICAg
IHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwg
Jy4nLCBhdHRyaWJ1dGVOYW1lLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCBpbnRlcmZhY2VOYW1lKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
c3RhdGUsIG1ha2VTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBm
dW5jdGlvbk5hbWUsICIgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAppbmRleCA3MDViOGQ1NDZhYzY0ODdkNTBiOGUzMWRkNDhlZTljMjczM2I1ODIyLi40
ODM1MDQ5OWQ2NzdhMzQ2OTg3M2FjZjExMGZjNjVmNTFjZjQ2Yjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNTQsMTMgKzU0LDEwIEBAIGNsYXNzIEhh
c2hFbnRyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01TdHJpbmdMaXN0Owot
CiBjbGFzcyBDYWNoZWRTY3JpcHQ7Ci1jbGFzcyBEb2N1bWVudDsKK2NsYXNzIERPTVN0cmluZ0xp
c3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEhUTUxEb2N1bWVudDsK
IGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiAKQEAgLTY5LDYgKzY2LDIwIEBAIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiBET01XaW5kb3cmIGFjdGl2ZURPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSopOwogRE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogCitKU0M6
OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUp
OworCit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Cit2
b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhw
ZWN0ZWRUeXBlKTsKK3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYp
Owordm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOworCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFZhbHVlcyk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVu
dEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50
ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3Rl
ZFR5cGUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2
YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CisK
IC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjb25zdHJ1Y3RvciBvYmplY3RzIGluIHRoZSBKU0MgYmlu
ZGluZ3MuCiBjbGFzcyBET01Db25zdHJ1Y3Rvck9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIg
ewogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CkBAIC05NywyMCArMTA4LDIwIEBAIGlu
bGluZSBKU0RPTUdsb2JhbE9iamVjdCogZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKIH0KIAotdGVtcGxhdGU8Y2xh
c3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPHR5
cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01TdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
aWYgKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBzdHJ1Y3R1
cmU7CiAgICAgcmV0dXJuIGNhY2hlRE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNs
YXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVh
dGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7CiB9
CiAKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQordGVtcGxhdGU8
dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gaXMgd3JvbmcuICBJdCB1c2VzIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0IGZv
ciBjcmVhdGluZyB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZS4KKyAgICAvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBpcyB3cm9uZy4gSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3IgY3Jl
YXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCiAgICAgcmV0dXJuIGdldERPTVN0cnVjdHVy
ZTxXcmFwcGVyQ2xhc3M+KGV4ZWMtPnZtKCksIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90
b3R5cGUoZXhlYykpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBK
U0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5s
aW5lIEpTQzo6SlNPYmplY3QqIGdldERPTVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0M6
OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIEpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSktPnN0b3JlZFByb3Rv
dHlwZSgpKSk7CiB9CkBAIC0xMjUsMjEgKzEzNiwyMSBAQCBpbmxpbmUgdm9pZCogd3JhcHBlckNv
bnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciopCiAgICAgcmV0
dXJuICZ3b3JsZDsKIH0KIAotaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0SW5saW5lQ2FjaGVkV3Jh
cHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKikgeyByZXR1cm4gMDsgfQoraW5saW5lIEpTRE9N
V3JhcHBlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKikg
eyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGJvb2wgc2V0SW5saW5lQ2FjaGVkV3JhcHBlcihE
T01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIGNsZWFySW5saW5lQ2Fj
aGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01XcmFwcGVyKikgeyByZXR1
cm4gZmFsc2U7IH0KIAogaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBl
cihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBTY3JpcHRXcmFwcGFibGUqIGRvbU9iamVjdCkKIHsK
ICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG9tT2JqZWN0LT53cmFwcGVyKCk7CiB9CiAKIGlu
bGluZSBKU0M6OkpTQXJyYXlCdWZmZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICghd29y
bGQuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBidWZmZXItPm1fd3JhcHBlci5nZXQoKTsKIH0KIApAQCAtMTc1LDE0ICsx
ODYsMTQgQEAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqIGQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0Q2Fj
aGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0KQor
dGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNo
ZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QpCiB7
CiAgICAgaWYgKEpTQzo6SlNPYmplY3QqIHdyYXBwZXIgPSBnZXRJbmxpbmVDYWNoZWRXcmFwcGVy
KHdvcmxkLCBkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4g
d29ybGQubV93cmFwcGVycy5nZXQoZG9tT2JqZWN0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBl
cihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xh
c3MqIHdyYXBwZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBl
ckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQogewogICAgIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiBvd25lciA9IHdyYXBwZXJPd25lcih3b3JsZCwgZG9tT2JqZWN0KTsK
ICAgICB2b2lkKiBjb250ZXh0ID0gd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9iamVjdCk7CkBA
IC0xOTEsNyArMjAyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBX
cmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBlcihET00KICAgICB3ZWFrQWRkKHdv
cmxkLm1fd3JhcHBlcnMsICh2b2lkKilkb21PYmplY3QsIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
Pih3cmFwcGVyLCBvd25lciwgY29udGV4dCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRE9N
Q2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNz
KiB3cmFwcGVyKQordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJD
bGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQogewogICAgIGlmIChj
bGVhcklubGluZUNhY2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE5OSw3ICsyMTAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xh
c3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRAog
fQogCiAjZGVmaW5lIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIGNsYXNzTmFtZSwg
b2JqZWN0KSBjcmVhdGVXcmFwcGVyPEpTIyNjbGFzc05hbWU+KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8Y2xhc3NOYW1lKj4ob2JqZWN0KSkKLXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywg
Y2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyYXBwZXIoSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIG5vZGUpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFwcGVy
KiBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNz
KiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQoIWdldENhY2hlZFdyYXBw
ZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBub2RlKSk7CkBAIC0yMDgsNyArMjE5LDcgQEAgdGVt
cGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTRE9NV3Jh
cHBlciogY3JlYXRlV3JhcHBlcigKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdGVtcGxhdGU8
Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3
cmFwKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmplY3Qp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxp
bmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9N
Q2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7CkBAIC0yMTcsMTMgKzIyOCwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBXcmFw
cGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNET01H
bG9iYQogICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdyYXBwZXJDbGFzcz4oZ2xvYmFsT2JqZWN0
LCBkb21PYmplY3QpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERP
TUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGdldEV4aXN0aW5nV3JhcHBlcihKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQordGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1
ZSBnZXRFeGlzdGluZ1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9N
Q2xhc3MqIGRvbU9iamVjdCkKIHsKICAgICBBU1NFUlQoZG9tT2JqZWN0KTsKICAgICByZXR1cm4g
Z2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGRvbU9iamVjdCk7CiB9CiAK
LXRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0M6
OkpTVmFsdWUgY3JlYXRlTmV3V3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBET01DbGFzcyogZG9tT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0
eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSBjcmVhdGVOZXdXcmFwcGVyKEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBkb21PYmplY3QpCiB7CiAg
ICAgQVNTRVJUKGRvbU9iamVjdCk7CiAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGdsb2Jh
bE9iamVjdC0+d29ybGQoKSwgZG9tT2JqZWN0KSk7CkBAIC0yMzksNyArMjUwLDcgQEAgdm9pZCBh
ZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogY29uc3QgSlNDOjpIYXNo
VGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SGFz
aFRhYmxlJiBzdGF0aWNUYWJsZSk7CiAKLXZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiA9IDApOwordm9pZCBy
ZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBD
YWNoZWRTY3JpcHQqID0gbnVsbHB0cik7CiB2b2lkIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqKTsKIAogLy8gQ29udmVydCBhIERPTSBpbXBsZW1lbnRhdGlvbiBleGNlcHRp
b24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNlcHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBzdGF0
ZS4KQEAgLTMyNSwyMiArMzM2LDIyIEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVu
Y2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zCiB7CiAgICAg
SlNDOjpKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFvYmpl
Y3QpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
VmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB0
aHJvd1NlcXVlbmNlVHlwZUVycm9yKCpleGVjKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgSlNDOjpKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAobGVuZ3RoVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIp
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4
ZWMpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBsZW5ndGggPSBsZW5n
dGhWYWx1ZS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBv
YmplY3Q7CiB9CkBAIC0zNjQsMzEgKzM3NSwyNCBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgcmV0dXJuIHZpZXctPndyYXAoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VD4gcHRyKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFQ+
IHB0cikKIHsKICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8VD4mIHZlY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCiB7Ci0gICAgSlNDOjpKU0FycmF5KiBh
cnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNpemUoKSk7Ci0KKyAg
ICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRy
LCB2ZWN0b3Iuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvci5zaXpl
KCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCB2ZWN0b3JbaV0pKTsKLQogICAgIHJldHVybiBhcnJheTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8VD4+JiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8VD4+JiB2ZWN0b3IpCiB7Ci0gICAgSlNDOjpK
U0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNpemUo
KSk7Ci0KKyAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyLCB2ZWN0b3Iuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZl
Y3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGks
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB2ZWN0b3JbaV0uZ2V0KCkpKTsKLQogICAgIHJldHVy
biBhcnJheTsKIH0KIApAQCAtMzk3LDQ5ICs0MDEsNDAgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdmFsdWUpOwogfQogCi10ZW1wbGF0
ZSA8Y2xhc3MgVD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzIHsKLSAgICBzdGF0aWMgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFQmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEpTVmFsdWVUcmFpdHMgeworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgYXJyYXlK
U1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBUJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgV1RGOjpnZXRQdHIodmFsdWUpKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+
Ci1zdHJ1Y3QgSlNWYWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICBzdGF0aWMgaW5saW5lIEpTQzo6
SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFp
dHM8U3RyaW5nPiB7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB2YWx1ZSk7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IEpTVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKLSAg
ICBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IGZsb2F0JiB2YWx1ZSkKK3RlbXBsYXRlPD4gc3Ry
dWN0IEpTVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFycmF5
SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgZmxvYXQm
IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdW1iZXIodmFsdWUpOwogICAg
IH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzPHVuc2lnbmVkIGxvbmc+
IHsKLSAgICBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVlKQor
dGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czx1bnNpZ25lZCBsb25nPiB7CisgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBhcnJheUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIEpTQzo6anNOdW1iZXIodmFsdWUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci1KU0M6OkpTVmFsdWUganNBcnJheShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5PiYgaXRlcmF0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+IEpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiB7CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBsaXN0OwotICAgIHR5cGVuYW1lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGl0ZXJhdG9yLmVuZCgpOwotICAgIHR5cGVkZWYgSlNWYWx1ZVRyYWl0czxU
PiBUcmFpdHNUeXBlOwotCi0gICAgZm9yICh0eXBlbmFtZSBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikKLSAgICAgICAgbGlzdC5hcHBlbmQoVHJhaXRzVHlwZTo6YXJyYXlKU1ZhbHVlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgKml0ZXIpKTsKLQotICAgIHJldHVybiBKU0M6OmNvbnN0cnVjdEFy
cmF5KGV4ZWMsIDAsIGdsb2JhbE9iamVjdCwgbGlzdCk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogdmVjdG9yKQorICAgICAgICBsaXN0LmFwcGVuZChKU1ZhbHVlVHJhaXRzPFQ+OjphcnJheUpT
VmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0LCBlbGVtZW50KSk7CisgICAgcmV0dXJuIEpTQzo6Y29u
c3RydWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKIH0KIAogSlND
OjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwpAQCAtNDQ4LDcgKzQ0Myw3IEBAIGlubGluZSBQYXNz
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0b0FycmF5QnVmZmVyVmlldyhKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyogd3JhcHBlciA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOwogICAgIGlmICgh
d3JhcHBlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CiB9CiAKQEAgLTQ2MiwxMCArNDU3LDkgQEAgaW5saW5l
IFBhc3NSZWZQdHI8SlNDOjpVaW50MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEoKIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiB0
b0Zsb2F0MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVU
eXBlZFZpZXc8SlNDOjpGbG9hdDMyQWRhcHRvcj4odmFsdWUpOyB9CiBpbmxpbmUgUGFzc1JlZlB0
cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7
IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6RmxvYXQ2NEFkYXB0b3I+KHZhbHVl
KTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7CiAKLXRlbXBsYXRlPD4K
LXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKK3RlbXBsYXRlPD4gc3RydWN0IE5h
dGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYg
aW5kZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC00NzMsOCArNDY3LDcgQEAgc3RydWN0IE5hdGl2
ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBO
YXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFs
dWVUcmFpdHM8dW5zaWduZWQ+IHsKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCYgaW5k
ZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpCkBAIC00
ODgsOCArNDgxLDcgQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7CiAgICAg
fQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewogICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUsIGZsb2F0JiBpbmRleGVkVmFsdWUpCiAgICAgewogICAgICAgICBpbmRleGVkVmFs
dWUgPSBqc1ZhbHVlLnRvRmxvYXQoZXhlYyk7CkBAIC00OTcsOCArNDg5LDcgQEAgc3RydWN0IE5h
dGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPGNsYXNzIFQs
IGNsYXNzIEpTVD4KLVZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxSZWZQ
dHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNWYWx1ZSB2YWx1ZSkpCiB7CiAgICAgaWYgKCFp
c0pTQXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPj4oKTsKQEAg
LTUxMiwxNSArNTAzLDE0IEBAIFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXko
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwKICAgICAgICAgaWYgKGVs
ZW1lbnQuaW5oZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZCgoKnRvVCkoZWxlbWVudCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgQXJyYXkgZWxl
bWVudCB0eXBlIikpOworICAgICAgICAgICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKmV4
ZWMpOwogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4+KCk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1WZWN0
b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZh
bHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOwogICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CkBAIC01NDMsMTQgKzUzMywxMyBA
QCBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgot
VmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
c3RhcnRJbmRleCA9IDApCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVB
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBzdGFydEluZGV4ID0gMCkKIHsK
ICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIEFTU0VSVChz
dGFydEluZGV4IDw9IGxlbmd0aCk7CiAKICAgICBWZWN0b3I8VD4gcmVzdWx0OwotICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CiAgICAgdHlwZWRlZiBOYXRpdmVWYWx1
ZVRyYWl0czxUPiBUcmFpdHNUeXBlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7
IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtNjAxLDQxICs1OTAsMjIgQEAgaW5saW5lIEF0b21pY1N0
cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXA+Ci1pbmxpbmUgY29uc3QgSlNDOjpIYXNo
VGFibGVWYWx1ZSogZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQordGVtcGxhdGU8
dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBnZXRT
dGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgY29uc3QgSlNDOjpIYXNoVGFi
bGUqIHRhYmxlID0gVGhpc0ltcDo6aW5mbygpLT5wcm9wSGFzaFRhYmxlKGV4ZWMpOworICAgIGNv
bnN0IEpTQzo6SGFzaFRhYmxlKiB0YWJsZSA9IERPTUNsYXNzOjppbmZvKCktPnByb3BIYXNoVGFi
bGUoZXhlYyk7CiAgICAgaWYgKCF0YWJsZSkKLSAgICAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdEVudHJ5V2l0aG91dENhY2hpbmc8dHlwZW5hbWUgVGhpc0ltcDo6QmFzZT4oZXhlYywgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91
dENhY2hpbmc8dHlwZW5hbWUgRE9NQ2xhc3M6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAg
ICAgY29uc3QgSlNDOjpIYXNoVGFibGVWYWx1ZSogZW50cnkgPSB0YWJsZS0+ZW50cnkoZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8g
cGFyZW50Ci0gICAgICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNo
aW5nPHR5cGVuYW1lIFRoaXNJbXA6OkJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPHR5cGVuYW1lIERP
TUNsYXNzOjpCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBlbnRyeTsKIH0K
IAotdGVtcGxhdGUgPD4KLWlubGluZSBjb25zdCBKU0M6Okhhc2hUYWJsZVZhbHVlKiBnZXRTdGF0
aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPEpTRE9NV3JhcHBlcj4oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSkKK3RlbXBsYXRlPD4gaW5saW5lIGNvbnN0IEpTQzo6SGFz
aFRhYmxlVmFsdWUqIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8SlNET01X
cmFwcGVyPihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xh
c3MgSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uIHsKLSAgICB0eXBlZGVmIGNoYXIgWWVzVHlw
ZTsKLSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgIH07
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBkZWNsdHlwZShzdGF0aWNf
Y2FzdDxVKj4obnVsbHB0ciktPm1lbW9yeUNvc3QoKSwgWWVzVHlwZSgpKSB0ZXN0KGludCk7Ci0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBOb1R5cGUgdGVzdCguLi4pOwot
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YodGVzdDxUPigw
KSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQogZW51bSBTZWN1cml0eVJlcG9ydGluZ09wdGlv
biB7CiAgICAgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yLAogICAgIFJlcG9ydFNlY3VyaXR5RXJy
b3IsCkBAIC02NDgsMTAgKzYxOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSosIFNlY3VyaXR5UmVwb3J0
aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcik7CiB9OwogICAgIAotICAgIAotI2RlZmlu
ZSBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoLi4uKSBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmdJbnRlcm5hbChfX1ZBX0FSR1NfXywgKGNvbnN0IGNoYXIqKW51bGxwdHIpCi1T
dHJpbmcgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50ZXJuYWwoY29uc3QgY2hhcios
IC4uLik7Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU0RPTUJp
bmRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0
b20uY3BwCmluZGV4IGU1MDRkYWYxOGM1MGY3NTdjNzUyZDQ1NGMyYWI0NzlmYjliNWVmMDMuLmVl
YzdlODgyMzQzNmI0MWVhZGRiMWY0YjA1MmRiNmEyZTg1ZGQ5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB9CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQXJndW1lbnQgMiAoJ3N1Y2Nlc3NDYWxsYmFjaycpIiwgIiB0byBOYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCAiQXJndW1lbnQgMiAoJ3N1Y2Nlc3NDYWxsYmFjaycpIHRvIE5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTTmF2
aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogICAgIFJlZlB0cjxO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMikuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIWV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLmlzRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3Vt
ZW50IDMgKCdlcnJvckNhbGxiYWNrJykiLCAiIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCAiQXJndW1lbnQgMyAoJ2Vycm9yQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDAyMDFlYjk5YjM0YjYyNmY2
YjA4MTBlYjhhZjY2ZjUxY2Y2OTM2OTIuLjFjYzU2OGQ0ZThiNWU5NjgyOTU3MzA2NzY4N2YwMDVl
MzViMmIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTMyLDggKzMyLDggQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLU9CSkNfQ0xBU1MgV2ViU2NyaXB0T2JqZWN0OwogT0JKQ19DTEFT
UyBKU0NvbnRleHQ7CitPQkpDX0NMQVNTIFdlYlNjcmlwdE9iamVjdDsKICNlbmRpZgogCiBzdHJ1
Y3QgTlBPYmplY3Q7CkBAIC01NCw4ICs1NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogY2xhc3MgRnJhbWU7Citj
bGFzcyBIVE1MRG9jdW1lbnQ7CitjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIFNjcmlw
dFNvdXJjZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdpZGdldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMGMzNmJkYTVhZTNmNTQwZDhiNGQ0NjU2ZjI3YWU3NDM3NDFmYWQ0Ni4uMDgyMDkyYTIxZDQ3
YWE0MDE3ODU0ZjdhYzA0ZjU3MjBjMzZlMmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIxNDUsMTkgKzIxNDUsMTQg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0
ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3Rv
ciQvKSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3QifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NO
YW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVs
cGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIn0gPSAxOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihzbG90QmFzZSkpIHtc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZyhcIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJyRuYW1lJyBvbiBhIG5vbi0kaW50ZXJmYWNlTmFt
ZSBvYmplY3QuXCIpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiVGhlIFwiLCBcIiRp
bnRlcmZhY2VOYW1lXCIsIFwiLlwiLCBcIiRuYW1lXCIsIFwiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oc2xvdEJhc2UpKVxuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKTsKQEAgLTIyNjcsNyArMjI2Miw2IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6
OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9u
In0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFS
QU0oZXhlYyk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGlzTnVsbGFibGU7CiAKICAgICAgICAgICAg
ICAgICBteSAkY2FjaGVJbmRleCA9IDA7CkBAIC0yMzA5LDcgKzIzMDMsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkaW50ZXJmYWNlTmFtZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpIGlmICEk
YXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1
ZSByZXN1bHQgPSAgdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqLmdl
dCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBvYmouZ2V0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjMzOSwxMiArMjMzMywx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0
ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRU
aGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOworCiAg
ICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTtcbiIpOwogICAgICAgICAgICAgfQogCkBAIC0yMzU4LDE1ICsyMzUzLDE4IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgICAgIG15ICRj
b25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1
Y3RvciI7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUg
JHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpO1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Q
cm94eVRvSlNPYmplY3QifSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
RW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9IHRv
JHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOworICAgICAgICAg
ICAgfSBlbHNpZiAoQ29uc3RydWN0b3JTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSkpIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Y29u
c3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGRvbU9iamVjdCA9ICIgLiBHZXRDYXN0aW5nSGVscGVy
Rm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
O1xuIikgaWYgQ29uc3RydWN0b3JTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGJhc2VW
YWx1ZSk7XG4iKSBpZiAhQ29uc3RydWN0b3JTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2Nv
bnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihiYXNlVmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWRvbU9iamVjdClcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpO1xuIik7CkBAIC0yNDQ0LDkgKzI0NDIsOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0
aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CisKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIFVOVVNFRF9QQVJBTShzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVy
KGV4ZWMsIGluZGV4LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKQEAgLTI0OTIsNyArMjQ5MCw2IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NO
YW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKQEAgLTI1MDAsNyArMjQ5Nyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSAiIC4gR2V0
Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJU
aGUgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIsIFwiJG5hbWVcIiwgXCIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIpKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1NDAsNyArMjUzNyw2IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3JcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1l
XCIpLCB2YWx1ZSk7XG4iKTsKLQogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gb2JqZWN0XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywg
XCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CkBAIC0yNTYxLDcgKzI1NTcsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCF2YWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpICYmICF2YWx1ZS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpIHtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZyhcIlRoZSBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwgXCIkbmFtZVwiLCBcIiBhdHRy
aWJ1dGUgbXVzdCBhbiBpbnN0YW5jZSBvZiBcIiwgXCIkYXJnVHlwZVwiKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dB
dHRyaWJ1dGVUeXBlRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBc
IiRhcmdUeXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTI3MzUsNyArMjczMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNh
c3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkg
LiAiKHRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgbXkgJGRvbUZ1bmN0aW9u
TmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJDYW4g
b25seSBjYWxsIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiLlwiLCBcIiRkb21GdW5jdGlvbk5h
bWVcIiwgXCIgb24gaW5zdGFuY2VzIG9mIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIpKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlv
bk5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
ICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpOwpAQCAtMjgzOCwxMiArMjgzNCwxMyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBpZiAo
JGNvbnN0YW50LT50eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmdPck51bGwoZXhl
YywgU3RyaW5nKCIgLiAkY29uc3RhbnQtPnZhbHVlIC4gIikpKTtcbiIpOwogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVu
Y29kZWRKU1ZhbHVlICR7Z2V0dGVyfShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIiAuICRjb25zdGFudC0+dmFsdWUgLiAiKSk7XG4i
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4i
KTsKQEAgLTMxNzksMjIgKzMxNzYsMTkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
fSI7CiAgICAgfQogICAgIAotICAgIAotICAgIG15ICRwcmV0dHlGdW5jdGlvbk5hbWU7CisgICAg
bXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKICAgICBpZiAoISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkbmFtZSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICAkcHJldHR5RnVuY3Rpb25OYW1l
ID0gIlwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIsIFwiJG5hbWVcIiI7CisgICAgICAgICRxdW90
ZWRGdW5jdGlvbk5hbWUgPSAiXCIkbmFtZVwiIjsKICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBH
ZW5lcmF0ZUNhbGxXaXRoKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbFdpdGgifSwgXEAkb3V0cHV0QXJyYXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkiLCAkZnVuY3Rpb24pKTsKICAgICB9IGVsc2UgewotICAgICAgICAkcHJldHR5RnVuY3Rp
b25OYW1lID0gIlwidGhlIFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiIGNvbnN0cnVjdG9yXCIi
OworICAgICAgICAkcXVvdGVkRnVuY3Rpb25OYW1lID0gIm51bGxwdHIiOwogICAgIH0KIAogICAg
ICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVz
eyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAgICBteSAkYXJndW1lbnRJbmRleCA9IDA7CiAgICAg
Zm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAg
ICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwotICAgICAgICAkYXJndW1lbnRJbmRl
eCA9ICRhcmd1bWVudEluZGV4ICsgMTsKICAgICAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgd2l0
aCBbT3B0aW9uYWxdIHNob3VsZCBnZW5lcmF0ZSBhbiBlYXJseSBjYWxsIHdpdGggZmV3ZXIgYXJn
dW1lbnRzLgogICAgICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIFtPcHRpb25hbD0uLi5d
IHNob3VsZCBub3QgZ2VuZXJhdGUgdGhlIGVhcmx5IGNhbGwuCiAgICAgICAgICMgT3B0aW9uYWwg
RGljdGlvbmFyeSBhcmd1bWVudHMgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBkZWZhdWx0IG9m
IGVtcHR5IGRpY3Rpb25hcnkuCkBAIC0zMjMzLDcgKzMyMjcsNyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVm
UHRyPCRhcmdUeXBlPiAkbmFtZTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkp
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoXCJBcmd1bWVudCBcIiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIs
IFwiJykgdG8gXCIsICRwcmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgYSBmdW5jdGlvblwi
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsICRhcmdzSW5k
ZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtc
biIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9IGNy
ZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihleGVjLCBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKQEAgLTMyNDMsNyArMzIzNyw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghZXhlYy0+YXJndW1lbnQoJGFyZ3NJ
bmRleCkuaXNGdW5jdGlvbigpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBcIiwgXCIkYXJndW1lbnRJbmRleFwiLCBcIiAo
J1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRwcmV0dHlGdW5jdGlvbk5hbWUsIFwiIG11c3Qg
YmUgYSBmdW5jdGlvblwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhl
YywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5j
dGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMp
IHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rp
b24uaCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVm
UHRyPCRhcmdUeXBlPiAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJh
Y2tDbGFzc05hbWV9PihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4KSk7
XG4iKTsKQEAgLTMyNzEsNyArMzI2NSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVs
ZW1lbnRUeXBlPiAkbmFtZTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAkYXJnc0luZGV4LCBjb3VudCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS5p
bmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBcIiwgXCIkYXJndW1l
bnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRwcmV0dHlGdW5jdGlv
bk5hbWUsIFwiIG11c3QgYmUgYSBmdW5jdGlvblwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqZXhlYywgaSwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5j
dGlvbk5hbWUsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVuZCh0byRhcmdUeXBlKGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuIikKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMjk5LDEwICszMjkzLDkgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgJGVudW1zID0gJGVudW1zIC4gIiwgXFxcIiIgLiAkZW51bVZhbHVl
IC4gIlxcXCIiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHB1c2ggKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCIgLiBqb2lu
KCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwotICAgICAgICAgICAgcHVzaCAoQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwg
XCIgKCdcIiwgXCIkbmFtZVwiLCBcIicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBt
dXN0IGJlIG9uZSBvZjogXCIsIFwiJGVudW1zXCIpKTtcbiIpOworICAgICAgICAgICAgcHVzaCAo
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJy
b3IoKmV4ZWMsICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVv
dGVkRnVuY3Rpb25OYW1lLCBcIiRlbnVtc1wiKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRl
IGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAj
IGludGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBs
ZW1lbnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCkBAIC0zMzE0LDggKzMzMDcsOCBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1
ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSI7CiAgICAgICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
ICRhcmdzSW5kZXggJiYgISR7YXJnVmFsdWV9LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgISR7YXJn
VmFsdWV9LmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSlcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBc
IiRhcmd1bWVudEluZGV4XCIsIFwiICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0
eUZ1bmN0aW9uTmFtZSwgXCIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBcIiwgXCIkYXJnVHlwZVwi
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghJHthcmdWYWx1ZX0uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhJHthcmdWYWx1ZX0uaW5oZXJp
dHMoSlMke2FyZ1R5cGV9OjppbmZvKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKmV4
ZWMsICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVu
Y3Rpb25OYW1lLCBcIiRhcmdUeXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCkBAIC00NDc0LDcgKzQ0NjcsNyBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNo
KEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4dCIpOwogICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2Fz
dGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghY29udGV4dClcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIiR7aW50ZXJmYWNlTmFtZX0gY29uc3RydWN0
b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZVwiKSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVj
dG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpleGVjLCBcIiR7aW50ZXJmYWNlTmFtZX1cIik7
XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIq
Y2FzdGVkVGhpcy0+ZG9jdW1lbnQoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCBlY2RiNDQ1MTQwOGM4MmVhN2FlOTIwZjBlODcxNTViOTllODA1YjhkLi43NzMzNGZi
ZjViNjM2ZjMyMTZmMGU5NTZlMjk5MjIwZTljYTI5MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTQ3LDI4ICsxNDcsMjEgQEAgYm9vbCBKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2V4Y2l0aW5nQXR0cicgb24gYSBu
b24tVGVzdEFjdGl2ZURPTU9iamVjdCBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRo
ZSAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICIuIiwgImV4Y2l0aW5nQXR0ciIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURP
TU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKICAgICB9CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZXhjaXRp
bmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOwpAQCAtMTg3LDcgKzE4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1
bmN0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2
ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgIi4i
LCAiZXhjaXRpbmdGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0QWN0aXZlRE9N
T2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7
CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTIwNiw3ICsxOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3Nh
Z2UoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3Rp
dmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICIu
IiwgInBvc3RNZXNzYWdlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RBY3RpdmVET01PYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0QWN0
aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAgICAgVGVz
dEFjdGl2ZURPTU9iamVjdCYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwCmluZGV4IGQyYjQ2MDM2NjU3OTQ4ODg5NDQ3MzdjZTkzOTI4NjM0NWUzMGI4MjUuLjQ0YzQx
NWQ5YjJmM2E0NTRhMGFiNGE2MjE2ZGRlODdiYzQ1YjkxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTUzLDEwICsxNTMsOCBAQCBib29sIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpT
VmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OwpAQCAtMTczLDcgKzE3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgIi4iLCAiYW5vdGhl
ckZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RDdXN0b21O
YW1lZEdldHRlciIsICJhbm90aGVyRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbmZvKCkpOwogICAg
IFRlc3RDdXN0b21OYW1lZEdldHRlciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcAppbmRleCAyZDk2ZjZjYjBkZmYyYmVjODA1YzczMTFkYmZmYWYyNjdiNjU1ZDMxLi45
YWQ5ZWVmZGJkYzhlOGZlMzYzMzhkYjBjYmZjY2RiNTdmMWViNjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xODAsMTYgKzE4MCwxMSBAQCBib29sIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cjEnIG9uIGEgbm9u
LVRlc3RFdmVudENvbnN0cnVjdG9yIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICIuIiwgImF0dHIxIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIikpOwor
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwg
ImF0dHIxIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0RXZlbnRD
b25zdHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTk5LDI2ICsxOTQsMTkgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cjInIG9uIGEgbm9u
LVRlc3RFdmVudENvbnN0cnVjdG9yIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICIuIiwgImF0dHIyIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudENvbnN0cnVjdG9yIikpOwor
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwg
ImF0dHIyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0RXZlbnRD
b25zdHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuYXR0cjIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFs
dWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlm
ICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDk4NjQzZjYyZmUyYjY0NTY2ZDllZWNmM2U2ZTFm
NDdhOWVhYTVhYTcuLmZhM2JlZTc4MjkzNDYxYjk5NzlmYjk4NmVkYmUyNWVjN2Q4MzE4YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTg0LDEwICsxODQsOCBAQCBib29sIEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZQogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpT
VmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0RXZlbnRUYXJnZXQqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRU
YXJnZXQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkb21PYmplY3Qp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMjEzLDcgKzIxMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEV2ZW50
VGFyZ2V0IiwgIi4iLCAiaXRlbSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRUYXJn
ZXQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZl
bnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgVGVzdEV2ZW50VGFyZ2V0JiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtMjM0LDcgKzIzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RFdmVudFRhcmdl
dCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIi4iLCAiYWRkRXZlbnRMaXN0ZW5lciIsICIg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRUYXJnZXQiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRUYXJnZXQiLCAiYWRkRXZlbnRMaXN0
ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgVGVzdEV2ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsK
QEAgLTI0OSw3ICsyNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbgogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RFdmVudFRhcmdldCIsICIuIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFyZ2V0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50VGFyZ2V0IiwgInJlbW92ZUV2ZW50TGlz
dGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dEV2ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRlc3RFdmVudFRhcmdldCYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7
CkBAIC0yNjQsNyArMjYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudChFeGUKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIsICJkaXNwYXRjaEV2ZW50IiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRhcmdldCIsICJkaXNwYXRjaEV2ZW50Iik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdl
dDo6aW5mbygpKTsKICAgICBUZXN0RXZlbnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCmluZGV4IDFiZmNlNWNlMzc3Mjk1MDg0OTI0YWViNThkZTBiNjczMDcxNmYwNTcuLjVlM2E2
ZWIzMGU5NjFlZWJmNTc4N2U3YzE2ZmJjZjc5YTJmYWM2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCkBAIC0xMzksMjYgKzEzOSwxOSBAQCBib29sIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRp
b24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ25hbWUn
IG9uIGEgbm9uLVRlc3RFeGNlcHRpb24gb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RFeGNlcHRpb24iLCAiLiIsICJuYW1lIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RFeGNlcHRpb24iKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0RXhj
ZXB0aW9uIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdEV4Y2VwdGlvbiIsICJuYW1lIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0RXhjZXB0aW9uJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5uYW1lKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAxMzQ4NDVlYTRkYjE2OGIxNmNlNmFiNTAzMzhm
MWRkZGMzMzU0YzNiLi5mOGZmYjY5YWFjNDUxMzFjYmYxZDI4NDllMDA0ZWJkYTk5MGU3ZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMTksMTAgKzEx
OSw4IEBAIGJvb2wgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggZGVkMWJkZmJmNzNmNGM4ZDE0NzMxYWVjZjRkYTFmNzdjYTZlNTJkYi4uZDZjMGZlZTBiMGUy
MzkzN2Q3OWVkMTUzMDZkZDBlYTIyZmY3ZDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAg
LTE3Myw3ICsxNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhYwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsICJUZXN0SW50ZXJmYWNlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQg
ZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVj
dG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIpOwogICAg
IFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoKmNv
bnRleHQsIHN0cjEsIHN0cjIsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTQxNiw3ICs0MTYsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0
YXRlKgogewogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0cigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00MjgsNyArNDI3LDYg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEoKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RJbnRlcmZh
Y2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTQzOSwxNiArNDM3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBK
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ2ltcGxlbWVudHNTdHIxJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAi
aW1wbGVtZW50c1N0cjEiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50
c1N0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuaW1wbGVtZW50
c1N0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNDYwLDE2
ICs0NTMsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1wbGVtZW50
c1N0cjInIG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRzU3RyMiIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikp
OworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJm
YWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5pbXBsZW1lbnRzU3RyMigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC00ODEsMTQgKzQ2OSwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0
cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdpbXBsZW1lbnRzU3RyMycgb24gYSBub24tVGVzdElu
dGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVy
ZmFjZSIsICIuIiwgImltcGxlbWVudHNTdHIzIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbXBsZW1lbnRzU3RyMyhleGVjKSk7
CiB9CkBAIC00OTksMTYgKzQ4MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdpbXBsZW1lbnRzTm9kZScgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVu
dHNOb2RlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLmltcGxlbWVudHNOb2RlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC01MjEsNyArNTAwLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXQKIHsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01MzMsNyArNTExLDYgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0
aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtNTQ0LDE2ICs1MjEsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhl
YywKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdzdXBwbGVtZW50YWxTdHIxJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNl
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwg
Ii4iLCAic3VwcGxlbWVudGFsU3RyMSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxTdHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoJmltcGwpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01NjUsMTYgKzUzNywxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0
ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBsZW1lbnRhbFN0cjInIG9uIGEgbm9uLVRlc3RJ
bnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRl
cmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMigmaW1wbCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTU4NiwxNCArNTUzLDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3VwcGxlbWVudGFsU3RyMycgb24gYSBu
b24tVGVzdEludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjMiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMi
KTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVt
ZW50YWxTdHIzKGV4ZWMpKTsKIH0KQEAgLTYwNCwxNiArNTY3LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2Rl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3VwcGxlbWVudGFsTm9kZScgb24gYSBub24tVGVzdElu
dGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVy
ZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE5vZGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxOb2RlKCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTYyMSwxMCArNTc5LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIAogI2VuZGlmCiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYg
KCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAt
NjU1LDcgKzYxMSw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwKIHZvaWQgc2V0SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgY29uc3QgU3RyaW5nJiBu
YXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjY4LDEwICs2MjMsOSBAQCB2b2lkIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdAogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxl
bWVudHNTdHIyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC02ODcs
MTAgKzY0MSw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjMiLCAiIHNldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNT
dHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1wbGVt
ZW50c1N0cjMoZXhlYywgdmFsdWUpOwpAQCAtNzAyLDEwICs2NTUsOSBAQCB2b2lkIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImlt
cGxlbWVudHNOb2RlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC03
MjEsNyArNjczLDYgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBjb25zdCBTdHJpbmcm
IG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC03MzQsMTAgKzY4NSw5IEBAIHZvaWQgc2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplCiB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJz
dXBwbGVtZW50YWxTdHIyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
QEAgLTc1MywxMCArNzAzLDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxT
dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QKIHZvaWQgc2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
KiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbFN0cjMiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXN0ZWRU
aGlzLT5zZXRTdXBwbGVtZW50YWxTdHIzKGV4ZWMsIHZhbHVlKTsKQEAgLTc2OCwxMCArNzE3LDkg
QEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdElu
dGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE5vZGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtNzk0LDcgKzc0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
MShFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c01ldGhv
ZDEiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50
c01ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIGltcGwuaW1wbGVtZW50c01ldGhvZDEoKTsKQEAgLTgwOSw3ICs3
NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVy
ZmFjZSIsICIuIiwgImltcGxlbWVudHNNZXRob2QyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAg
VGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTgzOCw3ICs3ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01l
dGhvZDMoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNN
ZXRob2QzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5pbXBsZW1lbnRzTWV0aG9kMyhleGVjKSk7CiB9CkBAIC04NjAsNyArODA4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2Ui
LCAiLiIsICJzdXBwbGVtZW50YWxNZXRob2QxIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJ
bnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBU
ZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoJmltcGwpOwpAQCAtODc1LDcgKzgyMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwgIi4i
LCAic3VwcGxlbWVudGFsTWV0aG9kMiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJm
YWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdElu
dGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgVGVzdElu
dGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMikKQEAgLTkwNCw3ICs4NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
MwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgInN1cHBsZW1lbnRhbE1ldGhv
ZDMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+c3VwcGxlbWVudGFsTWV0aG9kMyhleGVjKSk7CiB9CkBAIC05MjMsMzMgKzg3MSwy
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRobwogLy8gQ29uc3RhbnQgZ2V0dGVycwogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQxKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMSkpOwogfQogCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigyKSk7CiB9CiAKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotRW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQxKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQxKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxKSk7CiB9CiAKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQyKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigyKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA0
ZmUwZGRhYjg0NDAwMTFiNjNjY2FkODY5NzViZGY4YmM0MWZmM2RlLi44Yjg5NzA3Y2Q4OTZmOTNj
YmEyYWRmYzRhNTY4MzQwNjhkNzI0N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xMjYsMTAgKzEyNiw4IEBAIGJvb2wgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0xNDYsMTMgKzE0NCwxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICIuIiwgIm1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhv
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5p
c0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImxpc3Rl
bmVyIiwgIicpIHRvICIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICIuIiwgIm1ldGhv
ZCIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJsaXN0ZW5lciIsICJUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciIsICJtZXRob2QiKTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
KTsKICAgICBpbXBsLm1ldGhvZChsaXN0ZW5lcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRl
eCBkMTNhNjU5MDE4NmJkMzc5MmE2N2Q5NzE3OGM3NzZiODcxNGQ5YjRkLi44NmMzMjM3NmYzYTc0
ODhjMzQ1OTU5MWZhMTk4MzFhNzIyMWYwMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCkBAIC0xNjYsMTAgKzE2Niw4IEBAIGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAg
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9i
amVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAK
aW5kZXggNTlkMzFjYmJiM2NlNTRhYjI4NmRkOGY4NGQ0ODIxNDY3OTA4Yzc3MC4uYjA3MGVhZDhh
MTVlMGM5NzIwNzhkOGU0Y2VmNTdkZmE3ODc0NGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTIzLDEw
ICsxMjMsOCBAQCBib29sIEpTVGVzdE5vZGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Tm9kZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxZmJlYTg1
NWNjZGRkZTQ3MTgzYjU2ZjFhMDEwMTBiMWJhYzA1NzEzLi44MWIzZDlmMWU4MDM0NGU1M2IwNjI5
NGI1ZDI5MGJiMmY3MDBkMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE9iaihFeGVjU3RhdGUqCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJ0ZXN0Q2FsbGJhY2siLCAiJykg
dG8gIiwgInRoZSAiLCAiVGVzdE9iaiIsICIgY29uc3RydWN0b3IiLCAiIG11c3QgYmUgYSBmdW5j
dGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpleGVjLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmoiLCBudWxscHRyKTsKICAgICBSZWZQ
dHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0T2JqPiBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUodGVz
dENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKQEAgLTEwMDks
MTYgKzEwMDksMTEgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWFkT25seUxvbmdBdHRyJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAicmVhZE9ubHlMb25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVhZE9ubHlMb25nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwucmVhZE9ubHlMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDI4LDE2ICsxMDIzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdy
ZWFkT25seVN0cmluZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWFkT25seVN0cmluZ0F0dHIiLCAi
IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbC5yZWFkT25seVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTA0NywxNiArMTAzNywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVhZE9u
bHlUZXN0T2JqQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAg
ICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwNjcsNyArMTA1Miw2
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxv
bmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEw
NzcsNyArMTA2MSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGlj
U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBUZXN0T2JqOjpzdGF0aWNTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEwODYsMTQgKzEwNjksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J1Rlc3RTdWJPYmonIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJUZXN0U3ViT2JqIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRl
c3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTEwMiwxNCArMTA4MSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciLCAiIGdldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAg
IH0KICAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTEyMywxNiArMTA5OCwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdlbnVtQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImVudW1BdHRyIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImVu
dW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmVudW1BdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNDIsMTYgKzExMTIsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1YKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYnl0
ZUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJieXRlQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImJ5dGVBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5ieXRlQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMTYxLDE2ICsxMTI2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdvY3RldEF0dHInIG9uIGEgbm9uLVRlc3RP
Ymogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIs
ICJvY3RldEF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldEF0dHIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE4MCwxNiArMTE0
MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnc2hvcnRBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic2hvcnRBdHRyIiwgIiBn
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExOTksMTYgKzExNTQsMTEgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAndW5zaWduZWRTaG9ydEF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1bnNpZ25lZFNob3J0QXR0
ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7
CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNp
Z25lZFNob3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xMjE4LDE2ICsxMTY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hv
cnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2xvbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibG9u
Z0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTIzNywxNiArMTE4MiwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnbG9uZ0xvbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ0xvbmdBdHRyIiwgIiBn
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIH0KLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNTYsMTYgKzExOTYsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVk
TG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAndW5zaWduZWRMb25nTG9uZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmog
b2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjc1LDE2ICsxMjEwLDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
c3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0F0dHIiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3Ry
aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI5NCwxNiArMTIyNCwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICd0ZXN0T2JqQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInRlc3RPYmpBdHRyIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLnRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0xMzEzLDE2ICsxMjM4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnWE1MT2JqQXR0cicgb24g
YSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgIlhNTE9iakF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlhNTE9i
akF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIo
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMzIsMTYgKzEy
NTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ2NyZWF0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNyZWF0ZSIsICIgZ2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJjcmVhdGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0xMzUxLDE2ICsxMjY2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVj
dGVkU3RyaW5nQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAg
ICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBpbXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJp
bmdhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEz
NzAsMTYgKzEyODAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZEludGVncmFsQXR0
cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzODksMTYgKzEyOTQsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDA4LDE2ICsxMzA4LDExIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3Mg
cHJvcGVydHkgJ3JlZmxlY3RlZEJvb2xlYW5BdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVk
Qm9vbGVhbkF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRCb29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
Qm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRib29sZWFuYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xNDI3LDE2ICsxMzIyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygi
RGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkVVJMQXR0cicg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZFVSTEF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
VVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ0NiwxNiArMTMzNiwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ3JlZmxlY3RlZFN0cmluZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTQ2NSwxNiArMTM1MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAncmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFs
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0ODQsMTYgKzEzNjQsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0
IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHInIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTAzLDE2ICsxMzc4
LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVmbGVjdGVkQ3VzdG9tVVJMQXR0cicgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmdldFVS
TEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE1MjIsMTYgKzEzOTIs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5
cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAndHlwZWRBcnJheUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ0eXBlZEFy
cmF5QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7
CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFycmF5QXR0cigpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTU0MSwxNCArMTQwNiwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jbwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTE1NjEsMTYgKzE0MjIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlv
biIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTgwLDE0ICsxNDM2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3Mg
cHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMTYwMCwxNiArMTQ1MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdE9iaiBv
YmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBp
bXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MTksMTQgKzE0NjYsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjdXN0b21B
dHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiY3VzdG9tQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21BdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY3VzdG9tQXR0ciIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPmN1c3RvbUF0dHIoZXhlYykpOwogfQpAQCAtMTYzNSwxNCArMTQ3OCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoZXhlYykpOwpAQCAtMTY1MywxNCAr
MTQ5MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3Ry
aW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAg
ICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCkBAIC0xNjc0LDE0ICsx
NTA5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJE
ZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0xNjk0LDE0
ICsxNTI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMTcxNywxNCArMTU0NCwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVj
U3RhdGUqIGV4ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTczOCwxNCArMTU2MSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkBAIC0xNzYxLDE0ICsxNTgwLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJp
bmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghc2NyaXB0Q29udGV4dCkKQEAgLTE3ODIsMTQgKzE1OTcsMTAgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkp
KTsKQEAgLTE4MDEsMTYgKzE2MTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHIx
JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRp
b25hbEF0dHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xODIyLDE2ICsxNjI4LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyMicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0
cjIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsK
ICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRp
dGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTg0MywxNiArMTY0NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NvbmRpdGlvbmFsQXR0cjMnIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIzIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIzKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4NjQsMTQgKzE2NjAsMTAgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ2NvbmRpdGlvbmFsQXR0cjQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIp
KTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25h
bEF0dHI0IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0QTo6Z2V0
Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
QEAgLTE4ODIsMTQgKzE2NzQsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NvbmRpdGlv
bmFsQXR0cjUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHI1IiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImNvbmRpdGlvbmFsQXR0cjUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgfQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE5MDAsMTQgKzE2ODgsMTAg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NvbmRpdGlvbmFsQXR0cjYnIG9uIGEgbm9uLVRl
c3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJjb25kaXRpb25hbEF0dHI2IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T2JqZWN0Qzo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KQEAgLTE5MTcsMTYgKzE3MDEsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNo
ZWRBdHRyaWJ1dGUxJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY2FjaGVkQXR0cmlidXRlMSIsICIgZ2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwotICAgIH0K
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
YWNoZWRBdHRyaWJ1dGUxIik7CisgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0g
Y2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMTkzOSwxNiArMTcxOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NhY2hlZEF0
dHJpYnV0ZTInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjYWNoZWRBdHRyaWJ1dGUyIiwgIiBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hl
ZEF0dHJpYnV0ZTIiKTsKKyAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0
ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTIuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CkBAIC0xOTYxLDE2ICsxNzM1LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNh
Y2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhbnlBdHRyaWJ1dGUnIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJhbnlBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
YW55QXR0cmlidXRlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKGlt
cGwuYW55QXR0cmlidXRlKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmFueUF0dHJp
YnV0ZSgpLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTk4MCwxNCArMTc0OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29udGVudERvY3VtZW50JyBvbiBh
IG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAiY29udGVudERvY3VtZW50IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnRlbnREb2N1bWVu
dCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImNvbnRlbnREb2N1bWVudCIpOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nl
c3NUb05vZGUoZXhlYywgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkgPyB0b0pTKGV4ZWMsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgp
KSkgOiBqc051bGwoKSk7CkBAIC0xOTk3LDE2ICsxNzYyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdtdXRhYmxl
UG9pbnQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJtdXRhYmxlUG9pbnQiLCAiIGdldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibXV0YWJs
ZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
U1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmosIFNWR1BvaW50Pjo6Y3JlYXRlKGltcGws
IGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9pbnQpKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjAxNiwxNiArMTc3NiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRh
YmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNj
ZXNzIHByb3BlcnR5ICdpbW11dGFibGVQb2ludCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImltbXV0YWJsZVBv
aW50IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAg
ICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+
OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTIwMzUsMTYgKzE3OTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY28KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
U3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdHJhd2JlcnJ5
JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAic3RyYXdiZXJyeSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
c3RyYXdiZXJyeSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTIwNTQsMTYgKzE4MDQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdi
ZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaWN0RmxvYXQnIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJzdHJpY3RGbG9hdCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZs
b2F0Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5zdHJpY3RGbG9hdCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0yMDczLDE2ICsxODE4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2Rlc2NyaXB0aW9uJyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiZGVzY3JpcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJkZXNjcmlwdGlvbiIp
OwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVz
Y3JpcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA5
MiwxNiArMTgzMiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqSWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdpZCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImlkIiwgIiBnZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImlk
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiaWQiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIxMTEs
MTYgKzE4NDYsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHQKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdoYXNoJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiaGFzaCIsICIgZ2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJoYXNoIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuaGFzaCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTMwLDE2ICsxODYwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J3JlcGxhY2VhYmxlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVwbGFjZWFibGVBdHRyaWJ1
dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJp
YnV0ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMjE0OSwxNiArMTg3NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZQog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxs
YWJsZURvdWJsZUF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlRG91YmxlQXR0cmli
dXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAg
ICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjE3MSwxNiArMTg5MSwxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAnbnVsbGFibGVMb25nQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVMb25n
QXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
bnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgfQog
ICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25n
QXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMjE5MywxNiArMTkwOCwxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhcwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBw
cm9wZXJ0eSAnbnVsbGFibGVCb29sZWFuQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVj
dC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFi
bGVCb29sZWFuQXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmli
dXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihp
bXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpKTsKQEAgLTIyMTUsMTYgKzE5MjUs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUnIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFi
bGVTdHJpbmdBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShp
c051bGwpKTsKQEAgLTIyMzcsMTYgKzE5NDIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0
LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsK
QEAgLTIyNTksMjIgKzE5NTksMTggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdudWxsYWJsZVN0cmluZ1Zh
bHVlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJu
dWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYykpOworICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTIyODIsMTYgKzE5Nzgs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ2F0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImF0dHJpYnV0ZSIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmF0dHJpYnV0ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMzAxLDI2ICsxOTkyLDE5
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRy
aWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiLCAiIGdl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVz
ZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMjMzMCw3ICsyMDE0LDYgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVl
LCBFbmNvZGUKIHZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDog
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQxLDEwICsyMDI0LDkg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU8KIHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCkBAIC0yMzU1LDEwICsyMDM3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QKIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJlbnVtQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjM3NCwxMCAr
MjA1NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTCiB2b2lkIHNldEpTVGVzdE9iakJ5dGVB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYnl0ZUF0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTIzOTEsMTAgKzIwNzEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakJ5
dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKUwogdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJvY3RldEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDA4LDEw
ICsyMDg3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEoKIHZvaWQgc2V0SlNUZXN0T2JqU2hv
cnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic2hvcnRB
dHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJz
aG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQyNSwxMCArMjEwMyw5IEBAIHZvaWQgc2V0SlNUZXN0
T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKCiB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidW5zaWduZWRTaG9ydEF0dHIiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hv
cnRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0NDIsMTAgKzIxMTksOSBAQCB2b2lkIHNldEpTVGVzdE9i
alVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sCiB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0NTksMTAg
KzIxMzUsOSBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKUwogdm9pZCBzZXRKU1Rlc3RPYmpMb25n
TG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJsb25n
TG9uZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDc2LDEwICsyMTUxLDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jb2QKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ5MywxMCArMjE2Nyw5IEBA
IHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBdHRyIiwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRy
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTI1MTAsMTAgKzIxODMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2Rl
ZAogdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgInRlc3RPYmpBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTI3
LDEwICsyMTk5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGUKIHZvaWQgc2V0SlNUZXN0T2Jq
WE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIlhN
TE9iakF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIlhNTE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjU0NCwxMCArMjIxNSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkCiB2b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNyZWF0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1NjEs
MTAgKzIyMzEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYQogdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0y
NTc4LDEwICsyMjQ3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8KIHZvaWQgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMjU5NSwxMCArMjI2Myw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50
ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QKIHZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjYxMiwxMCArMjI3OSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJv
b2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVm
bGVjdGVkQm9vbGVhbkF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI2MjksMTAg
KzIyOTUsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
cmVmbGVjdGVkVVJMQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNjQ2LDEwICsyMzEx
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJl
ZmxlY3RlZFN0cmluZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjY2MywxMCAr
MjMyNyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovCiB2b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI2ODAsMTAgKzIzNDMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlTwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xl
YW5BdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNjk3LDEwICsyMzU5
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2IKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICov
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
InJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAt
MjcxNCwxMCArMjM3NSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0CiB2b2lkIHNldEpTVGVz
dE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAidHlwZWRBcnJheUF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3MzEsMTAgKzIz
OTEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuYwogdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC0yNzQ4LDEwICsyNDA3LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWMKIHZvaWQgc2V0
SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc2NywxMCArMjQyNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3
ODQsMTAgKzI0NDEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODAzLDEwICsyNDU5LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbUF0dHIiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRDdXN0b21BdHRyKGV4ZWMs
IHZhbHVlKTsKQEAgLTI4MTYsMTAgKzI0NzEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZAog
dm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAi
IHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yODMzLDEwICsyNDg3LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamUKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
LywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg1MywxMCArMjUwNiw5IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwpAQCAtMjg3MCwxMCArMjUyMiw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhCiB2b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI4OTAsMTAgKzI1NDEsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYgogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3Qg
Ki8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0y
OTEwLDEwICsyNTYwLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXgKIHZvaWQgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjkz
MCwxMCArMjU3OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTI5NTAsMTAgKzI1OTgsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZQogdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC0yOTY4LDEwICsyNjE1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmoKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjEiLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMjk4NywxMCArMjYzMyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFCiB2
b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIyIiwgIiBzZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTMwMDYsMTAgKzI2NTEsOSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRQogdm9pZCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8q
IGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0zMDI1LDEwICsyNjY5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyNCIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCkBAIC0zMDQxLDEwICsyNjg0LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU8KIHZvaWQg
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyNSIsICIgc2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCkBAIC0zMDU3LDEwICsyNjk5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU8K
IHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyNiIsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCkBAIC0zMDcyLDEwICsyNzEzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU8KIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYW55QXR0cmlidXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpA
QCAtMzA4OSwxMCArMjcyOSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kCiB2b2lkIHNldEpT
VGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2Jq
ZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgIm11dGFibGVQb2ludCIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMxMDYsMTAgKzI3NDUs
OSBAQCB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZAogdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQ
b2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImltbXV0YWJs
ZVBvaW50IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJpbW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTIzLDEwICsyNzYxLDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmMKIHZvaWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmF3YmVycnkiLCAiIHNldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMzE0MCwxMCArMjc3Nyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkCiB2b2lk
IHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAic3RyaWN0RmxvYXQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMxNTcsMTAgKzI3
OTMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZQogdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImlkIiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpZCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0z
MTc0LDEwICsyODA5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZQogdm9pZCBzZXRKU1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdApAQCAt
MzE4OCwxMCArMjgyMiw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVz
dE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMyMDUsMTAgKzI4MzgsOSBAQCB2b2lk
IHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVTdHJp
bmdWYWx1ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjIyLDEwICsyODU0LDkgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8KIHZvaWQgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJl
c2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
LywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIs
ICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMzI0OCw3ICsyODc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBleGUK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJ2b2lkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGltcGwudm9pZE1ldGhvZCgpOwpAQCAtMzI2MCw3ICsyODkxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ2b2lkTWV0aG9kV2l0
aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidm9pZE1ldGhvZFdpdGhBcmdz
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTMyODMsNyArMjkxNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0
aG9kKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiYnl0ZU1ldGhvZCIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsKQEAgLTMyOTUsNyArMjkyNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJD
YW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMzE4LDcgKzI5NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0
YXRlKiBleAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0TWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
b2N0ZXRNZXRob2QoKSk7CkBAIC0zMzMwLDcgKzI5NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhF
eGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDMpCkBAIC0zMzUzLDcgKzI5ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIGV4
ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgImxvbmdNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdNZXRo
b2QoKSk7CkBAIC0zMzY1LDcgKzI5OTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgImxvbmdNZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAz
KQpAQCAtMzM4OCw3ICszMDE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIGV4ZWMKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJvYmpNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2Jq
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKGltcGwub2JqTWV0aG9kKCkpKTsKQEAgLTM0MDAsNyArMzAzMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
YmpNZXRob2RXaXRoQXJncyhFeGVjU3RhCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib2JqTWV0aG9kV2l0
aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2JqTWV0aG9kV2l0aEFyZ3Mi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAtMzQyMyw3ICszMDU0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyhFeGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoU2VxdWVuY2VB
cmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJn
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM0NDAsNyArMzA3MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RS
ZXR1cm5pbmdTZXF1ZW5jZShFCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kUmV0dXJuaW5nU2Vx
dWVuY2UiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kUmV0dXJuaW5nU2Vx
dWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzQ1Nyw3ICszMDg4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoRW51
bUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zNDY2LDcgKzMwOTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEVudW1BcmcoRXhlY1N0YQogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYg
KGVudW1BcmcgIT0gIiIgJiYgZW51bUFyZyAhPSAiRW51bVZhbHVlMSIgJiYgZW51bUFyZyAhPSAi
RW51bVZhbHVlMiIgJiYgZW51bUFyZyAhPSAiRW51bVZhbHVlMyIpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJn
dW1lbnQgIiwgIjEiLCAiICgnIiwgImVudW1BcmciLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIs
ICJtZXRob2RXaXRoRW51bUFyZyIsICIgbXVzdCBiZSBvbmUgb2Y6ICIsICJcIlwiLCBcIkVudW1W
YWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIikpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqZXhlYywgMCwgImVudW1BcmciLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIsICJcIlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVt
VmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIik7CiAgICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhl
bnVtQXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpA
QCAtMzQ3Niw3ICszMTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtMzQ5OSw3ICszMTMwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRW
YWx1ZShFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJzZXJpYWxpemVkVmFsdWUiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTM1MTYsNyArMzE0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0
ZSoKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvcHRpb25zT2JqZWN0IiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm9wdGlvbnNPYmplY3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpA
QCAtMzUzNiw3ICszMTY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1MKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJtZXRob2RXaXRoRXhjZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzU1MCw3ICsz
MTgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0
b21NZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3VzdG9tTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRo
b2QoZXhlYykpOwogfQpAQCAtMzU2MCw3ICszMTkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEV4
ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21NZXRob2RXaXRoQXJncyIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoZXhl
YykpOwogfQpAQCAtMzU3MCw3ICszMjAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwg
IlRlc3RPYmoiLCAiLiIsICJhZGRFdmVudExpc3RlbmVyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVu
dCgxKTsKQEAgLTM1ODUsNyArMzIxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJn
dW1lbnQoMSk7CkBAIC0zNjAwLDcgKzMyMzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiLCAiIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lk
KGV4ZWMpOwpAQCAtMzYxMiw3ICszMjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwg
IlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVPYmoiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0
YXRlT2JqKGV4ZWMpKSk7CkBAIC0zNjI2LDcgKzMyNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4
Y2VwdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iLCAi
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0zNjQwLDcgKzMyNzEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqRXhjZXB0aQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
biIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNl
cHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzY1Nyw3ICszMjg4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKQEAgLTM2NzIsNyArMzMwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBj
YWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzY4Nyw3ICszMzE4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzcwNyw3ICszMzM4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKQEAgLTM3MjQsNyArMzM1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CkBAIC0zNzM3LDcgKzMzNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhP
cHRpb25hbEFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0
aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogCkBAIC0zNzU5LDcgKzMzOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVz
dE9iaiIsICIuIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM3ODYsNyArMzQxNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zODIxLDcgKzM0NTIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nKAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
ZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogCkBA
IC0zODQzLDcgKzM0NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25z
dCBTdHJpbmcmIHN0cihleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CkBAIC0zODU4LDcg
KzM0ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmciKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmlu
ZyYgc3RyKGFyZ3VtZW50T3JOdWxsKGV4ZWMsIDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogYXJn
dW1lbnRPck51bGwoZXhlYywgMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTM4
NzMsMTMgKzM1MDQsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGUKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIs
ICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgIiBtdXN0IGJlIGEgZnVu
Y3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJn
Iik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6
Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNr
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg5MCw3
ICszNTIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCkBAIC0zODk5LDcgKzM1MzAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwg
IjIiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVj
LCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0
Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKG5vbkNhbGxiYWNrLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM5MTAsMTMgKzM1NDEsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGkKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2s7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAg
IGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRl
c3RPYmoiLCAiLiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsICIgbXVzdCBi
ZSBhIGZ1bmN0aW9uIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxi
YWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmcoY2FsbGJhY2spOwpAQCAtMzkyOCw3ICszNTU5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0
aG9kV2l0aENhbGxiYWMKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYg
KCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAiLCAiVGVzdE9i
aiIsICIuIiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgIiBtdXN0
IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgInN0YXRpY01l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNrID0gY3Jl
YXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KGV4ZWMsIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICB9CiAgICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmcoY2FsbGJhY2spOwpAQCAtMzk0MCw3ICszNTcxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3Rh
dGljTWV0aG9kV2l0aENhbGxiYWMKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRv
ICIsICJUZXN0T2JqIiwgIi4iLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgIiBtdXN0
IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVu
Y3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAic3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4oZXhlYywganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FyZyhjYWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTM5NTIsNyArMzU4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxNZXRob2QxIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKTsKQEAgLTM5NjcsNyArMzU5OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDIoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxN
ZXRob2QyIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9k
MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
aW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsKQEAgLTM5ODIsNyArMzYxMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDMoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxNZXRob2QzIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5jb25k
aXRpb25hbE1ldGhvZDMoKTsKQEAgLTM5OTYsNyArMzYyNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25s
eSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMikKQEAgLTQwMTYsNyArMzY0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
QEAgLTQwNDMsNyArMzY3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2Jq
IiwgIi4iLCAib3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQwNjAs
NyArMzY5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAi
b3ZlcmxvYWRlZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQwNzcsMTMgKzM3MDgs
MTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAi
LCAiMSIsICIgKCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVy
bG9hZGVkTWV0aG9kIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNh
bGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC00MDk0LDcgKzM3MjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KAog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CkBAIC00MTExLDcgKzM3NDIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9i
aiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTI4
LDcgKzM3NTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwg
Im92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTQ1LDcgKzM3NzYs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTYyLDcgKzM3OTMsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2Qi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MTc5LDcgKzM4MTAsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCkBAIC00MzA0LDcgKzM5MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhl
YwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMikKQEAgLTQzMzQsNyArMzk2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2Vx
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MzUxLDcgKzM5ODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbihFeGVjUwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0FycmF5RnVuY3Rp
b24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MzcxLDcgKzQwMDIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5n
TGlzdEZ1bmN0aW9uKEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlv
biIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDM5MSw3ICs0MDIyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0Rv
Y3VtZW50KEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJnZXRTVkdEb2N1bWVudCIsICIg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJnZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC00NDA4LDcgKzQwMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgImNvbnZlcnQxIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQ0MjUsNyArNDA1Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0MihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDIi
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udmVydDIiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQpAQCAtNDQ0Miw3ICs0MDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjb252ZXJ0NCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00NDU5LDcg
KzQwOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNv
bnZlcnQ1IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQ0NzYsNyArNDEwNyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5j
dGlvbihFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4g
b25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwubXV0YWJsZVBvaW50RnVu
Y3Rpb24oKSkpKTsKQEAgLTQ0ODgsNyArNDExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rp
b24oKSkpKTsKQEAgLTQ1MDAsNyArNDEzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIm9yYW5nZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJv
cmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIGltcGwuYmFuYW5hKCk7CkBAIC00NTEyLDcgKzQxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhl
Y1N0YXRlKgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMykKQEAgLTQ1MzgsMTQgKzQxNjksMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmMKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwg
IlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhK
U1Rlc3RPYmo6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwg
Im9iakFyZyIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNl
cXVlbmNlIiwgIiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICIsICJUZXN0T2JqIikpOworICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1l
bnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKQorICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqZXhlYywgMCwgIm9iakFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1
bmN0aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoiKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9U
ZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTQ1NjMsMTQgKzQxOTQsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgIm9iakFyZyIs
ICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5IiwgIiBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mICIsICJUZXN0T2JqIikpOworICAgIGlmICghZXhlYy0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJp
dHMoSlNUZXN0T2JqOjppbmZvKCkpKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqZXhlYywgMCwgIm9iakFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5IiwgIlRlc3RPYmoiKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFy
Z3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1ODgsNyAr
NDIxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAidmFy
aWFkaWNTdHJpbmdNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidmFyaWFk
aWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDYwOCw3ICs0
MjM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJp
YWRpY0RvdWJsZU1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRp
Y0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00NjI4LDcgKzQy
NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInZhcmlh
ZGljTm9kZU1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY05v
ZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDYzOSw3ICs0MjcwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3QKICAgICBWZWN0b3I8Tm9kZSo+IHRhaWw7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5o
ZXJpdHMoSlNOb2RlOjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMiIs
ICIgKCciLCAidGFpbCIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgInZhcmlhZGljTm9kZU1l
dGhvZCIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKmV4ZWMsIGksICJ0YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNO
b2RlTWV0aG9kIiwgIk5vZGUiKTsKICAgICAgICAgdGFpbC5hcHBlbmQodG9Ob2RlKGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAgfQogICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9k
KGhlYWQsIHRhaWwpOwpAQCAtNDY1MSw3ICs0MjgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAiYW55IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFu
eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCkBAIC00NjgwLDQ2ICs0MzExLDM5IEBAIHZv
aWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAvLyBDb25zdGFudCBnZXR0ZXJzCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLUVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTkRJVElPTkFMX0NPTlNUKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ09ORElUSU9OQUxfQ09OU1QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKTsKIH0KIAogI2VuZGlmCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q09OU1RfVkFMVUVfMChFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoMCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05T
VF9WQUxVRV8xKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMikpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV80KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1Rf
VkFMVUVfNChFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoNCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxV
RV84KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfOChFeGVjU3RhdGUqLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoOCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV85KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfVkFMVUVfOShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIH0KIApAQCAtNDcyOCwzOSArNDM1Miwz
MyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmdPck51bGwoZXhlYywgU3RyaW5nKCJteSBjb25zdGFudCBzdHJpbmciKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNPTlNUX1ZBTFVFXzExKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigweGZmZmZmZmZmKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q09OU1RfVkFMVUVfMTIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKDB4MDEpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q09OU1RfVkFMVUVfMTMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyhF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoMFgyMCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xNChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzE0KEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigweDFhYmMpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDE1KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlYWRvbmx5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZG9ubHko
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCmluZGV4IGMzODA5MDdmMDJjZjYzOTc5MmJjOGU4OWY5OTJlNzBmYzAzMDQwZjYuLmQ4Y2E3
NGU4NTgxYzQ3YzNkYjBjMWE5YTliYzZmYjc1ZDJhOGE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTE5NCwxMCArMTk0LDggQEAgYm9vbCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXQKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggN2ZkMzM0ZjZlZGM1
OGRkMjNmNjljY2FmNDc1NzA4ZTMzNmY1MzFhNC4uZmUzOTAyNDI5NzFhMDEzNzliNzE1MWVhMjAz
YjU0YzI4YTZlZjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTE1MCwxNiArMTUwLDExIEBAIGJvb2wgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAndmFsdWUnIG9uIGEgbm9u
LVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
LiIsICJ2YWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC52YWx1ZSgp
ID8gaW1wbC52YWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xNjksMTYgKzE2NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRvbmx5VmFsdWUnIG9uIGEgbm9uLVRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJy
ZWFkb25seVZhbHVlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRv
bmx5VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbC5yZWFkb25seVZhbHVlKCkgPyBpbXBsLnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJp
YWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg4LDE2ICsxNzgsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9u
bHlWYWx1ZShFeGVjU3RhdGUqIGV4ZWMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnY2FjaGVkVmFsdWUnIG9uIGEgbm9uLVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJjYWNoZWRWYWx1ZSIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIiwgImNhY2hlZFZhbHVlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0yMTAsMTYgKzE5NSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3BvcnRzJyBvbiBhIG5vbi1UZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAicG9ydHMiLCAiIGdldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJwb3J0cyIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMjI5LDE2ICsyMDksMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRlKiBleGVjLCBKU09iamUKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRv
bmx5VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJE
ZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNoZWRSZWFkb25seVZhbHVl
JyBvbiBhIG5vbi1UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIiwgIi4iLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hl
ZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fj
aGVkVmFsdWUpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDgsMTAgKzIyMyw4IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUo
RXhlY1N0YXRlCiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkBAIC0yNjEsMTAgKzIzNCw5
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiLiIsICJ2YWx1ZSIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc4LDEwICsyNTAsOSBAQCB2b2lkIHNldEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qCiB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIiwgIi4iLCAiY2FjaGVkVmFsdWUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIpKTsK
KyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGY3ZmI0NjM5NzMzYjg5NzcwNTQ2
Mjk3N2E0ZTk3ZDk4MTI5NTVhODguLjQ4NTgxMWU2MDdmZDg2YjMyNGQxOGU3MWMzNmI2YWUyYWYw
YjExZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtODAsNyArODAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdFR5cGVkZWZzKAogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwg
IjIiLCAiICgnIiwgInRlc3RDYWxsYmFjayIsICInKSB0byAiLCAidGhlICIsICJUZXN0VHlwZWRl
ZnMiLCAiIGNvbnN0cnVjdG9yIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMSwgInRlc3RDYWxs
YmFjayIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNr
PiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJl
ZlB0cjxUZXN0VHlwZWRlZnM+IG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKGhlbGxvLCB0
ZXN0Q2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwpAQCAtMjUz
LDE2ICsyNTMsMTEgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGUKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewog
ICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd1bnNp
Z25lZExvbmdMb25nQXR0cicgb24gYSBub24tVGVzdFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0
ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlw
ZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjcyLDE2ICsyNjcsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG8KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1tdXRh
YmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlJyBvbiBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIp
KTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJp
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5
cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
aW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTI5MSwxNCArMjgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RC
YXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3Mg
cHJvcGVydHkgJ1Rlc3RTdWJPYmonIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiVGVzdFN1Yk9i
aiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlw
ZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3Vi
T2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpn
ZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwog
fQpAQCAtMzA3LDE0ICsyOTMsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2wKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdhdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdFR5cGVkZWZzIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIs
ICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzI3LDE2ICszMDksMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyBvbiBh
IG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVj
LCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
VGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zNDYsMTQgKzMyMywxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygi
RGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTM2NiwyNiArMzM5LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZh
bHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMzk1LDEwICszNjEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VW
YWx1ZSwgRQogdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAidW5z
aWduZWRMb25nTG9uZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTQxMiwxMCArMzc3LDkgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmoKIHZvaWQgc2V0
SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJpbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC00MjksMTAgKzM5Myw5IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCoKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CkBAIC00NDYsMTAgKzQwOSw5IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlCiB2b2lk
IHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpA
QCAtNDY1LDEwICs0MjcsOSBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZQogdm9pZCBzZXRKU1Rl
c3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTQ4MiwxMCArNDQzLDkgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8KIHZv
aWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC01MDgsNyArNDY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUq
IGV4ZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJmdW5jIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAKQEAgLTUzMCw3ICs0OTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIs
ICIuIiwgInNldFNoYWRvdyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMi
LCAic2V0U2hhZG93Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC01
NzEsNyArNTMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXIKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
VHlwZWRlZnMiLCAiLiIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciLCAiIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNTg4LDcgKzU0OCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlQXJyYXlBcmcoRXhlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAibnVsbGFi
bGVBcnJheUFyZyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAibnVs
bGFibGVBcnJheUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAt
NjA1LDcgKzU2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVz
dFR5cGVkZWZzIiwgIi4iLCAiZnVuY1dpdGhDbGFtcCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5
cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQpAQCAtNjQyLDcgKzYwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlv
biIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9p
bnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50
Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwpAQCAtNjU0LDcgKzYx
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZz
IiwgIi4iLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVz
dFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQpAQCAtNjc0LDcgKzYzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rp
b24yCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAic3RyaW5nQXJyYXlGdW5jdGlv
bjIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0FycmF5
RnVuY3Rpb24yIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC02OTQs
NyArNjU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXQKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlw
ZWRlZnMiLCAiLiIsICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRS
ZXF1aXJlc0luY2x1ZGUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTcxMSw3ICs2NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKAogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RUeXBlZGVmcyIsICIuIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iLCAiIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkp
OwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IDJjZDlhYzFkMTc5NTIzOGM5ZGY2
NTJhZWUzMTRjMWUxZDBmYmIxYTkuLjg4MzI0Zjg4YjBkNzY0NDYxZDQ5ODBiMGRiOGRhMTZhMjIw
OTFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTI4LDI2ICsxMjgsMTkgQEAgYm9vbCBKU2F0dHJp
YnV0ZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHkKIEVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTYXR0cmlidXRlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU2F0dHJpYnV0ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5cGUqPihzbG90QmFzZSkpIHsK
LSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5
ICdyZWFkb25seScgb24gYSBub24tYXR0cmlidXRlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiVGhlICIsICJhdHRyaWJ1dGUiLCAiLiIsICJyZWFkb25seSIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgImF0dHJpYnV0
ZSIsICJyZWFkb25seSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIGF0dHJpYnV0ZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwucmVhZG9ubHkoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAKLUVuY29kZWRKU1ZhbHVl
IGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTYXR0cmli
dXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90
eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKaW5kZXggY2QxZjY3Y2I3OWFhODZkODdi
OGZhZjJkNDBkNmRlMTQ1Y2ZkOTA5NC4uZDQ0MzA4YWRmNGJkMzgxMDZmODViZTQ5N2M2MTE3Mjhm
NGM5NjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTcmVhZG9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU3JlYWRvbmx5LmNwcApAQCAtMTE5LDEwICsxMTksOCBAQCBib29sIEpTcmVhZG9u
bHk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNyZWFk
b25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc3Jl
YWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTcmVhZG9ubHlQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KGJhc2VW
YWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpp
bmRleCBmNzA4YmY0NGI3YWMzNGZlZTg5NjE2ODViYWQ4YzRjZTA2NTQ0MTVmLi4xZDFmODE0MmZi
OWM1YThiN2RkYmQxNWNjMGY1MjcyZjk5NGYwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtNDc2LDYgKzQ3Niw1IEBAIEVYUE9SVFMKICAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxp
dHlAQVhPYmplY3RDYWNoZUBXZWJDb3JlQEBTQVhfTkBaLCA/c2V0RW5oYW5jZWRVc2VySW50ZXJm
YWNlQWNjZXNzaWJpbGl0eUBBWE9iamVjdENhY2hlQFdlYkNvcmVAQFNBWF9OQFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9zZXNzaW9uSURAUGFnZUBXZWJDb3JlQEBRQkU/QVZTZXNzaW9u
SURAMkBYWiwgP3Nlc3Npb25JREBQYWdlQFdlYkNvcmVAQFFFQkE/QVZTZXNzaW9uSURAMkBYWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3Jlc291cmNlRm9yVVJMQE1lbW9yeUNhY2hlQFdl
YkNvcmVAQFFBRVBBVkNhY2hlZFJlc291cmNlQDJAQUJWVVJMQDJAVlNlc3Npb25JREAyQEBaLCA/
cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUVBQVBFQVZDYWNoZWRSZXNvdXJj
ZUAyQEFFQlZVUkxAMkBWU2Vzc2lvbklEQDJAQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9tYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbEBXZWJDb3JlQEBZQT9BVlN0
cmluZ0BXVEZAQFBCRFpaLCA/bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50ZXJuYWxA
V2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQRUJEWlopCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9pc0FQSVZhbHVlV3JhcHBlckBKU0NlbGxASlNDQEBRQkVfTlhaLCA/aXNBUElWYWx1ZVdy
YXBwZXJASlNDZWxsQEpTQ0BAUUJFX05YWikKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228712</attachid>
            <date>2014-04-06 18:57:57 -0700</date>
            <delta_ts>2014-04-06 18:57:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131285-20140406185740.patch</filename>
            <type>text/plain</type>
            <size>332437</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIwMmU5N2VmYWI4MDFi
ZDBlNzk4YWVjNThmNDYyMjZhOGNkNmE4OC4uMDUzOWM2ZTAyNTFmODNjYTQ3MGVhMGI3MTk5ZDdl
MDBkNzNkZWEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY2IEBACiAyMDE0LTA0LTA2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIHNvbWUgYmluZGluZ3Mg
aW1wcm92ZW1lbnRzLCB3aXRoIHNtYWxsZXIgY29kZSBzaXplIGZvciBlcnJvciBtZXNzYWdlIGdl
bmVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZCB0byByZW1vdmUgb2xkIGFuZCBhZGQgbmV3IGZ1bmN0
aW9ucywgZm9yIHVzZSBieSB0aGUgSW50ZXJuYWxzCisgICAgICAgIEphdmFTY3JpcHQgYmluZGlu
Z3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dUeXBlRXJyb3IpOiBBZGRlZC4gSGVscGVyIHRvIGF2
b2lkIHJlcGVhdGluZyB0aHJvd1ZNRXJyb3IvY3JlYXRlVHlwZUVycm9yLgorICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kQXJndW1lbnRNdXN0QmUpOiBBZGRlZC4gSGVscGVyIGZvciBidWlsZGluZyB1
cCBhcmd1bWVudCBlcnJvciBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKTogQWRkZWQuIEZvciBiaW5kaW5ncyB0byB1c2UuCisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudFR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6dGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnRocm93QXR0cmlidXRlVHlwZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjp0aHJvd0dldHRlclR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6dGhyb3dTZXF1ZW5jZVR5cGVFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhy
b3dTZXR0ZXJUeXBlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93VGhpc1R5
cGVFcnJvcik6IERpdHRvLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6
IEFkZGVkIGRlY2xhcmF0aW9ucyBmb3IgbmV3IGZ1bmN0aW9ucy4gUmVtb3ZlZCBmb3J3YXJkCisg
ICAgICAgIGRlY2xhcmF0aW9ucyBmb3IgdGhpbmdzIG5vdCB1c2VkIGluIHRoaXMgZmlsZS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLiBGb3JtYXQKKyAgICAgICAgdGVtcGxhdGVzIGNvbnNpc3Rl
bnRseS4gVXNlIGEgYmV0dGVyIGZvciBsb29wIGluIHRoZSBqc0FycmF5IGZ1bmN0aW9uLiBSZW1v
dmVkCisgICAgICAgIHVudXNlZCBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb24sIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZywgYW5kCisgICAgICAgIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZ0ludGVybmFsLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwOiBGaXhlZCBhIGhhbmQtd3JpdHRlbiBiaW5kaW5nIHRoYXQgd2FzIHVzaW5nCisg
ICAgICAgIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyB0byBtYWtlIGEgc3RyaW5nLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOiBVcGRhdGVkIGZvcndh
cmQgZGVjbGFyYXRpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogQ3V0IGRvd24gb24g
dXNlIG9mIFVOVVNFRF9QQVJBTS4gVXNlIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgIGZvciBl
cnJvcnMsIGtlZXBpbmcgdGhlIGNvZGUgaW4gdGhlIGdlbmVyYXRlZCBmaWxlIHRvIGEgbWluaW11
bS4KKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogRGl0dG8uCisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IERpdHRvLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9u
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAg
IFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0cyBmb3IgY2hhbmdlcyBhYm92ZS4KKworMjAxNC0wNC0w
NiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgUmV3b3JrIENTUyBj
YWxjIGxvZ2ljLCBmaXhpbmcgc29tZSByZWZlcmVuY2UgY291bnQgbWlzdGFrZXMgaW4gTGVuZ3Ro
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyODAK
ICAgICAgICAgcmRhcjovL3Byb2JsZW0vMTY0MDA4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzZjMWVhOTQ2M2M2
NjNiOWNkOGY0NTdiYzk4NzBmMmRjOTg5ZjFiZi4uMTVlOTFhN2RmNmYyZjUzMDIzZmNhMTNmMDJh
YThjMjIzYTZmNGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wNC0wNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBzb21lIGJpbmRpbmdz
IGltcHJvdmVtZW50cywgd2l0aCBzbWFsbGVyIGNvZGUgc2l6ZSBmb3IgZXJyb3IgbWVzc2FnZSBn
ZW5lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzEyODUKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
ICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluOiBVcGRhdGVkIGZvcgorICAgICAgICBjaGFuZ2VzIGluIEphdmFTY3JpcHQgYmluZGluZyBm
dW5jdGlvbnMuCisKIDIwMTQtMDQtMDUgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSB1bnVzZWQgdGVzdCBob29r
IHNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDI3YTRmYjNlZjBhZjZhN2IyN2NkMGEyNDU5YzBlNmIzMTFhNDA1YzMuLjAwZjBjMDRhOGMw
OWQ4ODA2Mzc5YzA1ZTI3MTg5NThjNjA2YjliMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03
NzIsNiArNzcyLDcgQEAgX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQYXJhZ3JhcGhFUktOU18xNVZp
c2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3MKIF9fWk43V2ViQ29yZTE4bWFr
ZUFsbERpcmVjdG9yaWVzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3Jp
cHRPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTNKU0hUTUxFbGVtZW50RQogX19aTjdXZWJD
b3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktOU18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4
dEUKK19fWk43V2ViQ29yZTE4dGhyb3dUaGlzVHlwZUVycm9yRVJOM0pTQzlFeGVjU3RhdGVFUEtj
UzRfCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxNnJlc3VtZUFuaW1hdGlvbnNF
dgogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMTdzdXNwZW5kQW5pbWF0aW9uc0V2
CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBhdXNlQW5pbWF0aW9uQXRUaW1l
RVBOU18xM1JlbmRlckVsZW1lbnRFUktOM1dURjEyQXRvbWljU3RyaW5nRWQKQEAgLTg1MSw2ICs4
NTIsOCBAQCBfX1pON1dlYkNvcmUyMGxvb2tzTGlrZUFic29sdXRlVVJMRVA4TlNTdHJpbmcKIF9f
Wk43V2ViQ29yZTIwbWFrZVJHQkEzMkZyb21GbG9hdHNFZmZmZgogX19aTjdXZWJDb3JlMjBwcmV2
aW91c0xpbmVQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWlOU18xMkVkaXRhYmxlVHlw
ZUUKIF9fWk43V2ViQ29yZTIwcHJvdG9jb2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCitf
X1pON1dlYkNvcmUyMHRocm93R2V0dGVyVHlwZUVycm9yRVJOM0pTQzlFeGVjU3RhdGVFUEtjUzRf
CitfX1pON1dlYkNvcmUyMHRocm93U2V0dGVyVHlwZUVycm9yRVJOM0pTQzlFeGVjU3RhdGVFUEtj
UzRfCiBfX1pON1dlYkNvcmUyMHRvVUludDMyRW5mb3JjZVJhbmdlRVBOM0pTQzlFeGVjU3RhdGVF
TlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMjFBdWRpb0hhcmR3YXJlTGlzdGVuZXI2Y3JlYXRl
RVJOUzBfNkNsaWVudEUKIF9fWk43V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVt
QXRJbmRleEVpCkBAIC05MjQsNiArOTI3LDcgQEAgX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVu
dEZyb21UZXh0RVJOU181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVy
bmFsUmVwcmVzZW50YXRpb25FUE5TXzVGcmFtZUVqCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVw
cmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWoKIF9fWk43V2ViQ29yZTIyc3lzdGVtTWFya2V0aW5n
VmVyc2lvbkV2CitfX1pON1dlYkNvcmUyMnRocm93U2VxdWVuY2VUeXBlRXJyb3JFUk4zSlNDOUV4
ZWNTdGF0ZUUKIF9fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pON1dl
YkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dl
YkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTZkZWxldGVBbGxFbnRyaWVzRXYKQEAgLTk4
NCw2ICs5ODgsNyBAQCBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0Mx
RXYKIF9fWk43V2ViQ29yZTI3YXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFsbGVyRXYKIF9fWk43V2Vi
Q29yZTI3YXBwbGljYXRpb25Jc01pY3Jvc29mdE15RGF5RXYKIF9fWk43V2ViQ29yZTI3cHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsRVJLTlNfM1VSTEVTMl8KK19fWk43V2ViQ29yZTI3cmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yRVJOM0pTQzlFeGVjU3RhdGVFUEtjUzRfCiBfX1pON1dlYkNv
cmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdXZWJDb3JlMjhEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3UGFzc1JlZklOU18x
OFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjdQYXNzUmVmSU5TXzE4U3R5bGVTaGVldENv
bnRlbnRzRUVFCkBAIC0xMDAyLDcgKzEwMDcsNiBAQCBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTM2c3Rh
bmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lRVJLTjNXVEY2U3RyaW5nRVMzXwogX19a
TjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMTFtb3ZlV2lk
Z2V0c0V2CiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2Nv
cGUzNXNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50RQotX19aTjdXZWJDb3JlMzht
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbEVQS2N6CiBfX1pON1dlYkNvcmUz
VVJMMTBpbnZhbGlkYXRlRXYKIF9fWk43V2ViQ29yZTNVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmlu
Z1RhZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTNVUkxDMUVQNU5TVVJMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCA1OGI3Mzg2MTI1MTRl
Y2JiMjM2MjY1YzI0ZmRlZGNjYjU5NjhkMWVmLi4wMzk1NWVmZjFmMWRiMDNlN2JjNTVhMmRhM2Ri
YWRkOTAwYzU0NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKQEAgLTUyNywxOCArNTI3LDk3IEBAIGJvb2wgQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIE5vZGUqIHRhcmdlCiAgICAg
cmV0dXJuIHRhcmdldCAmJiBjYW5BY2Nlc3NEb2N1bWVudChzdGF0ZSwgJnRhcmdldC0+ZG9jdW1l
bnQoKSk7CiB9CiAgICAgCi1TdHJpbmcgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nSW50
ZXJuYWwoY29uc3QgY2hhciogZmlyc3QsIC4uLikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJv
d1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQoreworICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3Io
JnN0YXRlLCBlcnJvck1lc3NhZ2UpKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kQXJndW1lbnRN
dXN0QmUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUpCit7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBcmd1bWVu
dCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhcmd1bWVudEluZGV4ICsgMSk7CisgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCciKTsKKyAgICBidWlsZGVyLmFwcGVuZChhcmd1bWVu
dE5hbWUpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJykgdG8gIik7CisgICAgaWYgKCFm
dW5jdGlvbk5hbWUpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ0aGUgIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGludGVyZmFjZU5hbWUpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBjb25zdHJ1Y3RvciIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGludGVyZmFjZU5hbWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOworICAgIH0KKyAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBtdXN0IGJlICIpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCit7CisgICAgYXV0
byYgY29udGV4dCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgY29udGV4dC5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFr
ZVN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnIiwgYXR0cmli
dXRlTmFtZSwgIicgb24gYSBub24tIiwgaW50ZXJmYWNlTmFtZSwgIiBvYmplY3QuIikpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29u
c3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSBmaXJzdDsKLSAgICB2YV9saXN0IGxpc3Q7Ci0gICAg
dmFfc3RhcnQobGlzdCwgZmlyc3QpOwotICAgIGRvIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
c3RyKTsKLSAgICAgICAgc3RyID0gdmFfYXJnKGxpc3QsIGNoYXIqKTsKLSAgICB9IHdoaWxlIChz
dHIpOwotICAgIHZhX2VuZChsaXN0KTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50
TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOworICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgib25lIG9mOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFZh
bHVlcyk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBidWlsZGVyLnRvU3RyaW5n
KCkpOwogfQotICAgIAorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50
TmFtZSwgaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoImEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1
aWxkZXIudG9TdHJpbmcoKSk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgs
IGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUo
YnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1lbnROYW1lLCBmdW5jdGlvbkludGVyZmFjZU5h
bWUsIGZ1bmN0aW9uTmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhbiBpbnN0YW5j
ZSBvZiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFR5cGUpOworICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKK30KKwordm9pZCB0aHJv
d0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgdGhy
b3dUeXBlRXJyb3Ioc3RhdGUsICJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIpOworfQorCit2
b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKQoreworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5n
KCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1dGVOYW1lLCAiIGF0dHJpYnV0ZSBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mICIsIGV4cGVjdGVkVHlwZSkpOworfQorCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQoreworICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGNvbmZ1c2luZyBleGNlcHRpb24gd29yZGluZy4gQ2FuIHdlIHJld29yZCB0
byBiZSBjbGVhcmVyIGFuZCBtb3JlIHNwZWNpZmljPworICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
JnN0YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNl
TmFtZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikp
KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0dldHRlclR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0
dHJpYnV0ZU5hbWUpCit7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlU3Ry
aW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1dGVOYW1lLCAiIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKSk7Cit9CisK
K3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsICJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpOworfQor
Cit2b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK3sKKyAgICB0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcu
JywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgaW50ZXJmYWNlTmFtZSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCit7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0
YXRlLCBtYWtlU3RyaW5nKCJDYW4gb25seSBjYWxsICIsIGludGVyZmFjZU5hbWUsICcuJywgZnVu
Y3Rpb25OYW1lLCAiIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKaW5kZXggNzA1YjhkNTQ2YWM2NDg3ZDUwYjhlMzFkZDQ4ZWU5YzI3MzNiNTgyMi4uNDgz
NTA0OTlkNjc3YTM0Njk4NzNhY2YxMTBmYzY1ZjUxY2Y0NmI4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTU0LDEzICs1NCwxMCBAQCBjbGFzcyBIYXNo
RW50cnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NU3RyaW5nTGlzdDsKLQog
Y2xhc3MgQ2FjaGVkU2NyaXB0OwotY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBET01TdHJpbmdMaXN0
OwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBIVE1MRG9jdW1lbnQ7CiBj
bGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogCkBAIC02OSw2ICs2NiwyMCBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpFeGVjU3RhdGUq
KTsKIERPTVdpbmRvdyYgZmlyc3RET01XaW5kb3coSlNDOjpFeGVjU3RhdGUqKTsKIAorSlNDOjpF
bmNvZGVkSlNWYWx1ZSByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsK
Kwordm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwordm9p
ZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSk7Cit2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsK
K3ZvaWQgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKKworSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5z
aWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
Y2hhciogZXhwZWN0ZWRWYWx1ZXMpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRU
eXBlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFp
bGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0dldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworCiAv
LyBCYXNlIGNsYXNzIGZvciBhbGwgY29uc3RydWN0b3Igb2JqZWN0cyBpbiB0aGUgSlNDIGJpbmRp
bmdzLgogY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsK
ICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwpAQCAtOTcsMjAgKzEwOCwyMCBAQCBpbmxp
bmUgSlNET01HbG9iYWxPYmplY3QqIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNz
IFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01TdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIGlm
IChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKGdsb2Jh
bE9iamVjdCwgV3JhcHBlckNsYXNzOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gc3RydWN0dXJl
OwogICAgIHJldHVybiBjYWNoZURPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFz
czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRl
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSwgV3JhcHBlckNsYXNzOjppbmZvKCkpOwogfQog
Ci10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3RlbXBsYXRlPHR5
cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIC8vIEZJWE1FOiBUaGlz
IGZ1bmN0aW9uIGlzIHdyb25nLiAgSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3Ig
Y3JlYXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCisgICAgLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gaXMgd3JvbmcuIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QgZm9yIGNyZWF0
aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgogICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8
V3JhcHBlckNsYXNzPihleGVjLT52bSgpLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90
eXBlKGV4ZWMpKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlND
OjpKU09iamVjdCogZ2V0RE9NUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNDOjpK
U09iamVjdCo+KGFzT2JqZWN0KGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KHZtLCBKU0M6
OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpLT5zdG9yZWRQcm90b3R5
cGUoKSkpOwogfQpAQCAtMTI1LDIxICsxMzYsMjEgQEAgaW5saW5lIHZvaWQqIHdyYXBwZXJDb250
ZXh0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqKQogICAgIHJldHVy
biAmd29ybGQ7CiB9CiAKLWlubGluZSBKU0RPTVdyYXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBw
ZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCopIHsgcmV0dXJuIDA7IH0KK2lubGluZSBKU0RPTVdy
YXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCopIHsg
cmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSBib29sIHNldElubGluZUNhY2hlZFdyYXBwZXIoRE9N
V3JhcHBlcldvcmxkJiwgdm9pZCosIEpTRE9NV3JhcHBlciosIEpTQzo6V2Vha0hhbmRsZU93bmVy
Kiwgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgYm9vbCBjbGVhcklubGluZUNhY2hl
ZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCosIEpTRE9NV3JhcHBlciopIHsgcmV0dXJu
IGZhbHNlOyB9CiAKIGlubGluZSBKU0RPTVdyYXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgU2NyaXB0V3JhcHBhYmxlKiBkb21PYmplY3QpCiB7CiAg
ICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvbU9iamVjdC0+d3JhcHBlcigpOwogfQogCiBpbmxp
bmUgSlNDOjpKU0FycmF5QnVmZmVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBpZiAoIXdvcmxk
LmlzTm9ybWFsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICByZXR1cm4gYnVmZmVyLT5tX3dyYXBwZXIuZ2V0KCk7CiB9CiAKQEAgLTE3NSwxNCArMTg2
LDE0IEBAIGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKiBkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hl
ZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0Q2FjaGVk
V3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0KQogewog
ICAgIGlmIChKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0gZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3
b3JsZCwgZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdv
cmxkLm1fd3JhcHBlcnMuZ2V0KGRvbU9iamVjdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBE
T01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdyYXBwZXIo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNz
KiB3cmFwcGVyKQordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJD
bGFzcz4gaW5saW5lIHZvaWQgY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERP
TUNsYXNzKiBkb21PYmplY3QsIFdyYXBwZXJDbGFzcyogd3JhcHBlcikKIHsKICAgICBKU0M6Oldl
YWtIYW5kbGVPd25lciogb3duZXIgPSB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCk7CiAg
ICAgdm9pZCogY29udGV4dCA9IHdyYXBwZXJDb250ZXh0KHdvcmxkLCBkb21PYmplY3QpOwpAQCAt
MTkxLDcgKzIwMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3Jh
cHBlckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdyYXBwZXIoRE9NCiAgICAgd2Vha0FkZCh3b3Js
ZC5tX3dyYXBwZXJzLCAodm9pZCopZG9tT2JqZWN0LCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4o
d3JhcHBlciwgb3duZXIsIGNvbnRleHQpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNs
YXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIHVuY2FjaGVXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QsIFdyYXBwZXJDbGFzcyog
d3JhcHBlcikKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xh
c3M+IGlubGluZSB2b2lkIHVuY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERP
TUNsYXNzKiBkb21PYmplY3QsIFdyYXBwZXJDbGFzcyogd3JhcHBlcikKIHsKICAgICBpZiAoY2xl
YXJJbmxpbmVDYWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QsIHdyYXBwZXIpKQogICAgICAg
ICByZXR1cm47CkBAIC0xOTksNyArMjEwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNz
LCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIHVuY2FjaGVXcmFwcGVyKEQKIH0K
IAogI2RlZmluZSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBjbGFzc05hbWUsIG9i
amVjdCkgY3JlYXRlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihnbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpCi10ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNs
YXNzIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFwcGVyKiBjcmVhdGVXcmFwcGVyKEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBub2RlKQordGVtcGxhdGU8dHlwZW5h
bWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTRE9NV3JhcHBlciog
Y3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyog
bm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVy
KGdsb2JhbE9iamVjdC0+d29ybGQoKSwgbm9kZSkpOwpAQCAtMjA4LDcgKzIxOSw3IEBAIHRlbXBs
YXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0RPTVdyYXBw
ZXIqIGNyZWF0ZVdyYXBwZXIoCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXRlbXBsYXRlPGNs
YXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3Jh
cChKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQor
dGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5l
IEpTQzo6SlNWYWx1ZSB3cmFwKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzKiBkb21PYmplY3QpCiB7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiBK
U0M6OmpzTnVsbCgpOwpAQCAtMjE3LDEzICsyMjgsMTMgQEAgdGVtcGxhdGU8Y2xhc3MgV3JhcHBl
ckNsYXNzLCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpTRE9NR2xv
YmEKICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXcmFwcGVyQ2xhc3M+KGdsb2JhbE9iamVjdCwg
ZG9tT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01D
bGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSBnZXRFeGlzdGluZ1dyYXBwZXIoSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUg
Z2V0RXhpc3RpbmdXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzKiBkb21PYmplY3QpCiB7CiAgICAgQVNTRVJUKGRvbU9iamVjdCk7CiAgICAgcmV0dXJuIGdl
dENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpOwogfQogCi10
ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIGNyZWF0ZU5ld1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlw
ZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgY3JlYXRlTmV3V3JhcHBlcihKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogZG9tT2JqZWN0KQogewogICAg
IEFTU0VSVChkb21PYmplY3QpOwogICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxP
YmplY3QtPndvcmxkKCksIGRvbU9iamVjdCkpOwpAQCAtMjM5LDcgKzI1MCw3IEBAIHZvaWQgYWRk
SW1wdXJlUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIGNvbnN0IEpTQzo6SGFzaFRh
YmxlJiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKEpTQzo6Vk0mLCBjb25zdCBKU0M6Okhhc2hU
YWJsZSYgc3RhdGljVGFibGUpOwogCi12b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogPSAwKTsKK3ZvaWQgcmVw
b3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2Fj
aGVkU2NyaXB0KiA9IG51bGxwdHIpOwogdm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKik7CiAKIC8vIENvbnZlcnQgYSBET00gaW1wbGVtZW50YXRpb24gZXhjZXB0aW9u
IGNvZGUgaW50byBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIGluIHRoZSBleGVjdXRpb24gc3RhdGUu
CkBAIC0zMjUsMjIgKzMzNiwyMiBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIHVucwogewogICAgIEpT
Qzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0
KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZh
bHVlIGlzIG5vdCBhIHNlcXVlbmNlIikpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdGhy
b3dTZXF1ZW5jZVR5cGVFcnJvcigqZXhlYyk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAogICAgIEpTQzo6SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKCpleGVj
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgbGVuZ3RoID0gbGVuZ3Ro
VmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQpAQCAtMzY0LDMxICszNzUsMjQgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IHJldHVybiB2aWV3LT53cmFwKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFQ+IHB0cikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUPiBw
dHIpCiB7CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBwdHIuZ2V0KCkpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFQ+JiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQogewotICAgIEpTQzo6SlNBcnJheSogYXJy
YXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDAsIHZlY3Rvci5zaXplKCkpOwotCisgICAg
SlNDOjpKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwg
dmVjdG9yLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0b3Iuc2l6ZSgp
OyArK2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgdmVjdG9yW2ldKSk7Ci0KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
UmVmUHRyPFQ+PiYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPFQ+PiYgdmVjdG9yKQogewotICAgIEpTQzo6SlNB
cnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDAsIHZlY3Rvci5zaXplKCkp
OwotCisgICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywg
bnVsbHB0ciwgdmVjdG9yLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWN0
b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgdmVjdG9yW2ldLmdldCgpKSk7Ci0KICAgICByZXR1cm4g
YXJyYXk7CiB9CiAKQEAgLTM5Nyw0OSArNDAxLDQwIEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHZhbHVlKTsKIH0KIAotdGVtcGxhdGUg
PGNsYXNzIFQ+Ci1zdHJ1Y3QgSlNWYWx1ZVRyYWl0cyB7Ci0gICAgc3RhdGljIGlubGluZSBKU0M6
OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBKU1ZhbHVlVHJhaXRzIHsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFycmF5SlNW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIFdURjo6Z2V0UHRyKHZhbHVlKSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Pgot
c3RydWN0IEpTVmFsdWVUcmFpdHM8U3RyaW5nPiB7Ci0gICAgc3RhdGljIGlubGluZSBKU0M6OkpT
VmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRz
PFN0cmluZz4geworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdmFsdWUpOwogICAg
IH0KIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBKU1ZhbHVlVHJhaXRzPGZsb2F0PiB7Ci0gICAg
c3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBmbG9hdCYgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0cnVj
dCBKU1ZhbHVlVHJhaXRzPGZsb2F0PiB7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBhcnJheUpT
VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IGZsb2F0JiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVtYmVyKHZhbHVlKTsKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgSlNWYWx1ZVRyYWl0czx1bnNpZ25lZCBsb25nPiB7
Ci0gICAgc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCB1bnNpZ25lZCBsb25nJiB2YWx1ZSkKK3Rl
bXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8dW5zaWduZWQgbG9uZz4geworICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBjb25zdCB1bnNpZ25lZCBsb25nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBKU0M6OmpzTnVtYmVyKHZhbHVlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgotSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mIGl0ZXJhdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PiBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5PiYgdmVjdG9yKQogewogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIg
bGlzdDsKLSAgICB0eXBlbmFtZSBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsKLSAgICB0eXBlZGVmIEpTVmFsdWVUcmFpdHM8VD4g
VHJhaXRzVHlwZTsKLQotICAgIGZvciAodHlwZW5hbWUgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZXJhdG9yLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCi0gICAgICAgIGxpc3QuYXBwZW5kKFRyYWl0c1R5cGU6OmFycmF5SlNWYWx1ZShleGVj
LCBnbG9iYWxPYmplY3QsICppdGVyKSk7Ci0KLSAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3RBcnJh
eShleGVjLCAwLCBnbG9iYWxPYmplY3QsIGxpc3QpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IHZlY3RvcikKKyAgICAgICAgbGlzdC5hcHBlbmQoSlNWYWx1ZVRyYWl0czxUPjo6YXJyYXlKU1Zh
bHVlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZWxlbWVudCkpOworICAgIHJldHVybiBKU0M6OmNvbnN0
cnVjdEFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCwgbGlzdCk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKQEAgLTQ0OCw3ICs0NDMsNyBAQCBpbmxpbmUgUGFzc1Jl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqIHdyYXBwZXIgPSBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKICAgICBpZiAoIXdy
YXBwZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gd3JhcHBlci0+aW1wbCgpOwogfQogCkBAIC00NjIsMTAgKzQ1Nyw5IEBAIGlubGluZSBQ
YXNzUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZh
bHVlKSB7IHJldHVybiBKCiBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9G
bG9hdDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlw
ZWRWaWV3PEpTQzo6RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQogaW5saW5lIFBhc3NSZWZQdHI8
SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBy
ZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7
IH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOwogCi10ZW1wbGF0ZTw+Ci1z
dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRp
dmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGlu
ZGV4ZWRWYWx1ZSkKICAgICB7CiAgICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwpAQCAtNDczLDggKzQ2Nyw3IEBAIHN0cnVjdCBOYXRpdmVW
YWx1ZVRyYWl0czxTdHJpbmc+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTmF0
aXZlVmFsdWVUcmFpdHM8dW5zaWduZWQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPHVuc2lnbmVkPiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4
ZWRWYWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKQpAQCAtNDg4
LDggKzQ4MSw3IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewogICAgIH0K
IH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewordGVt
cGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlLCBmbG9hdCYgaW5kZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaW5kZXhlZFZhbHVl
ID0ganNWYWx1ZS50b0Zsb2F0KGV4ZWMpOwpAQCAtNDk3LDggKzQ4OSw3IEBAIHN0cnVjdCBOYXRp
dmVWYWx1ZVRyYWl0czxmbG9hdD4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlIDxjbGFzcyBULCBj
bGFzcyBKU1Q+Ci1WZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFQqICgqdG9UKShKU0M6OkpTVmFsdWUg
dmFsdWUpKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBWZWN0b3I8UmVmUHRy
PFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIFQqICgqdG9UKShKU0M6OkpTVmFsdWUgdmFsdWUpKQogewogICAgIGlmICghaXNK
U0FycmF5KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4+KCk7CkBAIC01
MTIsMTUgKzUwMywxNCBAQCBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsCiAgICAgICAgIGlmIChlbGVt
ZW50LmluaGVyaXRzKEpTVDo6aW5mbygpKSkKICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoKCp0b1QpKGVsZW1lbnQpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIEFycmF5IGVsZW1l
bnQgdHlwZSIpKTsKKyAgICAgICAgICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpleGVj
KTsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotVmVjdG9y
PFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewpAQCAtNTQzLDE0ICs1MzMsMTMgQEAg
VmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVZl
Y3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHN0
YXJ0SW5kZXggPSAwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJn
dW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApCiB7CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBBU1NFUlQoc3Rh
cnRJbmRleCA8PSBsZW5ndGgpOwogCiAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKLSAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwogICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVU
cmFpdHM8VD4gVHJhaXRzVHlwZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBp
IDwgbGVuZ3RoOyArK2kpIHsKQEAgLTYwMSw0MSArNTkwLDIyIEBAIGlubGluZSBBdG9taWNTdHJp
bmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogICAgIHJldHVybiBBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUaGlzSW1wPgotaW5saW5lIGNvbnN0IEpTQzo6SGFzaFRh
YmxlVmFsdWUqIGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmcoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgY29uc3QgSlNDOjpIYXNoVGFibGVWYWx1ZSogZ2V0U3Rh
dGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIGNvbnN0IEpTQzo6SGFzaFRhYmxl
KiB0YWJsZSA9IFRoaXNJbXA6OmluZm8oKS0+cHJvcEhhc2hUYWJsZShleGVjKTsKKyAgICBjb25z
dCBKU0M6Okhhc2hUYWJsZSogdGFibGUgPSBET01DbGFzczo6aW5mbygpLT5wcm9wSGFzaFRhYmxl
KGV4ZWMpOwogICAgIGlmICghdGFibGUpCi0gICAgICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3RFbnRyeVdpdGhvdXRDYWNoaW5nPHR5cGVuYW1lIFRoaXNJbXA6OkJhc2U+KGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRD
YWNoaW5nPHR5cGVuYW1lIERPTUNsYXNzOjpCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
IGNvbnN0IEpTQzo6SGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CiAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBh
cmVudAotICAgICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGlu
Zzx0eXBlbmFtZSBUaGlzSW1wOjpCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzx0eXBlbmFtZSBET01D
bGFzczo6QmFzZT4oZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gZW50cnk7CiB9CiAK
LXRlbXBsYXRlIDw+Ci1pbmxpbmUgY29uc3QgSlNDOjpIYXNoVGFibGVWYWx1ZSogZ2V0U3RhdGlj
VmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzxKU0RPTVdyYXBwZXI+KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBKU0M6Okhhc2hU
YWJsZVZhbHVlKiBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPEpTRE9NV3Jh
cHBlcj4oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNz
IEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbiB7Ci0gICAgdHlwZWRlZiBjaGFyIFllc1R5cGU7
Ci0gICAgc3RydWN0IE5vVHlwZSB7Ci0gICAgICAgIGNoYXIgcGFkZGluZ1s4XTsKLSAgICB9Owot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgZGVjbHR5cGUoc3RhdGljX2Nh
c3Q8VSo+KG51bGxwdHIpLT5tZW1vcnlDb3N0KCksIFllc1R5cGUoKSkgdGVzdChpbnQpOwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgTm9UeXBlIHRlc3QoLi4uKTsKLQot
cHVibGljOgotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHRlc3Q8VD4oMCkp
ID09IHNpemVvZihZZXNUeXBlKTsKLX07Ci0KIGVudW0gU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24g
ewogICAgIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvciwKICAgICBSZXBvcnRTZWN1cml0eUVycm9y
LApAQCAtNjQ4LDEwICs2MTgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTZWN1cml0eVJlcG9ydGlu
Z09wdGlvbiA9IFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfTsKICAgICAKLSAgICAKLSNkZWZpbmUg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKC4uLikgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nSW50ZXJuYWwoX19WQV9BUkdTX18sIChjb25zdCBjaGFyKiludWxscHRyKQotU3Ry
aW5nIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsKGNvbnN0IGNoYXIqLCAu
Li4pOwotICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNET01CaW5k
aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAppbmRleCBlNTA0ZGFmMThjNTBmNzU3Yzc1MmQ0NTRjMmFiNDc5ZmI5YjVlZjAzLi5lZWM3
ZTg4MjM0MzZiNDFlYWRkYjFmNGIwNTJkYjZhMmU4NWRkOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBA
IEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgfQogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkFyZ3VtZW50IDIgKCdzdWNjZXNzQ2FsbGJhY2snKSIsICIgdG8gTmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgIkFyZ3VtZW50IDIgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBKU05hdmln
YXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgyKS5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJBcmd1bWVu
dCAzICgnZXJyb3JDYWxsYmFjaycpIiwgIiB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
IG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgIkFyZ3VtZW50IDMgKCdlcnJvckNhbGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBKU05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgyKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAwMjAxZWI5OWIzNGI2MjZmNmIw
ODEwZWI4YWY2NmY1MWNmNjkzNjkyLi4xY2M1NjhkNGU4YjVlOTY4Mjk1NzMwNjc2ODdmMDA1ZTM1
YjJiMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCkBAIC0zMiw4ICszMiw4IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci1PQkpDX0NMQVNTIFdlYlNjcmlwdE9iamVjdDsKIE9CSkNfQ0xBU1Mg
SlNDb250ZXh0OworT0JKQ19DTEFTUyBXZWJTY3JpcHRPYmplY3Q7CiAjZW5kaWYKIAogc3RydWN0
IE5QT2JqZWN0OwpAQCAtNTQsOCArNTQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIEZyYW1lOworY2xh
c3MgSFRNTERvY3VtZW50OworY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBTY3JpcHRT
b3VyY2VDb2RlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRnZXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDBjMzZiZGE1YWUzZjU0MGQ4YjRkNDY1NmYyN2FlNzQzNzQxZmFkNDYuLjA4MjA5MmEyMWQ0N2Fh
NDAxNzg1NGY3YWMwNGY1NzIwYzM2ZTJkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yMTQ1LDE5ICsyMTQ1LDE0IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUt
PmlzU3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LykgewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFt
ZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBl
ckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7XG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoXCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICckbmFtZScgb24gYSBub24tJGludGVyZmFjZU5hbWUg
b2JqZWN0LlwiKSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZyhcIlRoZSBcIiwgXCIkaW50
ZXJmYWNlTmFtZVwiLCBcIi5cIiwgXCIkbmFtZVwiLCBcIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgXCIsIFwiJGludGVyZmFjZU5hbWVcIikpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PCR7
Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHNsb3RCYXNlKSlcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CkBAIC0yMjY3LDcgKzIyNjIsNiBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpO1xu
Iik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNpZiAoISRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2VwdGlvbiJ9
KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpO1xuIikgaWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxXaXRoIn07CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTtcbiIpIGlmICRpc051bGxhYmxlOwogCiAgICAgICAgICAgICAg
ICAgbXkgJGNhY2hlSW5kZXggPSAwOwpAQCAtMjMwOSw3ICsyMzAzLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGludGVyZmFjZU5hbWUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKSBpZiAhJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUg
cmVzdWx0ID0gIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQo
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
b2JqLmdldCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAk
anNUeXBlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIzMzksMTIgKzIzMzMsMTMg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVy
RnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhp
cyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKKwogICAg
ICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaXNOdWxsKVxuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7XG4iKTsKICAgICAgICAgICAgIH0KIApAQCAtMjM1OCwxNSArMjM1MywxOCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7CiAgICAgICAgICAgICBteSAkY29u
c3RydWN0b3JGdW5jdGlvbk5hbWUgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0
b3IiOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7
Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKTsKICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0In0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVu
Y29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSB0byR7
Y2xhc3NOYW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKKyAgICAgICAgICAg
IH0gZWxzaWYgKENvbnN0cnVjdG9yU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UpKSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0
cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JU
aGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4i
KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpIGlmIENvbnN0cnVjdG9yU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihiYXNlVmFs
dWUpO1xuIikgaWYgIUNvbnN0cnVjdG9yU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25z
dHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oYmFzZVZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFkb21PYmplY3QpXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTtcbiIpOwpAQCAtMjQ0NCw5ICsyNDQyLDkgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhp
c09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTtcbiIpOworCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJB
WV9JTkRFWCkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBVTlVTRURfUEFSQU0oc2hvdWxkVGhyb3cpO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihl
eGVjLCBpbmRleCwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0yNDkyLDcgKzI0OTAsNiBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVj
KTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21Qcm94eVRvSlNPYmplY3QifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFt
ZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CkBAIC0yNTAwLDcgKzI0OTcsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gIiAuIEdldENh
c3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiVGhl
IFwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiLlwiLCBcIiRuYW1lXCIsIFwiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiKSk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
bjtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4i
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0yNTQwLDcgKzI1MzcsNiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2Fz
dGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwi
KSwgdmFsdWUpO1xuIik7Ci0KICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIG9iamVjdFxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwi
JG5hbWVcIiksIHZhbHVlKTtcbiIpOwpAQCAtMjU2MSw3ICsyNTU3LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRhcmdUeXBlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghdmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZvKCkpKSB7XG4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
XCJUaGUgXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIuXCIsIFwiJG5hbWVcIiwgXCIgYXR0cmli
dXRlIG11c3QgYW4gaW5zdGFuY2Ugb2YgXCIsIFwiJGFyZ1R5cGVcIikpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIk
YXJnVHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yNzM1LDcgKzI3MzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4g
Iih0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIG15ICRkb21GdW5jdGlvbk5h
bWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiQ2FuIG9u
bHkgY2FsbCBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIi5cIiwgXCIkZG9tRnVuY3Rpb25OYW1l
XCIsIFwiIG9uIGluc3RhbmNlcyBvZiBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiKSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25O
YW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAk
e2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKTsKQEAgLTI4MzgsMTIgKzI4MzQsMTMgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgaWYgKCRj
b25zdGFudC0+dHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nT3JOdWxsKGV4ZWMs
IFN0cmluZygiIC4gJGNvbnN0YW50LT52YWx1ZSAuICIpKSk7XG4iKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNv
ZGVkSlNWYWx1ZSAke2dldHRlcn0oRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKCIgLiAkY29uc3RhbnQtPnZhbHVlIC4gIikpO1xuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CkBAIC0zMTc5LDIyICszMTc2LDE5IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OwogICAgIH0KICAgICAKLSAgICAKLSAgICBteSAkcHJldHR5RnVuY3Rpb25OYW1lOworICAgIG15
ICRxdW90ZWRGdW5jdGlvbk5hbWU7CiAgICAgaWYgKCEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgbXkgJG5hbWUgPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgJHByZXR0eUZ1bmN0aW9uTmFtZSA9
ICJcIiRpbnRlcmZhY2VOYW1lXCIsIFwiLlwiLCBcIiRuYW1lXCIiOworICAgICAgICAkcXVvdGVk
RnVuY3Rpb25OYW1lID0gIlwiJG5hbWVcIiI7CiAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxXaXRoIn0sIFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpIiwgJGZ1bmN0aW9uKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJHByZXR0eUZ1bmN0aW9u
TmFtZSA9ICJcInRoZSBcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiBjb25zdHJ1Y3RvclwiIjsK
KyAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJudWxscHRyIjsKICAgICB9CiAKICAgICAk
aW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOwogICAgIGZv
cmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAg
IG15ICRhcmdUeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKLSAgICAgICAgJGFyZ3VtZW50SW5kZXgg
PSAkYXJndW1lbnRJbmRleCArIDE7CiAgICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGgg
W09wdGlvbmFsXSBzaG91bGQgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbCB3aXRoIGZld2VyIGFyZ3Vt
ZW50cy4KICAgICAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgd2l0aCBbT3B0aW9uYWw9Li4uXSBz
aG91bGQgbm90IGdlbmVyYXRlIHRoZSBlYXJseSBjYWxsLgogICAgICAgICAjIE9wdGlvbmFsIERp
Y3Rpb25hcnkgYXJndW1lbnRzIGFsd2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgZGVmYXVsdCBvZiBl
bXB0eSBkaWN0aW9uYXJ5LgpAQCAtMzIzMyw3ICszMjI3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0
cjwkYXJnVHlwZT4gJG5hbWU7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwgXCIgKCdcIiwgXCIkbmFtZVwiLCBc
IicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBtdXN0IGJlIGEgZnVuY3Rpb25cIikp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAkYXJnc0luZGV4
LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4i
KTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBjcmVh
dGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oZXhlYywganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoJGFyZ3NJbmRleCkpO1xuIik7CkBAIC0zMjQzLDcgKzMyMzcsNyBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5k
ZXgpLmlzRnVuY3Rpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50SW5kZXhcIiwgXCIgKCdc
IiwgXCIkbmFtZVwiLCBcIicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25OYW1lLCBcIiBtdXN0IGJl
IGEgZnVuY3Rpb25cIikpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMs
ICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rp
b25OYW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7
CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9u
LmgiKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0
cjwkYXJnVHlwZT4gJG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNr
Q2xhc3NOYW1lfT4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3NJbmRleCkpO1xu
Iik7CkBAIC0zMjcxLDcgKzMyNjUsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVt
ZW50VHlwZT4gJG5hbWU7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3NJbmRleCwgY291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5o
ZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZvKCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKFwiQXJndW1lbnQgXCIsIFwiJGFyZ3VtZW50
SW5kZXhcIiwgXCIgKCdcIiwgXCIkbmFtZVwiLCBcIicpIHRvIFwiLCAkcHJldHR5RnVuY3Rpb25O
YW1lLCBcIiBtdXN0IGJlIGEgZnVuY3Rpb25cIikpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKmV4ZWMsIGksIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rp
b25OYW1lLCBcIiRhcmdUeXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkbmFtZS5hcHBlbmQodG8kYXJnVHlwZShleGVjLT51bmNoZWNrZWRB
cmd1bWVudChpKSkpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIH1cbiIpCiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzI5OSwxMCArMzI5Myw5IEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICRlbnVtcyA9ICRlbnVtcyAuICIsIFxcXCIiIC4gJGVudW1WYWx1ZSAu
ICJcXFwiIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgIGlmICgiIC4gam9pbigi
ICYmICIsIEBlbnVtQ2hlY2tzKSAuICIpXG4iKTsKLSAgICAgICAgICAgIHB1c2ggKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZyhcIkFyZ3VtZW50IFwiLCBcIiRhcmd1bWVudEluZGV4XCIsIFwi
ICgnXCIsIFwiJG5hbWVcIiwgXCInKSB0byBcIiwgJHByZXR0eUZ1bmN0aW9uTmFtZSwgXCIgbXVz
dCBiZSBvbmUgb2Y6IFwiLCBcIiRlbnVtc1wiKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2ggKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9y
KCpleGVjLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3Rl
ZEZ1bmN0aW9uTmFtZSwgXCIkZW51bXNcIik7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBp
cyBwcmVzZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgogICAgICAgICAgICAgIyBp
bnRlcmZhY2UgdHlwZSwgdGhlbiBpZiB0aGUgaW5jb21pbmcgdmFsdWUgZG9lcyBub3QgaW1wbGVt
ZW50IHRoYXQgaW50ZXJmYWNlLCBhIFR5cGVFcnJvcgpAQCAtMzMxNCw4ICszMzA3LDggQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAKICAgICAgICAgICAgICAgICBteSAkYXJnVmFsdWUg
PSAiZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkiOwogICAgICAgICAgICAgICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAk
YXJnc0luZGV4ICYmICEke2FyZ1ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEke2FyZ1Zh
bHVlfS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpXG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoXCJBcmd1bWVudCBcIiwgXCIk
YXJndW1lbnRJbmRleFwiLCBcIiAoJ1wiLCBcIiRuYW1lXCIsIFwiJykgdG8gXCIsICRwcmV0dHlG
dW5jdGlvbk5hbWUsIFwiIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgXCIsIFwiJGFyZ1R5cGVcIikp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
ISR7YXJnVmFsdWV9LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgISR7YXJnVmFsdWV9LmluaGVyaXRz
KEpTJHthcmdUeXBlfTo6aW5mbygpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVj
LCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0
aW9uTmFtZSwgXCIkYXJnVHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIApAQCAtNDQ3NCw3ICs0NDY3LDcgQEAgRU5ECiAgICAgICAgICAgICAgICAgcHVzaChA
Y29uc3RydWN0b3JBcmdMaXN0LCAiKmNvbnRleHQiKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3Rl
ZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWNvbnRleHQpXG4iKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgXCIke2ludGVyZmFjZU5hbWV9IGNvbnN0cnVjdG9y
IGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGVcIikpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3Rv
ckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcigqZXhlYywgXCIke2ludGVyZmFjZU5hbWV9XCIpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKmNh
c3RlZFRoaXMtPmRvY3VtZW50KCkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAK
aW5kZXggZWNkYjQ0NTE0MDhjODJlYTdhZTkyMGYwZTg3MTU1Yjk5ZTgwNWI4ZC4uNzczMzRmYmY1
YjYzNmYzMjE2ZjBlOTU2ZTI5OTIyMGU5Y2EyOTIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKQEAgLTE0NywyOCArMTQ3LDIxIEBAIGJvb2wgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXBy
ZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdleGNpdGluZ0F0dHInIG9uIGEgbm9u
LVRlc3RBY3RpdmVET01PYmplY3Qgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUg
IiwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiLiIsICJleGNpdGluZ0F0dHIiLCAiIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RBY3RpdmVET01P
YmplY3QiLCAiZXhjaXRpbmdBdHRyIik7CiAgICAgfQogICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RBY3RpdmVET01PYmplY3QmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmV4Y2l0aW5n
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKQEAgLTE4Nyw3ICsxODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5j
dAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICIuIiwg
ImV4Y2l0aW5nRnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEFjdGl2ZURPTU9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RB
Y3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0yMDYsNyArMTk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdl
KEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiLiIs
ICJwb3N0TWVzc2FnZSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0QWN0aXZlRE9NT2JqZWN0
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEFjdGl2
ZURPTU9iamVjdCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwogICAgIFRlc3RB
Y3RpdmVET01PYmplY3QmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAppbmRleCBkMmI0NjAzNjY1Nzk0ODg4OTQ0NzM3Y2U5MzkyODYzNDVlMzBiODI1Li40NGM0MTVk
OWIyZjNhNDU0YTBhYjRhNjIxNmRkZTg3YmM0NWI5MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKQEAgLTE1MywxMCArMTUzLDggQEAgYm9vbCBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3QKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
QEAgLTE3Myw3ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1
c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuYwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICIuIiwgImFub3RoZXJG
dW5jdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbygpKTsKICAgICBU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggMmQ5NmY2Y2IwZGZmMmJlYzgwNWM3MzExZGJmZmFmMjY3YjY1NWQzMS4uOWFk
OWVlZmRiZGM4ZThmZTM2MzM4ZGIwY2JmY2NkYjU3ZjFlYjYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTgwLDE2ICsxODAsMTEgQEAgYm9vbCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHIxJyBvbiBhIG5vbi1U
ZXN0RXZlbnRDb25zdHJ1Y3RvciBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiLiIsICJhdHRyMSIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJh
dHRyMSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV2ZW50Q29u
c3RydWN0b3ImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmF0dHIxKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE5OSwyNiArMTk0LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHIyJyBvbiBhIG5vbi1U
ZXN0RXZlbnRDb25zdHJ1Y3RvciBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiLiIsICJhdHRyMiIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIpKTsKKyAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJh
dHRyMiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV2ZW50Q29u
c3RydWN0b3ImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmF0dHIyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAo
IWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA5ODY0M2Y2MmZlMmI2NDU2NmQ5ZWVjZjNlNmUxZjQ3
YTllYWE1YWE3Li5mYTNiZWU3ODI5MzQ2MWI5OTc5ZmI5ODZlZGJlMjVlYzdkODMxOGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE4NCwxMCArMTg0LDggQEAgYm9vbCBKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGUKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEV2ZW50VGFyZ2V0KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZG9tT2JqZWN0KQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKQEAgLTIxMyw3ICsyMTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBl
RnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RFdmVudFRh
cmdldCIsICIuIiwgIml0ZW0iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFyZ2V0
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50
VGFyZ2V0IiwgIml0ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRlc3RFdmVudFRhcmdldCYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKQEAgLTIzNCw3ICsyMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5
IGNhbGwgIiwgIlRlc3RFdmVudFRhcmdldCIsICIuIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdEV2ZW50VGFyZ2V0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50VGFyZ2V0IiwgImFkZEV2ZW50TGlzdGVu
ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2
ZW50VGFyZ2V0OjppbmZvKCkpOwogICAgIFRlc3RFdmVudFRhcmdldCYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CkBA
IC0yNDksNyArMjQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW4KICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0RXZlbnRUYXJnZXQiLCAiLiIsICJyZW1vdmVFdmVudExpc3RlbmVyIiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RFdmVudFRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRhcmdldCIsICJyZW1vdmVFdmVudExpc3Rl
bmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RF
dmVudFRhcmdldDo6aW5mbygpKTsKICAgICBUZXN0RXZlbnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpA
QCAtMjY0LDcgKzI2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQoRXhlCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIi4iLCAiZGlzcGF0Y2hFdmVudCIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0RXZlbnRUYXJnZXQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRUYXJnZXQiLCAiZGlzcGF0Y2hFdmVudCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6
OmluZm8oKSk7CiAgICAgVGVzdEV2ZW50VGFyZ2V0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAppbmRleCAxYmZjZTVjZTM3NzI5NTA4NDkyNGFlYjU4ZGUwYjY3MzA3MTZmMDU3Li41ZTNhNmVi
MzBlOTYxZWViZjU3ODdlN2MxNmZiY2Y3OWEyZmFjNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cApAQCAtMTM5LDI2ICsxMzksMTkgQEAgYm9vbCBKU1Rlc3RFeGNlcHRpb246OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdEV4Y2VwdGlvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9u
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICduYW1lJyBv
biBhIG5vbi1UZXN0RXhjZXB0aW9uIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0RXhjZXB0aW9uIiwgIi4iLCAibmFtZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0RXhjZXB0aW9uIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV4Y2Vw
dGlvbiIsICJuYW1lIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgVGVzdEV4Y2VwdGlvbiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwubmFtZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUg
anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggMTM0ODQ1ZWE0ZGIxNjhiMTZjZTZhYjUwMzM4ZjFk
ZGRjMzM1NGMzYi4uZjhmZmI2OWFhYzQ1MTMxY2JmMWQyODQ5ZTAwNGViZGE5OTBlN2YzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTE5LDEwICsxMTks
OCBAQCBib29sIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4
IGRlZDFiZGZiZjczZjRjOGQxNDczMWFlY2Y0ZGExZjc3Y2E2ZTUyZGIuLmQ2YzBmZWUwYjBlMjM5
MzdkNzllZDE1MzA2ZGQwZWEyMmZmN2Q2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0x
NzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWMKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCAiVGVzdEludGVyZmFjZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRv
Y3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3Rv
ckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiKTsKICAgICBS
ZWZQdHI8VGVzdEludGVyZmFjZT4gb2JqZWN0ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKCpjb250
ZXh0LCBzdHIxLCBzdHIyLCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CkBAIC00MTYsNyArNDE2LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKEV4ZWNTdGF0
ZSoKIHsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDI4LDcgKzQyNyw2IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRp
Y0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0SW50ZXJmYWNl
OjppbXBsZW1lbnRzU3RhdGljQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC00MzksMTYgKzQzNywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSgog
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdpbXBsZW1lbnRzU3RyMScgb24gYSBub24tVGVzdEludGVyZmFjZSBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImlt
cGxlbWVudHNTdHIxIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNT
dHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJ
bnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmltcGxlbWVudHNT
dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ2MCwxNiAr
NDUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBT
dHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltcGxlbWVudHNT
dHIyJyBvbiBhIG5vbi1UZXN0SW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAiaW1wbGVtZW50c1N0cjIiLCAiIGdldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsK
KyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
U3RyMiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFj
ZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuaW1wbGVtZW50c1N0cjIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNDgxLDE0ICs0NjksMTAgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIz
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnaW1wbGVtZW50c1N0cjMnIG9uIGEgbm9uLVRlc3RJbnRl
cmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZh
Y2UiLCAiLiIsICJpbXBsZW1lbnRzU3RyMyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIs
ICJpbXBsZW1lbnRzU3RyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoZXhlYykpOwog
fQpAQCAtNDk5LDE2ICs0ODMsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnaW1wbGVtZW50c05vZGUnIG9uIGEgbm9uLVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRz
Tm9kZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC5pbXBsZW1lbnRzTm9kZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtNTIxLDcgKzUwMCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKEV4ZWNTdGF0CiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihU
ZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTMzLDcgKzUxMSw2IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTU0NCwxNiArNTIxLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMs
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnc3VwcGxlbWVudGFsU3RyMScgb24gYSBub24tVGVzdEludGVyZmFjZSBv
YmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdEludGVyZmFjZSIsICIu
IiwgInN1cHBsZW1lbnRhbFN0cjEiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdEludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsU3RyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICB9Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTY1LDE2ICs1MzcsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVt
cHQgdG8gYWNjZXNzIHByb3BlcnR5ICdzdXBwbGVtZW50YWxTdHIyJyBvbiBhIG5vbi1UZXN0SW50
ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJm
YWNlIiwgIi4iLCAic3VwcGxlbWVudGFsU3RyMiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFj
ZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0K
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoJmltcGwpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01ODYsMTQgKzU1MywxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBsZW1lbnRhbFN0cjMnIG9uIGEgbm9u
LVRlc3RJbnRlcmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIzIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7
CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VwcGxlbWVu
dGFsU3RyMyhleGVjKSk7CiB9CkBAIC02MDQsMTYgKzU2NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N1cHBsZW1lbnRhbE5vZGUnIG9uIGEgbm9uLVRlc3RJbnRl
cmZhY2Ugb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZh
Y2UiLCAiLiIsICJzdXBwbGVtZW50YWxOb2RlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVu
dGFsTm9kZSgmaW1wbCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC02MjEsMTAgKzU3OSw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiAKICNlbmRpZgogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICgh
ZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKQEAgLTY1
NSw3ICs2MTEsNiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsCiB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0
aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTY2OCwxMCArNjIzLDkgQEAgdm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1l
bnRzU3RyMiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNjg3LDEw
ICs2NDEsOSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNTdHIzIiwgIiBzZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3Ry
MyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEltcGxlbWVu
dHNTdHIzKGV4ZWMsIHZhbHVlKTsKQEAgLTcwMiwxMCArNjU1LDkgQEAgdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBs
ZW1lbnRzTm9kZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtNzIx
LDcgKzY3Myw2IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqCiB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgY29uc3QgU3RyaW5nJiBu
YXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzM0LDEwICs2ODUsOSBAQCB2b2lkIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZQogdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0SW50ZXJmYWNlIiwgIi4iLCAic3Vw
cGxlbWVudGFsU3RyMiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC03NTMsMTAgKzcwMyw5IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0CiB2b2lkIHNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyog
YmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxTdHIzIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxTdHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzdGVkVGhp
cy0+c2V0U3VwcGxlbWVudGFsU3RyMyhleGVjLCB2YWx1ZSk7CkBAIC03NjgsMTAgKzcxNyw5IEBA
IHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0CiB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RJbnRl
cmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxOb2RlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTc5NCw3ICs3NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEo
RQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwgImltcGxlbWVudHNNZXRob2Qx
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNN
ZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpbXBsLmltcGxlbWVudHNNZXRob2QxKCk7CkBAIC04MDksNyArNzU3
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZh
Y2UiLCAiLiIsICJpbXBsZW1lbnRzTWV0aG9kMiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
SW50ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDIpCkBAIC04MzgsNyArNzg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRo
b2QzKEUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJpbXBsZW1lbnRzTWV0
aG9kMyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50ZXJmYWNlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aW1wbGVtZW50c01ldGhvZDMoZXhlYykpOwogfQpAQCAtODYwLDcgKzgwOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2QxCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0SW50ZXJmYWNlIiwg
Ii4iLCAic3VwcGxlbWVudGFsTWV0aG9kMSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0SW50
ZXJmYWNlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgVGVz
dEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBUZXN0U3VwcGxlbWVu
dGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKCZpbXBsKTsKQEAgLTg3NSw3ICs4MjMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
U3VwcGxlbWVudGFsTWV0aG9kMgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdEludGVyZmFjZSIsICIuIiwg
InN1cHBsZW1lbnRhbE1ldGhvZDIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdEludGVyZmFj
ZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIFRlc3RJbnRl
cmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpCkBAIC05MDQsNyArODUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RJbnRlcmZhY2UiLCAiLiIsICJzdXBwbGVtZW50YWxNZXRob2Qz
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RJbnRlcmZhY2UiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPnN1cHBsZW1lbnRhbE1ldGhvZDMoZXhlYykpOwogfQpAQCAtOTIzLDMzICs4NzEsMjkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG8KIC8vIENvbnN0YW50IGdldHRlcnMKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDEoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEpKTsKIH0KIAogI2VuZGlmCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMikpOwogfQogCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMShFeGVjU3RhdGUqLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMSkpOwogfQogCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVNVUFBMRU1FTlRBTENPTlNUQU5UMihFeGVjU3RhdGUqLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggNGZl
MGRkYWI4NDQwMDExYjYzY2NhZDg2OTc1YmRmOGJjNDFmZjNkZS4uOGI4OTcwN2NkODk2ZjkzY2Jh
MmFkZmM0YTU2ODM0MDY4ZDcyNDdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcApAQCAtMTI2LDEwICsxMjYsOCBAQCBib29sIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMTQ2LDEzICsxNDQsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rp
b25NZXRob2QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAiLiIsICJtZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI6OmluZm8oKSk7CiAgICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNG
dW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJsaXN0ZW5l
ciIsICInKSB0byAiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAiLiIsICJtZXRob2Qi
LCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAibGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI+IGxpc3RlbmVyID0gSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3Qo
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgaW1wbC5tZXRob2QobGlzdGVuZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZDEzYTY1OTAxODZiZDM3OTJhNjdkOTcxNzhjNzc2Yjg3MTRkOWI0ZC4uODZjMzIzNzZmM2E3NDg4
YzM0NTk1OTFmYTE5ODMxYTcyMjFmMDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcApAQCAtMTY2LDEwICsxNjYsOCBAQCBib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmpl
Y3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmlu
ZGV4IDU5ZDMxY2JiYjNjZTU0YWIyODZkZDhmODRkNDgyMTQ2NzkwOGM3NzAuLmIwNzBlYWQ4YTE1
ZTBjOTcyMDc4ZDhlNGNlZjU3ZGZhNzg3NDRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTEyMywxMCAr
MTIzLDggQEAgYm9vbCBKU1Rlc3ROb2RlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oYmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE5vZGVQcm90b3R5cGUqPihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMWZiZWE4NTVj
Y2RkZGU0NzE4M2I1NmYxYTAxMDEwYjFiYWMwNTcxMy4uODFiM2Q5ZjFlODAzNDRlNTNiMDYyOTRi
NWQyOTBiYjJmNzAwZDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RPYmooRXhlY1N0YXRlKgogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAidGVzdENhbGxiYWNrIiwgIicpIHRv
ICIsICJ0aGUgIiwgIlRlc3RPYmoiLCAiIGNvbnN0cnVjdG9yIiwgIiBtdXN0IGJlIGEgZnVuY3Rp
b24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigq
ZXhlYywgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqIiwgbnVsbHB0cik7CiAgICAgUmVmUHRy
PFRlc3RDYWxsYmFjaz4gdGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09i
amVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKICAgICBSZWZQdHI8VGVzdE9iaj4gb2JqZWN0ID0gVGVzdE9iajo6Y3JlYXRlKHRlc3RD
YWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7CkBAIC0xMDA5LDE2
ICsxMDA5LDExIEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVhZE9ubHlMb25nQXR0cicgb24gYSBub24tVGVz
dE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgInJlYWRPbmx5TG9uZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJl
YWRPbmx5TG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTAyOCwxNiArMTAyMywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAg
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAncmVh
ZE9ubHlTdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVhZE9ubHlTdHJpbmdBdHRyIiwgIiBn
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwucmVhZE9ubHlTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTEwNDcsMTYgKzEwMzcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlYWRPbmx5
VGVzdE9iakF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWFkT25seVRlc3RPYmpBdHRyIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5yZWFkT25seVRlc3RPYmpBdHRyKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDY3LDcgKzEwNTIsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5TG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iagogewogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoVGVzdE9iajo6c3RhdGljUmVhZE9ubHlMb25n
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDc3
LDcgKzEwNjEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0
cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogewogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
VGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0xMDg2LDE0ICsxMDY5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdU
ZXN0U3ViT2JqJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiVGVzdFN1Yk9iaiIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0
U3ViT2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiVGVzdFN1Yk9iaiIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KQEAgLTExMDIsMTQgKzEwODEsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZycgb24gYSBub24t
VGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIs
ICIuIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICB9
CiAgICAgaWYgKCFjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTExMjMsMTYgKzEwOTgsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAnZW51bUF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJlbnVtQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVt
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImVudW1BdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTQyLDE2ICsxMTEyLDExIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2J5dGVB
dHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAiYnl0ZUF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJi
eXRlQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwuYnl0ZUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTE2MSwxNiArMTEyNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVgogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRl
ZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnb2N0ZXRBdHRyJyBvbiBhIG5vbi1UZXN0T2Jq
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
b2N0ZXRBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgIH0K
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwub2N0ZXRBdHRyKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExODAsMTYgKzExNDAs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNo
b3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nl
c3MgcHJvcGVydHkgJ3Nob3J0QXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInNob3J0QXR0ciIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJzaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTk5LDE2ICsxMTU0LDExIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ3Vuc2lnbmVkU2hvcnRBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidW5zaWduZWRTaG9ydEF0dHIi
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWdu
ZWRTaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTIxOCwxNiArMTE2OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdsb25nQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImxvbmdB
dHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RP
YmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNs
b3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMzcsMTYgKzExODIsMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1YKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2xvbmdMb25nQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImxvbmdMb25nQXR0ciIsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdMb25nQXR0cigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjU2LDE2ICsxMTk2LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExv
bmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9i
amVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidW5z
aWduZWRMb25nTG9uZ0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI3NSwxNiArMTIxMCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAg
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0
cmluZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5zdHJpbmdBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyOTQsMTYgKzEyMjQsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7
Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0
eSAndGVzdE9iakF0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ0ZXN0T2JqQXR0ciIsICIgZ2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJ0ZXN0T2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTMxMywxNiArMTIzOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpU
ZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ1hNTE9iakF0dHInIG9uIGEg
bm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJYTUxPYmpBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJYTUxPYmpB
dHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC54bWxPYmpBdHRyKCkp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzMyLDE2ICsxMjUy
LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdjcmVhdGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjcmVhdGUiLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
Y3JlYXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY3JlYXRlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNCb29sZWFuKGltcGwuaXNDcmVhdGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTM1MSwxNiArMTI2NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3Rl
ZFN0cmluZ0F0dHInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5n
YXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzcw
LDE2ICsxMjgwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXBy
ZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIn
IG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzg5LDE2ICsxMjk0LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQg
YXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRy
JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiLCAiIGdldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZElu
dGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKHN0ZDo6bWF4KDAsIGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQwOCwxNiArMTMwOCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdyZWZsZWN0ZWRCb29sZWFuQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEJv
b2xlYW5BdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Qm9vbGVhbkF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jv
b2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVk
Ym9vbGVhbmF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTQyNywxNiArMTMyMiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRC
b29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZFVSTEF0dHInIG9u
IGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRl
c3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRVUkxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVS
TEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0NDYsMTYgKzEzMzYsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3Bl
cnR5ICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkU3RyaW5n
QXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5n
QXR0ciIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTE0NjUsMTYgKzEzNTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J3JlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikp
OwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxlY3RlZEN1
c3RvbUludGVncmFsQXR0ciIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDg0LDE2ICsxMzY0LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0
byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyJyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0K
LSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTUwMywxNiArMTM3OCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0
ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3JlZmxlY3RlZEN1c3RvbVVSTEF0dHInIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1
c3RvbVVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5nZXRVUkxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTIyLDE2ICsxMzkyLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBl
ZEFycmF5QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ3R5cGVkQXJyYXlBdHRyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidHlwZWRBcnJh
eUF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwog
ICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudHlwZWRBcnJheUF0dHIoKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE1NDEsMTQgKzE0MDYsMTAg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY28KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRl
bXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9u
LVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0xNTYxLDE2ICsxNDIyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTU4MCwxNCArMTQzNiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgb24gYSBub24tVGVzdE9iaiBv
YmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKQEAgLTE2MDAsMTYgKzE0NTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAnc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RPYmogb2Jq
ZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1w
bC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjE5LDE0ICsxNDY2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY3VzdG9tQXR0
cicgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImN1c3RvbUF0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImN1c3RvbUF0dHIiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5jdXN0b21BdHRyKGV4ZWMpKTsKIH0KQEAgLTE2MzUsMTQgKzE0NzgsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKGV4ZWMpKTsKQEAgLTE2NTMsMTQgKzE0
OTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAg
fQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTY3NCwxNCArMTUw
OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTTwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTY5NCwxNCAr
MTUyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcycgb24gYSBub24tVGVzdE9iaiBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgIiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTE3MTcsMTQgKzE1NDQsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0
YXRlKiBleGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKQEAgLTE3MzgsMTQgKzE1NjEsMTAgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwpAQCAtMTc2MSwxNCArMTU4MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5n
KCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICd3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZScgb24gYSBub24tVGVz
dE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICBpZiAoIXNjcmlwdENvbnRleHQpCkBAIC0xNzgyLDE0ICsxNTk3LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmliCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgpKSk7
CkBAIC0xODAxLDE2ICsxNjEyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygi
RGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY29uZGl0aW9uYWxBdHRyMScg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjEiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9u
YWxBdHRyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTgyMiwxNiArMTYyOCwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ2NvbmRpdGlvbmFsQXR0cjInIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIy
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAg
ICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4
NDMsMTYgKzE2NDQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNh
dGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHIzJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMyIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIz
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xODY0LDE0ICsxNjYwLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHI0JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxB
dHRyNCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihz
bG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIp
OwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEE6OmdldENv
bnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBA
IC0xODgyLDE0ICsxNjc0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
U3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25h
bEF0dHI1JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyNSIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHI1Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgIH0KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEI6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCks
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0xOTAwLDE0ICsxNjg4LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjb25kaXRpb25hbEF0dHI2JyBvbiBhIG5vbi1UZXN0
T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4i
LCAiY29uZGl0aW9uYWxBdHRyNiIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29u
ZGl0aW9uYWxBdHRyNiIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dE9iamVjdEM6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CkBAIC0xOTE3LDE2ICsxNzAxLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY2FjaGVk
QXR0cmlidXRlMScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNhY2hlZEF0dHJpYnV0ZTEiLCAiIGdldHRlciBj
YW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUxIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY2Fj
aGVkQXR0cmlidXRlMSIpOworICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNh
c3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTE5MzksMTYgKzE3MTgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q2FjaGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4K
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
U3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdjYWNoZWRBdHRy
aWJ1dGUyJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
VGhlICIsICJUZXN0T2JqIiwgIi4iLCAiY2FjaGVkQXR0cmlidXRlMiIsICIgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwotICAgIH0KLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjYWNoZWRB
dHRyaWJ1dGUyIik7CisgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVk
VGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMTk2MSwxNiArMTczNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNo
ZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygi
RGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnYW55QXR0cmlidXRlJyBvbiBh
IG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0
T2JqIiwgIi4iLCAiYW55QXR0cmlidXRlIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImFu
eUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBs
LmFueUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC5hbnlBdHRyaWJ1
dGUoKS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTE5ODAsMTQgKzE3NDksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2NvbnRlbnREb2N1bWVudCcgb24gYSBu
b24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgImNvbnRlbnREb2N1bWVudCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb250ZW50RG9jdW1lbnQi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJjb250ZW50RG9jdW1lbnQiKTsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNz
VG9Ob2RlKGV4ZWMsIGltcGwuY29udGVudERvY3VtZW50KCkpID8gdG9KUyhleGVjLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5jb250ZW50RG9jdW1lbnQoKSkp
IDoganNOdWxsKCkpOwpAQCAtMTk5NywxNiArMTc2MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb250ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuYwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbXV0YWJsZVBv
aW50JyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhl
ICIsICJUZXN0T2JqIiwgIi4iLCAibXV0YWJsZVBvaW50IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQ
b2ludCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNW
R1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0ZShpbXBsLCBp
bXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwMTYsMTYgKzE3NzYsMTEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJs
ZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xv
dEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2Vz
cyBwcm9wZXJ0eSAnaW1tdXRhYmxlUG9pbnQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJpbW11dGFibGVQb2lu
dCIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAg
fQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6
Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0yMDM1LDE2ICsxNzkwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0
cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnc3RyYXdiZXJyeScg
b24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAi
VGVzdE9iaiIsICIuIiwgInN0cmF3YmVycnkiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0
cmF3YmVycnkiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJsdWViZXJyeSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yMDU0LDE2ICsxODA0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVy
cnkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmljdEZsb2F0JyBvbiBhIG5vbi1U
ZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwg
Ii4iLCAic3RyaWN0RmxvYXQiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9h
dCIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
c3RyaWN0RmxvYXQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MjA3MywxNiArMTgxOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdkZXNjcmlwdGlvbicgb24gYSBub24tVGVzdE9i
aiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
ImRlc2NyaXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsK
ICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmRlc2Ny
aXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwOTIs
MTYgKzE4MzIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnaWQnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJpZCIsICIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImlkIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5pZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTExLDE2
ICsxODQ2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpIYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFj
Y2VzcyBwcm9wZXJ0eSAnaGFzaCcgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImhhc2giLCAiIGdldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
aGFzaCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImhhc2giKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmhhc2goKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMjEzMCwxNiArMTg2MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpIYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdy
ZXBsYWNlYWJsZUF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlcGxhY2VhYmxlQXR0cmlidXRl
IiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1
dGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LnJlcGxhY2VhYmxlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTIxNDksMTYgKzE4NzQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVw
bGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0
ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxl
RG91YmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZURvdWJsZUF0
dHJpYnV0ZShpc051bGwpKTsKQEAgLTIxNzEsMTYgKzE4OTEsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkg
ewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVy
dHkgJ251bGxhYmxlTG9uZ0F0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlTG9uZ0F0
dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51
bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOworICAgIH0KICAg
ICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9uZ0F0
dHJpYnV0ZShpc051bGwpKTsKQEAgLTIxOTMsMTYgKzE5MDgsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJv
cGVydHkgJ251bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3Qu
IikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZSIpOworICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1w
bC5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0yMjE1LDE2ICsxOTI1LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0
ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ251bGxhYmxlU3RyaW5nQXR0cmlidXRlJyBvbiBhIG5v
bi1UZXN0T2JqIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2Jq
IiwgIi4iLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxl
U3RyaW5nQXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNO
dWxsKSk7CkBAIC0yMjM3LDE2ICsxOTQyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J251bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlJyBvbiBhIG5vbi1UZXN0T2JqIG9iamVjdC4i
KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01C
aW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwor
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkp
CisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlIik7CisgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CkBA
IC0yMjU5LDIyICsxOTU5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygi
RGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnbnVsbGFibGVTdHJpbmdWYWx1
ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVs
bGFibGVTdHJpbmdWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKICAgICB9CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKKyAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpOwotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC0yMjgyLDE2ICsxOTc4LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90
QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNz
IHByb3BlcnR5ICdhdHRyaWJ1dGUnIG9uIGEgbm9uLVRlc3RPYmogb2JqZWN0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJhdHRyaWJ1dGUiLCAiIGdldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5hdHRyaWJ1dGUoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjMwMSwyNiArMTk5MiwxOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVk
IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZScgb24gYSBub24tVGVzdE9iaiBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIiwgIiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2Vy
dmVkRW51bVR5cGUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
alByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKQEAgLTIzMzAsNyArMjAxNCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwg
RW5jb2RlCiB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
Y29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0MSwxMCArMjAyNCw5IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPCiB2b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RP
YmoiLCAiLiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIsICIgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRp
bmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgpAQCAtMjM1NSwxMCArMjAzNyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0CiB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAiZW51bUF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIzNzQsMTAgKzIw
NTUsOSBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKUwogdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImJ5dGVBdHRyIiwg
IiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7
CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC0yMzkxLDEwICsyMDcxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRl
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVk
SlMKIHZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAib2N0ZXRBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQwOCwxMCAr
MjA4Nyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKCiB2b2lkIHNldEpTVGVzdE9ialNob3J0
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInNob3J0QXR0
ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hv
cnRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0MjUsMTAgKzIxMDMsOSBAQCB2b2lkIHNldEpTVGVzdE9i
alNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSgogdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInVuc2lnbmVkU2hvcnRBdHRyIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDQyLDEwICsyMTE5LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpV
bnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLAogdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImxvbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDU5LDEwICsy
MTM1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlMKIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VE
T01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAibG9uZ0xv
bmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJsb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ3NiwxMCArMjE1MSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplY3QgKi8sIEVuY29kCiB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAidW5zaWduZWRMb25nTG9u
Z0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0OTMsMTAgKzIxNjcsOSBAQCB2
b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIC8qIGJhc2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5
cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAic3RyaW5nQXR0ciIsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkBAIC0yNTEwLDEwICsyMTgzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWQK
IHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJ0ZXN0T2JqQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjUyNywx
MCArMjE5OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlCiB2b2lkIHNldEpTVGVzdE9ialhN
TE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJYTUxP
YmpBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1NDQsMTAgKzIyMTUsOSBAQCB2b2lkIHNldEpT
VGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZAogdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjcmVhdGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTYxLDEw
ICsyMjMxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmEKIHZvaWQgc2V0SlNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjU3
OCwxMCArMjI0Nyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovCiB2b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTI1OTUsMTAgKzIyNjMsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVn
cmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0CiB2b2lkIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIi
LCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI2MTIsMTAgKzIyNzksOSBA
QCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhcwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29s
ZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJlZmxl
Y3RlZEJvb2xlYW5BdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNjI5LDEwICsy
Mjk1LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICoKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInJl
ZmxlY3RlZFVSTEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjY0NiwxMCArMjMxMSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZs
ZWN0ZWRTdHJpbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI2NjMsMTAgKzIz
MjcsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC0yNjgwLDEwICsyMzQzLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU8KIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0ciIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjY5NywxMCArMjM1OSw5
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJy
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3
MTQsMTAgKzIzNzUsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdAogdm9pZCBzZXRKU1Rlc3RP
YmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0
ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIu
IiwgInR5cGVkQXJyYXlBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzMxLDEwICsyMzkx
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmMKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAq
LywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIs
ICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpA
QCAtMjc0OCwxMCArMjQwNyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjCiB2b2lkIHNldEpT
VGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI3NjcsMTAgKzI0MjUsOSBAQCB2b2lkIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VP
YmplYwogdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgInN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzg0
LDEwICsyNDQxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
LyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwg
IlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVy
IGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjgwMywxMCArMjQ1OSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogLyogYmFzCiB2b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjdXN0b21BdHRyIiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0Q3VzdG9tQXR0cihleGVjLCB2
YWx1ZSk7CkBAIC0yODE2LDEwICsyNDcxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWQKIHZv
aWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjgzMywxMCArMjQ4Nyw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIC8qIGJhc2VPYmplCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4NTMsMTAgKzI1MDYsOSBAQCB2b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqCiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
QEAgLTI4NzAsMTAgKzI1MjIsOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYQogdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC0yODkwLDEwICsyNTQxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2IKIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICov
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiIHNl
dHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjkx
MCwxMCArMjU2MCw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4CiB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5MzAs
MTAgKzI1NzksOSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC0yOTUwLDEwICsyNTk4LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3Rh
bmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwpAQCAtMjk2OCwxMCArMjYxNSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
CiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJU
aGUgIiwgIlRlc3RPYmoiLCAiLiIsICJjb25kaXRpb25hbEF0dHIxIiwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKQEAgLTI5ODcsMTAgKzI2MzMsOSBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRQogdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIs
ICJUZXN0T2JqIiwgIi4iLCAiY29uZGl0aW9uYWxBdHRyMiIsICIgc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC0zMDA2LDEwICsyNjUxLDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEUKIHZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBi
YXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjMiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAt
MzAyNSwxMCArMjY2OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFCiB2b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjQiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgpAQCAtMzA0MSwxMCArMjY4NCw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPCiB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjUiLCAiIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjUiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgpAQCAtMzA1NywxMCArMjY5OSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPCiB2
b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JT
dHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsQXR0cjYiLCAiIHNldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjYiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgpAQCAtMzA3MiwxMCArMjcxMyw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJh
c2VPCiB2b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRo
ZSAiLCAiVGVzdE9iaiIsICIuIiwgImFueUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAg
LTMwODksMTAgKzI3MjksOSBAQCB2b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZAogdm9pZCBzZXRKU1Rl
c3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVj
dCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAi
LiIsICJtdXRhYmxlUG9pbnQiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTA2LDEwICsyNzQ1LDkg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogLyogYmFzZU9iamVjdCAqLywgRW5jb2QKIHZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJpbW11dGFibGVQ
b2ludCIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
aW1tdXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzEyMywxMCArMjc2MSw5IEBAIHZvaWQgc2V0
SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFz
ZU9iamVjdCAqLywgRW5jCiB2b2lkIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJhd2JlcnJ5IiwgIiBzZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTMxNDAsMTAgKzI3NzcsOSBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZAogdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNl
T2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9i
aiIsICIuIiwgInN0cmljdEZsb2F0IiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMTU3LDEwICsyNzkz
LDkgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGUKIHZvaWQgc2V0SlNUZXN0T2JqSWQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoiLCAiLiIsICJpZCIsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzE3
NCwxMCArMjgwOSw5IEBAIHZvaWQgc2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUKIHZvaWQgc2V0SlNUZXN0T2Jq
UmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZU9i
amVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RPYmoi
LCAiLiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QKQEAgLTMx
ODgsMTAgKzI4MjIsOSBAQCB2b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKgogdm9pZCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAi
LCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zMjA1LDEwICsyODM4LDkgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiAvKiBiYXMKIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdE9iaiIsICIuIiwgIm51bGxhYmxlU3RyaW5n
VmFsdWUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
Im51bGxhYmxlU3RyaW5nVmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzIyMiwxMCArMjg1NCw5IEBAIHZv
aWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiAvKiBiYXNlT2JqZWN0ICovCiB2b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNl
cnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8s
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0T2JqIiwgIi4iLCAi
YXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTMyNDgsNyArMjg3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogZXhlCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIs
ICJUZXN0T2JqIiwgIi4iLCAidm9pZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ2b2lkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBpbXBsLnZvaWRNZXRob2QoKTsKQEAgLTMyNjAsNyArMjg5MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAidm9pZE1ldGhvZFdpdGhB
cmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInZvaWRNZXRob2RXaXRoQXJncyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkBAIC0zMjgzLDcgKzI5MTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhv
ZChFeGVjU3RhdGUqIGV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImJ5dGVNZXRob2QiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJ5dGVNZXRob2QoKSk7CkBAIC0zMjk1LDcgKzI5MjYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhB
cmdzKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2Fu
IG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAzKQpAQCAtMzMxOCw3ICsyOTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0
ZSogZXgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5
IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvY3RldE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9m
ICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9j
dGV0TWV0aG9kKCkpOwpAQCAtMzMzMCw3ICsyOTYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhl
Y1MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvY3RldE1ldGhvZFdpdGhBcmdzIiwgIiBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPCAzKQpAQCAtMzM1Myw3ICsyOTg0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBleGUK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJsb25nTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRl
c3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImxvbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0aG9k
KCkpOwpAQCAtMzM2NSw3ICsyOTk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJsb25nTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykK
QEAgLTMzODgsNyArMzAxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBleGVjCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
bWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2Jq
IiwgIi4iLCAib2JqTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9iak1l
dGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLm9iak1ldGhvZCgpKSk7CkBAIC0zNDAwLDcgKzMwMzEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2Jq
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm9iak1ldGhvZFdpdGhB
cmdzIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9iak1ldGhvZFdpdGhBcmdzIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKQEAgLTM0MjMsNyArMzA1NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U2VxdWVuY2VBcmcoRXhlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJn
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zNDQwLDcgKzMwNzEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0
dXJuaW5nU2VxdWVuY2UoRQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFJldHVybmluZ1NlcXVl
bmNlIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFJldHVybmluZ1NlcXVl
bmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTM0NTcsNyArMzA4OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRW51bUFyZyhFeGVjU3RhCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aEVudW1B
cmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzQ2Niw3ICszMDk3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
bnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChl
bnVtQXJnICE9ICIiICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTEiICYmIGVudW1BcmcgIT0gIkVu
dW1WYWx1ZTIiICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTMiKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3Vt
ZW50ICIsICIxIiwgIiAoJyIsICJlbnVtQXJnIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAi
bWV0aG9kV2l0aEVudW1BcmciLCAiIG11c3QgYmUgb25lIG9mOiAiLCAiXCJcIiwgXCJFbnVtVmFs
dWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKmV4ZWMsIDAsICJlbnVtQXJnIiwgIlRlc3RP
YmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCAiXCJcIiwgXCJFbnVtVmFsdWUxXCIsIFwiRW51bVZh
bHVlMlwiLCBcIkVudW1WYWx1ZTNcIiIpOwogICAgIGltcGwubWV0aG9kV2l0aEVudW1BcmcoZW51
bUFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAg
LTM0NzYsNyArMzEwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAgLTM0OTksNyArMzEzMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFs
dWUoRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJD
YW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAic2VyaWFsaXplZFZhbHVlIiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInNlcmlhbGl6ZWRWYWx1ZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCkBAIC0zNTE2LDcgKzMxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUq
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAib3B0aW9uc09iamVjdCIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJvcHRpb25zT2JqZWN0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAg
LTM1MzYsNyArMzE2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFr
ZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwg
Ii4iLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2Jq
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1NTAsNyArMzE4
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DdXN0b21NZXRob2QoRXhlY1N0YXRlKiBlCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiY3VzdG9t
TWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImN1c3RvbU1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9k
KGV4ZWMpKTsKIH0KQEAgLTM1NjAsNyArMzE5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVj
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAiY3VzdG9tTWV0aG9kV2l0aEFyZ3MiLCAiIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiY3VzdG9tTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGV4ZWMp
KTsKIH0KQEAgLTM1NzAsNyArMzIwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAiYWRkRXZlbnRMaXN0ZW5lciIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQo
MSk7CkBAIC0zNTg1LDcgKzMyMTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjUwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVz
dE9iaiIsICIuIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOwpAQCAtMzYwMCw3ICszMjMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQoRXhlY1MKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwg
IlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZChl
eGVjKTsKQEAgLTM2MTIsNyArMzI0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdFN0YXRlT2JqIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0
ZU9iaihleGVjKSkpOwpAQCAtMzYyNiw3ICszMjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNl
cHQKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNh
bGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIiwgIiBv
biBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzY0MCw3ICszMjcxLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9i
akV4Y2VwdGkKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24i
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM2NTcsNyArMzI4OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJD
YW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CkBAIC0zNjcyLDcgKzMzMDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2Fs
bCAiLCAiVGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGUiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM2ODcsNyArMzMxOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIsICIgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhj
ZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM3MDcsNyArMzMzOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CkBAIC0zNzI0LDcgKzMzNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9y
OjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwpAQCAtMzczNyw3ICszMzY4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEFyZyhFeGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoT3B0
aW9uYWxBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
IApAQCAtMzc1OSw3ICszMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RP
YmoiLCAiLiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0zNzg2LDcgKzM0MTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIsICIgb24gaW5zdGFuY2VzIG9mICIsICJU
ZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMzgyMSw3ICszNDUyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZygKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmci
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKIApAQCAt
Mzg0Myw3ICszNDc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAi
LiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBzdHIoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwpAQCAtMzg1OCw3ICsz
NDg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJtZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcm
IHN0cihhcmd1bWVudE9yTnVsbChleGVjLCAwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGFyZ3Vt
ZW50T3JOdWxsKGV4ZWMsIDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CkBAIC0zODcz
LDEzICszNTA0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURP
TUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4i
LCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAiLCAi
VGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIsICIgbXVzdCBiZSBhIGZ1bmN0
aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
KmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIp
OwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNy
ZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjayk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM4OTAsNyAr
MzUyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRp
bmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtMzg5OSw3ICszNTMwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0EKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIy
IiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAiLCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIiwgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywg
MSwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTVGVzdENh
bGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZyhub25DYWxsYmFjaywgY2FsbGJhY2spOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zOTEwLDEzICszNTQxLDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3Ry
aW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAibWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBp
ZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0
cmluZygiQXJndW1lbnQgIiwgIjEiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIsICJUZXN0
T2JqIiwgIi4iLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciLCAiIG11c3QgYmUg
YSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVu
Y3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAgICAgY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnKGNhbGxiYWNrKTsKQEAgLTM5MjgsNyArMzU1OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFjCiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICgh
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJBcmd1bWVudCAiLCAiMSIsICIgKCciLCAiY2FsbGJhY2siLCAiJykgdG8gIiwgIlRlc3RPYmoi
LCAiLiIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsICIgbXVzdCBi
ZSBhIGZ1bmN0aW9uIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJzdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IGNyZWF0
ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTVGVzdENhbGxiYWNrPihleGVjLCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgfQogICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnKGNhbGxiYWNrKTsKQEAgLTM5NDAsNyArMzU3MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRp
Y01ldGhvZFdpdGhDYWxsYmFjCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJjYWxsYmFjayIsICInKSB0byAi
LCAiVGVzdE9iaiIsICIuIiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIsICIgbXVzdCBi
ZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0
aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgInN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gY3Jl
YXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KGV4ZWMsIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tB
cmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0zOTUyLDcgKzM1ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9i
aiIsICIuIiwgImNvbmRpdGlvbmFsTWV0aG9kMSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0
T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CkBAIC0zOTY3LDcgKzM1OTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QyKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsTWV0
aG9kMiIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDIi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlt
cGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CkBAIC0zOTgyLDcgKzM2MTMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxN
ZXRob2QzKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbmRpdGlvbmFsTWV0aG9kMyIsICIg
b24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGltcGwuY29uZGl0
aW9uYWxNZXRob2QzKCk7CkBAIC0zOTk2LDcgKzM2MjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxKAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkg
Y2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCkBAIC00MDE2LDcgKzM2NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBA
IC00MDQzLDcgKzM2NzQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKAogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIs
ICIuIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MDYwLDcg
KzM2OTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KAogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm92
ZXJsb2FkZWRNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRl
ZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00MDc3LDEzICszNzA4LDEz
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlw
ZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAib3ZlcmxvYWRl
ZE1ldGhvZCIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9k
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwg
IjEiLCAiICgnIiwgImNhbGxiYWNrIiwgIicpIHRvICIsICJUZXN0T2JqIiwgIi4iLCAib3Zlcmxv
YWRlZE1ldGhvZCIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxs
YmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKGNhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNDA5NCw3ICszNzI1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwg
IlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpA
QCAtNDExMSw3ICszNzQyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNygKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoi
LCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDEyOCw3
ICszNzU5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOCgKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJv
dmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDE0NSw3ICszNzc2LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSgKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVk
TWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDE2Miw3ICszNzkzLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kMTAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDE3OSw3ICszODEwLDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTEKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIiBvbiBpbnN0
YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPCAxKQpAQCAtNDMwNCw3ICszOTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwg
IiwgIlRlc3RPYmoiLCAiLiIsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCkBAIC00MzM0LDcgKzM5NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSIsICIgb24g
aW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2Ui
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDM1MSw3ICszOTgyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0Fy
cmF5RnVuY3Rpb24oRXhlY1MKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpbmdBcnJheUZ1bmN0aW9u
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDM3MSw3ICs0MDAyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xp
c3RGdW5jdGlvbihFeGUKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmco
IkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24i
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQzOTEsNyArNDAyMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1
bWVudChFeGVjU3RhdGUqCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAiZ2V0U1ZHRG9jdW1lbnQiLCAiIG9u
IGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZ2V0U1ZHRG9jdW1lbnQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwpAQCAtNDQwOCw3ICs0MDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJjb252ZXJ0MSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b252ZXJ0MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC00NDI1LDcgKzQwNTYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVF
cnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgImNvbnZlcnQyIiwg
IiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbnZlcnQyIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKQEAgLTQ0NDIsNyArNDA3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsICJUZXN0T2JqIiwgIi4iLCAiY29udmVydDQiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29udmVydDQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDQ1OSw3ICs0
MDkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQ1KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJjb252
ZXJ0NSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb252ZXJ0NSIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCkBAIC00NDc2LDcgKzQxMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rp
b24oRXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9u
bHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgIm11dGFibGVQb2ludEZ1bmN0aW9uIiwgIiBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNW
R1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLm11dGFibGVQb2ludEZ1bmN0
aW9uKCkpKSk7CkBAIC00NDg4LDcgKzQxMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihFeAog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAi
LCAiVGVzdE9iaiIsICIuIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9u
KCkpKSk7CkBAIC00NTAwLDcgKzQxMzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRl
c3RPYmoiLCAiLiIsICJvcmFuZ2UiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3Jh
bmdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpbXBsLmJhbmFuYSgpOwpAQCAtNDUxMiw3ICs0MTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSoKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5
IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbiIsICIgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0T2JqIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDMpCkBAIC00NTM4LDE0ICs0MTY5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJU
ZXN0T2JqIiwgIi4iLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiIG9uIGluc3RhbmNl
cyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCAmJiAhZXhlYy0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNU
ZXN0T2JqOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBt
YWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJv
YmpBcmciLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1
ZW5jZSIsICIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50
KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKmV4ZWMsIDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5j
dGlvbldpdGhTZXF1ZW5jZSIsICJUZXN0T2JqIik7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVz
dE9iaihleGVjLT5hcmd1bWVudCgwKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC00NTYzLDE0ICs0MTk0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
T2JqIiwgIi4iLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCAiVGVzdE9iaiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmlu
ZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIxIiwgIiAoJyIsICJvYmpBcmciLCAi
JykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICIgbXVz
dCBiZSBhbiBpbnN0YW5jZSBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmluaGVyaXRz
KEpTVGVzdE9iajo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKmV4ZWMsIDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJh
eSIsICJUZXN0T2JqIik7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1
bWVudCgwKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NTg4LDcgKzQy
MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5n
c1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdE9iaiIsICIuIiwgInZhcmlh
ZGljU3RyaW5nTWV0aG9kIiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RPYmoiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInZhcmlhZGlj
U3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQ2MDgsNyArNDIz
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0T2JqIiwgIi4iLCAidmFyaWFk
aWNEb3VibGVNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidmFyaWFkaWNE
b3VibGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNDYyOCw3ICs0MjU5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3QKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJpYWRp
Y05vZGVNZXRob2QiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdE9iaiIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2Rl
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTQ2MzksNyArNDI3MCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAgVmVjdG9yPE5vZGUqPiB0YWlsOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDEsIGNvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVy
aXRzKEpTTm9kZTo6aW5mbygpKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQXJndW1lbnQgIiwgIjIiLCAi
ICgnIiwgInRhaWwiLCAiJykgdG8gIiwgIlRlc3RPYmoiLCAiLiIsICJ2YXJpYWRpY05vZGVNZXRo
b2QiLCAiIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpleGVjLCBpLCAidGFpbCIsICJUZXN0T2JqIiwgInZhcmlhZGljTm9k
ZU1ldGhvZCIsICJOb2RlIik7CiAgICAgICAgIHRhaWwuYXBwZW5kKHRvTm9kZShleGVjLT51bmNo
ZWNrZWRBcmd1bWVudChpKSkpOwogICAgIH0KICAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCho
ZWFkLCB0YWlsKTsKQEAgLTQ2NTEsNyArNDI4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAi
VGVzdE9iaiIsICIuIiwgImFueSIsICIgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0T2JqIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnki
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNDY4MCw0NiArNDMxMSwzOSBAQCB2b2lk
IEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogLy8gQ29uc3RhbnQgZ2V0dGVycwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05ESVRJT05BTF9DT05TVChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTkRJVElPTkFMX0NPTlNUKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSk7CiB9CiAKICNlbmRpZgotRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNP
TlNUX1ZBTFVFXzAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKDApKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1Rf
VkFMVUVfMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfVkFMVUVfNChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZB
TFVFXzQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
OChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzgoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfOShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiB9CiAKQEAgLTQ3MjgsMzkgKzQzNTIsMzMg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTAoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nT3JOdWxsKGV4ZWMsIFN0cmluZygibXkgY29uc3RhbnQgc3RyaW5nIikpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTEoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpDT05TVF9WQUxVRV8xMShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMHhmZmZmZmZmZikpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNP
TlNUX1ZBTFVFXzEyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcigweDAxKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNP
TlNUX1ZBTFVFXzEzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTMoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KDBYMjApKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVfMTQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xNChFeGVjU3RhdGUqLCBKU09iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMHgxYWJjKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxNSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWFkb25seShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRvbmx5KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cigwKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAppbmRleCBjMzgwOTA3ZjAyY2Y2Mzk3OTJiYzhlODlmOTkyZTcwZmMwMzA0MGY2Li5kOGNhNzRl
ODU4MWM0N2MzZGIwYzFhOWE5YmM2ZmI3NWQyYThhNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xOTQsMTAgKzE5NCw4IEBAIGJvb2wgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDdmZDMzNGY2ZWRjNThk
ZDIzZjY5Y2NhZjQ3NTcwOGUzMzZmNTMxYTQuLmZlMzkwMjQyOTcxYTAxMzc5YjcxNTFlYTIwM2I1
NGMyOGE2ZWYyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xNTAsMTYgKzE1MCwxMSBAQCBib29sIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3ZhbHVlJyBvbiBhIG5vbi1U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJv
clN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4i
LCAidmFsdWUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/
IGltcGwudmFsdWUoKS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTY5LDE2ICsxNjQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamUKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdyZWFkb25seVZhbHVlJyBvbiBhIG5vbi1UZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmlu
ZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAicmVh
ZG9ubHlWYWx1ZSIsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpOworICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUq
PihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25s
eVZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOwogICAg
IH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGltcGwucmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5yZWFkb25seVZhbHVlKCktPmRlc2VyaWFs
aXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4OCwxNiArMTc4LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5
VmFsdWUoRXhlY1N0YXRlKiBleGVjCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkg
J2NhY2hlZFZhbHVlJyBvbiBhIG5vbi1UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
IG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAiY2FjaGVkVmFsdWUiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgIH0KLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
aWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdldCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwpAQCAtMjEwLDE2ICsxOTUsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBleGVjLAogRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQg
dG8gYWNjZXNzIHByb3BlcnR5ICdwb3J0cycgb24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICIuIiwgInBvcnRzIiwgIiBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiKSk7CisgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAicG9ydHMiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLnBvcnRzKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTIyOSwxNiArMjA5LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25s
eVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVw
cmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnY2FjaGVkUmVhZG9ubHlWYWx1ZScg
b24gYSBub24tVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSBvYmplY3QuIikpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICIuIiwgImNhY2hlZFJlYWRvbmx5VmFsdWUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQorICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIiwgImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRS
ZWFkb25seVZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hl
ZFZhbHVlKTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ4LDEwICsyMjMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKEV4
ZWNTdGF0ZQogfQogCiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpAQCAtMjYxLDEwICsyMzQsOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsCiB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2VPYmpl
Y3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgIi4iLCAidmFsdWUiLCAiIHNldHRlciBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKQEAgLTI3OCwxMCArMjUwLDkgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAv
Kgogdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGlu
Z3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICIuIiwgImNhY2hlZFZhbHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKSk7Cisg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCBmN2ZiNDYzOTczM2I4OTc3MDU0NjI5
NzdhNGU5N2Q5ODEyOTU1YTg4Li40ODU4MTFlNjA3ZmQ4NmIzMjRkMThlNzFjMzZiNmFlMmFmMGIx
MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RUeXBlZGVmcygKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkFyZ3VtZW50ICIsICIy
IiwgIiAoJyIsICJ0ZXN0Q2FsbGJhY2siLCAiJykgdG8gIiwgInRoZSAiLCAiVGVzdFR5cGVkZWZz
IiwgIiBjb25zdHJ1Y3RvciIsICIgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDEsICJ0ZXN0Q2FsbGJh
Y2siLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4g
dGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBSZWZQ
dHI8VGVzdFR5cGVkZWZzPiBvYmplY3QgPSBUZXN0VHlwZWRlZnM6OmNyZWF0ZShoZWxsbywgdGVz
dENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKQEAgLTI1Mywx
NiArMjUzLDExIEBAIGJvb2wgSlNUZXN0VHlwZWRlZnM6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0gICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAndW5zaWdu
ZWRMb25nTG9uZ0F0dHInIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmplY3QuIikpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAidW5zaWduZWRMb25nTG9u
Z0F0dHIiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVk
ZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI3MiwxNiArMjY3LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0lt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgb24gYSBub24tVGVzdFR5cGVkZWZzIG9iamVjdC4iKSk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJpbW11dGFi
bGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiaW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RUeXBl
ZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGlt
cGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0YWJsZVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0yOTEsMTQgKzI4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0lt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTTwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihzbG90QmFz
ZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0dGVtcHQgdG8gYWNjZXNzIHBy
b3BlcnR5ICdUZXN0U3ViT2JqJyBvbiBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdz
VHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgIlRlc3RTdWJPYmoi
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVk
ZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiVGVzdFN1Yk9i
aiIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0
Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
QEAgLTMwNywxNCArMjkzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2Up
KSB7Ci0gICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9w
ZXJ0eSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIG9uIGEgbm9uLVRlc3RUeXBlZGVmcyBvYmpl
Y3QuIikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtl
RE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMyNywxNiArMzA5LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCoKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQ
cm90b3R5cGUqPihzbG90QmFzZSkpIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgU3RyaW5nKCJEZXByZWNhdGVkIGF0
dGVtcHQgdG8gYWNjZXNzIHByb3BlcnR5ICdhdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgb24gYSBu
b24tVGVzdFR5cGVkZWZzIG9iamVjdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJU
ZXN0VHlwZWRlZnMiLCAiLiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgZ2V0dGVyIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2Up
KQorICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRl
c3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMzQ2LDE0ICszMjMsMTAgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KgogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRl
ZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRl
cHJlY2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uJyBvbiBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9y
U3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwg
IlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnNQcm90b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zNjYsMjYgKzMzOSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYgogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkgewotICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBTdHJpbmcoIkRlcHJlY2F0
ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ3N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uJyBvbiBhIG5vbi1UZXN0VHlwZWRlZnMgb2JqZWN0LiIpKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5n
KCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIiwgIiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RU
eXBlZGVmcyIpKTsKKyAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90
b3R5cGUqPihzbG90QmFzZSkpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIAotRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWYWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
PihiYXNlVmFsdWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKQEAgLTM5NSwxMCArMzYxLDkgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEUKIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkBAIC00MTIsMTAgKzM3Nyw5IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvKiBiYXNlT2JqCiB2b2lkIHNldEpT
VGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NU
eXBlRXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtNDI5LDEwICszOTMsOSBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
CiB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtNDQ2LDEwICs0MDksOSBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogLyogYmFzZQogdm9pZCBz
ZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIC8qIGJhc2VPYmplY3QgKi8sIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBl
RXJyb3JTdHJpbmcoIlRoZSAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAi
VGVzdFR5cGVkZWZzIikpOworICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAg
LTQ2NSwxMCArNDI3LDkgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIC8qIGJhc2UKIHZvaWQgc2V0SlNUZXN0
VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiAvKiBiYXNlT2JqZWN0ICovLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVz
dFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJpbmRpbmdzVHlwZUVy
cm9yU3RyaW5nKCJUaGUgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIiwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CkBAIC00ODIsMTAgKzQ0Myw5IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAvCiB2b2lk
IHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogLyogYmFzZU9iamVjdCAqLywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5k
aW5nc1R5cGVFcnJvclN0cmluZygiVGhlICIsICJUZXN0VHlwZWRlZnMiLCAiLiIsICJzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtNTA4LDcgKzQ2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBl
eGVjCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rl
c3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygi
Q2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVkZWZzIiwgIi4iLCAiZnVuYyIsICIgb24gaW5zdGFu
Y2VzIG9mICIsICJUZXN0VHlwZWRlZnMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVz
dFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogCkBAIC01MzAsNyArNDkwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZURPTUJp
bmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0VHlwZWRlZnMiLCAi
LiIsICJzZXRTaGFkb3ciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwg
InNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQpAQCAtNTcx
LDcgKzUzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IG1ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5
cGVkZWZzIiwgIi4iLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkp
OwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTU4OCw3ICs1NDgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZUFycmF5QXJnKEV4ZQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJy
b3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgIm51bGxhYmxl
QXJyYXlBcmciLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgIm51bGxh
YmxlQXJyYXlBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTYw
NSw3ICs1NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RU
eXBlZGVmcyIsICIuIiwgImZ1bmNXaXRoQ2xhbXAiLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVz
dFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBl
ZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKQEAgLTY0Miw3ICs2MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24i
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVBvaW50
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46
OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKQEAgLTY1NCw3ICs2MTQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9N
QmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIs
ICIuIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iLCAiIG9uIGluc3RhbmNlcyBvZiAiLCAiVGVzdFR5
cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dFR5cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIFRlc3RU
eXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTY3NCw3ICs2MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9u
MgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmcoIkNh
biBvbmx5IGNhbGwgIiwgIlRlc3RUeXBlZGVmcyIsICIuIiwgInN0cmluZ0FycmF5RnVuY3Rpb24y
IiwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1
bmN0aW9uMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtNjk0LDcg
KzY1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIG1h
a2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCAiVGVzdFR5cGVk
ZWZzIiwgIi4iLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiLCAiIG9uIGlu
c3RhbmNlcyBvZiAiLCAiVGVzdFR5cGVkZWZzIikpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVx
dWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC03
MTEsNyArNjcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbigKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZURPTUJpbmRpbmdzVHlwZUVycm9yU3RyaW5nKCJDYW4gb25seSBjYWxsICIsICJUZXN0
VHlwZWRlZnMiLCAiLiIsICJtZXRob2RXaXRoRXhjZXB0aW9uIiwgIiBvbiBpbnN0YW5jZXMgb2Yg
IiwgIlRlc3RUeXBlZGVmcyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
ICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCAyY2Q5YWMxZDE3OTUyMzhjOWRmNjUy
YWVlMzE0YzFlMWQwZmJiMWE5Li44ODMyNGY4OGIwZDc2NDQ2MWQ0OTgwYjBkYjhkYTE2YTIyMDkx
ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNhdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTEyOCwyNiArMTI4LDE5IEBAIGJvb2wgSlNhdHRyaWJ1
dGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5CiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU2F0dHJpYnV0ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNhdHRyaWJ1dGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oc2xvdEJhc2UpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIFN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAn
cmVhZG9ubHknIG9uIGEgbm9uLWF0dHJpYnV0ZSBvYmplY3QuIikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBtYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJp
bmcoIlRoZSAiLCAiYXR0cmlidXRlIiwgIi4iLCAicmVhZG9ubHkiLCAiIGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCAiYXR0cmlidXRlIikpOworICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJhdHRyaWJ1dGUi
LCAicmVhZG9ubHkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgfQotICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBhdHRyaWJ1dGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnJlYWRvbmx5KCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBq
c2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZVZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU2F0dHJpYnV0
ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlw
ZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IGNkMWY2N2NiNzlhYTg2ZDg3Yjhm
YWYyZDQwZDZkZTE0NWNmZDkwOTQuLmQ0NDMwOGFkZjRiZDM4MTA2Zjg1YmU0OTdjNjExNzI4ZjRj
OTYwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTExOSwxMCArMTE5LDggQEAgYm9vbCBKU3JlYWRvbmx5
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzcmVhZG9u
bHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNyZWFk
b25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZhbHVl
KTsKLSAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU3JlYWRvbmx5UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHlQcm90b3R5cGUqPihiYXNlVmFs
dWUpOwogICAgIGlmICghZG9tT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5k
ZXggZjcwOGJmNDRiN2FjMzRmZWU4OTYxNjg1YmFkOGM0Y2UwNjU0NDE1Zi4uNWNiYzQ5N2VhODE0
ZjM3M2NlMDEzYTkxMjk3OGFlM2E1MjY0ZGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTQ3Niw2ICs0NzYsMTAgQEAgRVhQT1JUUwogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0
eUBBWE9iamVjdENhY2hlQFdlYkNvcmVAQFNBWF9OQFosID9zZXRFbmhhbmNlZFVzZXJJbnRlcmZh
Y2VBY2Nlc3NpYmlsaXR5QEFYT2JqZWN0Q2FjaGVAV2ViQ29yZUBAU0FYX05AWikKICAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP3Nlc3Npb25JREBQYWdlQFdlYkNvcmVAQFFCRT9BVlNlc3Npb25J
REAyQFhaLCA/c2Vzc2lvbklEQFBhZ2VAV2ViQ29yZUBAUUVCQT9BVlNlc3Npb25JREAyQFhaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2Vi
Q29yZUBAUUFFUEFWQ2FjaGVkUmVzb3VyY2VAMkBBQlZVUkxAMkBWU2Vzc2lvbklEQDJAQFosID9y
ZXNvdXJjZUZvclVSTEBNZW1vcnlDYWNoZUBXZWJDb3JlQEBRRUFBUEVBVkNhY2hlZFJlc291cmNl
QDJAQUVCVlVSTEAyQFZTZXNzaW9uSURAMkBAWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIo
P21ha2VET01CaW5kaW5nc1R5cGVFcnJvclN0cmluZ0ludGVybmFsQFdlYkNvcmVAQFlBP0FWU3Ry
aW5nQFdURkBAUEJEWlosID9tYWtlRE9NQmluZGluZ3NUeXBlRXJyb3JTdHJpbmdJbnRlcm5hbEBX
ZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBFQkRaWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2lzQVBJVmFsdWVXcmFwcGVyQEpTQ2VsbEBKU0NAQFFCRV9OWFosID9pc0FQSVZhbHVlV3Jh
cHBlckBKU0NlbGxASlNDQEBRQkVfTlhaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yQFdlYkNvcmVAQFlBX0pBQVZFeGVjU3RhdGVASlNDQEBQ
QkQxQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD90aHJvd0dldHRlclR5cGVFcnJvckBX
ZWJDb3JlQEBZQV9KQUFWRXhlY1N0YXRlQEpTQ0BAUEJEMUBaKQorICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/dGhyb3dTZXF1ZW5jZVR5cGVFcnJvckBXZWJDb3JlQEBZQVhBQVZFeGVjU3RhdGVA
SlNDQEBAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3Rocm93U2V0dGVyVHlwZUVycm9y
QFdlYkNvcmVAQFlBWEFBVkV4ZWNTdGF0ZUBKU0NAQFBCRDFAWikKKyAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3Rocm93VGhpc1R5cGVFcnJvckBXZWJDb3JlQEBZQV9KQUFWRXhlY1N0YXRlQEpT
Q0BAUEJEMUBaKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>