<?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>146320</bug_id>
          
          <creation_ts>2015-06-25 12:41:23 -0700</creation_ts>
          <short_desc>Stop using ScrollbarThemeClient and just use Scrollbar directly</short_desc>
          <delta_ts>2015-06-26 11:42:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104698</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-25 12:41:23 -0700</bug_when>
    <thetext>Stop using ScrollbarThemeClient and just use Scrollbar directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104699</commentid>
    <comment_count>1</comment_count>
      <attachid>255567</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-25 12:49:43 -0700</bug_when>
    <thetext>Created attachment 255567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104700</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 12:51:47 -0700</bug_when>
    <thetext>Attachment 255567 did not pass style-queue:


ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:111:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:114:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:118:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:280:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:281:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:293:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:294:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp:152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:342:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:350:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:342:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:410:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:149:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:151:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:153:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:234:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:234:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:235:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:290:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:291:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 30 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>1104701</commentid>
    <comment_count>3</comment_count>
      <attachid>255568</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-25 13:01:25 -0700</bug_when>
    <thetext>Created attachment 255568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104702</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 13:05:02 -0700</bug_when>
    <thetext>Attachment 255568 did not pass style-queue:


ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:111:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:114:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:118:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeSafari.cpp:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:280:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:281:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:293:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:294:  Wrong number of spaces before statement. (expected: 17)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/ScrollbarThemeMac.mm:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp:152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:342:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:350:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:342:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:410:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:149:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:151:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:153:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:234:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:234:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:235:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:290:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/win/ScrollbarThemeWin.cpp:291:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 30 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>1104736</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-25 15:04:15 -0700</bug_when>
    <thetext>Committed r185964: &lt;http://trac.webkit.org/changeset/185964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104821</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-25 18:03:53 -0700</bug_when>
    <thetext>This broke the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104870</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-25 23:46:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This broke the windows build.

Brent landed the fix in https://trac.webkit.org/changeset/185975.

One more reason why we need a working Windows EWS. 

But we don&apos;t have it 2 weeks ago. It seems solving
a network issue needs at least a months for Apple. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104947</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-26 09:44:23 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; But we don&apos;t have it 2 weeks ago. It seems solving
&gt; a network issue needs at least a months for Apple. :)

That&apos;s so much for your always helpful comments, Csaba.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104953</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-26 09:50:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; 
&gt; &gt; But we don&apos;t have it 2 weeks ago. It seems solving
&gt; &gt; a network issue needs at least a months for Apple. :)
&gt; 
&gt; That&apos;s so much for your always helpful comments, Csaba.

I didn&apos;t want to add a helpful comment here, but a strong note.
It&apos;s simply ridiculous that 2 weeks weren&apos;t enough to make 
developer.apple.com available for Apple Windows EWS bots ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104996</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-26 11:31:29 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; 
&gt; &gt; &gt; But we don&apos;t have it 2 weeks ago. It seems solving
&gt; &gt; &gt; a network issue needs at least a months for Apple. :)
&gt; &gt; 
&gt; &gt; That&apos;s so much for your always helpful comments, Csaba.
&gt; 
&gt; I didn&apos;t want to add a helpful comment here, but a strong note.
&gt; It&apos;s simply ridiculous that 2 weeks weren&apos;t enough to make 
&gt; developer.apple.com available for Apple Windows EWS bots ...

Don&apos;t you think it&apos;s better to bring that up on one of our mailing lists instead of in a random bugzilla bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104997</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-26 11:38:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Don&apos;t you think it&apos;s better to bring that up on one of our mailing lists
&gt; instead of in a random bugzilla bug?

I did write private mails to the bot maintainers twice in the latest two weeks,
but nothing happened only a promise that it will be fixed in the (far) future.

What kind of random bug do you talk? I commented this bug, because this 
patch broke the Windows build because of the lack of working Windows EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105000</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-26 11:42:15 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Don&apos;t you think it&apos;s better to bring that up on one of our mailing lists
&gt; &gt; instead of in a random bugzilla bug?
&gt; 
&gt; I did write private mails to the bot maintainers twice in the latest two
&gt; weeks,
&gt; but nothing happened only a promise that it will be fixed in the (far)
&gt; future.
&gt; 
&gt; What kind of random bug do you talk? I commented this bug, because this 
&gt; patch broke the Windows build because of the lack of working Windows EWS.

And you&apos;re just wasting your (as well as my) time because I can&apos;t do anything about it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255567</attachid>
            <date>2015-06-25 12:49:43 -0700</date>
            <delta_ts>2015-06-25 13:01:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146320-20150625124857.patch</filename>
            <type>text/plain</type>
            <size>147299</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk2YzJjNzM2YmQ1NDk4
YmFlYTQ4NWYyNWJiYjMyMWI3ZGI4ZTljZi4uOWFmZmQ1MzE2YTFkMDZjYjNlYWI2NDMzZGI5YjM4
ZTFjNGZiNDRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAxNS0wNi0yNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcg
U2Nyb2xsYmFyVGhlbWVDbGllbnQgYW5kIGp1c3QgdXNlIFNjcm9sbGJhciBkaXJlY3RseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFy
UGFpbnRlcnNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhcjo6flNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om9mZnNldERp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnVwZGF0ZVRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGh1
bWJVbmRlck1vdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6YXV0b3Njcm9sbFBy
ZXNzZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3RhcnRUaW1lcklmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW92ZVRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpzZXRQcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZVVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6c2V0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1cGRhdGVFbmFibGVkU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWU6OmludmFsaWRhdGVQYXJ0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0cmFja0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVu
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0
ZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6dXNlZFRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp3aWxsUGFpbnRTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmRpZFBhaW50U2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1l
R3RrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzQnV0dG9ucyk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVJT1M6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lSU9TOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lSU9TOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lSU9TOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUlPUzo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVJ
T1M6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
SU9TOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVJT1M6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUlPUzo6
c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUlP
Uzo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToK
KyAgICAgICAgKHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIpOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlIHNjcm9sbGVySW1wUGFpcjpjb252ZXJ0
Q29udGVudFBvaW50OnRvU2Nyb2xsZXJJbXA6XSk6CisgICAgICAgICgtW1dlYlNjcm9sbGJhclBh
cnRBbmltYXRpb24gc3RhcnRBbmltYXRpb25dKToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFp
bnRlckRlbGVnYXRlIG1vdXNlTG9jYXRpb25JblNjcm9sbGVyRm9yU2Nyb2xsZXJJbXA6XSk6Cisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9u
OnNjcm9sbGVyUGFpbnRlcjpwYXJ0OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZUtub2JB
bHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdh
dGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpkdXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV2ViU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIHNjcm9sbGVySW1wOmFuaW1hdGVVSVN0YXRl
VHJhbnNpdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFpbnRl
ckRlbGVnYXRlIHNjcm9sbGVySW1wOmFuaW1hdGVFeHBhbnNpb25UcmFuc2l0aW9uV2l0aER1cmF0
aW9uOl0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50ZXJl
ZFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6bW91c2VF
eGl0ZWRTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmRp
ZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
TWFjOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbnZhbGlkYXRlU2Nyb2xsYmFy
UGFydExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6dmVydGlj
YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvck1hYzo6aG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTY3JvbGxiYXJQYXJ0aWNpcGF0ZUluSGl0
VGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRlU2Ny
b2xsZXJTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxi
YXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1i
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJ
bnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBk
YXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpz
ZXRQYWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6
dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNCdXR0b25zKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6aGFzVGh1bWIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpiYWNrQnV0dG9u
UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmZv
cndhcmRCdXR0b25SZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTW9jazo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmlzTW9ja1RoZW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VGh1bWIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpm
b3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6
dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRD
ZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpzaG91
bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRHcmlwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclBhcnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
OjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6d2lsbFBhaW50U2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5o
OgorCiAyMDE1LTA2LTI1ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAK
ICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDVhNDdlYTgyYWE2NjI4
OGMyNWVjZDFkYTYxNDIxNTA1Nzc2ZDYzM2IuLmJkODU1N2Y4ZDExNGY4NGVmYTFjZDg3YWMyNDg5
MDYzOGE2NjRkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVN
YWMubW0KQEAgLTQzLDkgKzQzLDkgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGwKICAgICBTY3Jv
bGxiYXJUaGVtZU1hYyogbWFjVGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyo+
KHNjcm9sbGJhclRoZW1lKTsKIAogICAgIFNjcm9sbGJhclBhaW50ZXIgdmVydGljYWxQYWludGVy
ID0gdmVydGljYWxTY3JvbGxiYXIgJiYgdmVydGljYWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRl
T25TZWNvbmRhcnlUaHJlYWQoKQotICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xs
YmFyKHZlcnRpY2FsU2Nyb2xsYmFyKSA6IDA7CisgICAgICAgID8gbWFjVGhlbWUtPnBhaW50ZXJG
b3JTY3JvbGxiYXIoKnZlcnRpY2FsU2Nyb2xsYmFyKSA6IG51bGxwdHI7CiAgICAgU2Nyb2xsYmFy
UGFpbnRlciBob3Jpem9udGFsUGFpbnRlciA9IGhvcml6b250YWxTY3JvbGxiYXIgJiYgaG9yaXpv
bnRhbFNjcm9sbGJhci0+c3VwcG9ydHNVcGRhdGVPblNlY29uZGFyeVRocmVhZCgpCi0gICAgICAg
ID8gbWFjVGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhcikgOiAw
OworICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKCpob3Jpem9udGFsU2Ny
b2xsYmFyKSA6IG51bGxwdHI7CiAKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIg
PT0gdmVydGljYWxQYWludGVyICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPT0gaG9y
aXpvbnRhbFBhaW50ZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBhZDQ4NzkzMThjOWRiYWJmODUyZDZiMTgwMjIxMmI2
ZDcxMmZhYjNmLi41ZGZjNjk1NWYyMTk2YWQ0NDhjYzYwNzAyZGU2NmRjYTJiYmExNjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0zMzksMTQgKzMz
OSwxNCBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZQogICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlID0gb3ZlcmxheVN0eWxlOwogCiAgICAgaWYgKGhvcml6b250YWxTY3JvbGxiYXIoKSkgewot
ICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKmhvcml6b250YWxTY3JvbGxiYXIoKSk7
CiAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBp
ZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gZXhpc3RpbmdTY3JvbGxBbmltYXRv
cigpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPmludmFsaWRhdGVTY3JvbGxiYXJQYXJ0
TGF5ZXJzKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2ZXJ0
aWNhbFNjcm9sbGJhcigpKSB7Ci0gICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51cGRh
dGVTY3JvbGxiYXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKnZlcnRp
Y2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcigpLT5pbnZhbGlkYXRl
KCk7CiAgICAgICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGlu
Z1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRvci0+aW52YWxpZGF0
ZVNjcm9sbGJhclBhcnRMYXllcnModmVydGljYWxTY3JvbGxiYXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCBhNWI2ZTNmZjEwYThmNmVmNDc5NTc0ZmU0NTljODI5
ODg1YTdmNDhlLi41MmQ3ODc0YWE5OGI1YWYxODczN2FkMDc2NTBlNjUyNjU2ZmMzMWIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgU2Nyb2xs
YmFyOjpTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnQKICAgICBpZiAoIW1fdGhlbWUpCiAgICAgICAgIG1fdGhlbWUgPSBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKIAotICAgIG1fdGhlbWUtPnJlZ2lzdGVyU2Nyb2xsYmFy
KHRoaXMpOworICAgIG1fdGhlbWUtPnJlZ2lzdGVyU2Nyb2xsYmFyKCp0aGlzKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIHVnbHkgYW5kIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgd2UgZml4
IGNyb3NzLXBsYXRmb3JtIGNvZGUgdG8gYWN0dWFsbHkgcXVlcnkgZm9yCiAgICAgLy8gc2Nyb2xs
YmFyIHRoaWNrbmVzcyBhbmQgdXNlIGl0IHdoZW4gc2l6aW5nIHNjcm9sbGJhcnMgKHJhdGhlciB0
aGFuIGxlYXZpbmcgb25lIGRpbWVuc2lvbiBvZiB0aGUgc2Nyb2xsYmFyCkBAIC0xMDAsNyArMTAw
LDcgQEAgU2Nyb2xsYmFyOjp+U2Nyb2xsYmFyKCkKIHsKICAgICBzdG9wVGltZXJJZk5lZWRlZCgp
OwogICAgIAotICAgIG1fdGhlbWUtPnVucmVnaXN0ZXJTY3JvbGxiYXIodGhpcyk7CisgICAgbV90
aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcigqdGhpcyk7CiB9CiAKIFNjcm9sbGJhck92ZXJsYXlT
dHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0CkBAIC0xMjQsMTEg
KzEyNCwxMSBAQCB2b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKICAgICBpZiAocG9z
aXRpb24gPT0gbV9jdXJyZW50UG9zKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgb2xkVGh1
bWJQb3NpdGlvbiA9IHRoZW1lKCktPnRodW1iUG9zaXRpb24odGhpcyk7CisgICAgaW50IG9sZFRo
dW1iUG9zaXRpb24gPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0aGlzKTsKICAgICBtX2N1cnJl
bnRQb3MgPSBwb3NpdGlvbjsKICAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7CiAgICAgaWYgKG1f
cHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KQotICAgICAgICBzZXRQcmVzc2VkUG9zKG1fcHJlc3Nl
ZFBvcyArIHRoZW1lKCktPnRodW1iUG9zaXRpb24odGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsg
ICAgCisgICAgICAgIHNldFByZXNzZWRQb3MobV9wcmVzc2VkUG9zICsgdGhlbWUoKS0+dGh1bWJQ
b3NpdGlvbigqdGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsKIH0KIAogdm9pZCBTY3JvbGxiYXI6
OnNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKQpAQCAtMTU0LDcg
KzE1NCw3IEBAIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVtYigpCiAjaWZkZWYgVEhVTUJfUE9T
SVRJT05fQUZGRUNUU19CVVRUT05TCiAgICAgaW52YWxpZGF0ZSgpOwogI2Vsc2UKLSAgICB0aGVt
ZSgpLT5pbnZhbGlkYXRlUGFydHModGhpcywgRm9yd2FyZFRyYWNrUGFydCB8IEJhY2tUcmFja1Bh
cnQgfCBUaHVtYlBhcnQpOworICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0cygqdGhpcywgRm9y
d2FyZFRyYWNrUGFydCB8IEJhY2tUcmFja1BhcnQgfCBUaHVtYlBhcnQpOwogI2VuZGlmCiB9CiAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogICAgIGlmIChjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGhlbWUoKS0+cGFpbnQodGhpcywgY29udGV4
dCwgZGFtYWdlUmVjdCkpCisgICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgKmNvbnRleHQs
IGRhbWFnZVJlY3QpKQogICAgICAgICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIGRhbWFnZVJlY3Qp
OwogfQogCkBAIC0xODksOCArMTg5LDggQEAgdm9pZCBTY3JvbGxiYXI6OmF1dG9zY3JvbGxUaW1l
ckZpcmVkKCkKIAogc3RhdGljIGJvb2wgdGh1bWJVbmRlck1vdXNlKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogewotICAgIGludCB0aHVtYlBvcyA9IHNjcm9sbGJhci0+dGhlbWUoKS0+dHJhY2tQb3Np
dGlvbihzY3JvbGxiYXIpICsgc2Nyb2xsYmFyLT50aGVtZSgpLT50aHVtYlBvc2l0aW9uKHNjcm9s
bGJhcik7Ci0gICAgaW50IHRodW1iTGVuZ3RoID0gc2Nyb2xsYmFyLT50aGVtZSgpLT50aHVtYkxl
bmd0aChzY3JvbGxiYXIpOworICAgIGludCB0aHVtYlBvcyA9IHNjcm9sbGJhci0+dGhlbWUoKS0+
dHJhY2tQb3NpdGlvbigqc2Nyb2xsYmFyKSArIHNjcm9sbGJhci0+dGhlbWUoKS0+dGh1bWJQb3Np
dGlvbigqc2Nyb2xsYmFyKTsKKyAgICBpbnQgdGh1bWJMZW5ndGggPSBzY3JvbGxiYXItPnRoZW1l
KCktPnRodW1iTGVuZ3RoKCpzY3JvbGxiYXIpOwogICAgIHJldHVybiBzY3JvbGxiYXItPnByZXNz
ZWRQb3MoKSA+PSB0aHVtYlBvcyAmJiBzY3JvbGxiYXItPnByZXNzZWRQb3MoKSA8IHRodW1iUG9z
ICsgdGh1bWJMZW5ndGg7CiB9CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNjcm9sbGJhcjo6
YXV0b3Njcm9sbFByZXNzZWRQYXJ0KGRvdWJsZSBkZWxheSkKIAogICAgIC8vIEhhbmRsZSB0aGUg
dHJhY2suCiAgICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgbV9wcmVz
c2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aHVtYlVuZGVyTW91c2UodGhpcykpIHsK
LSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQodGhpcywgbV9wcmVzc2VkUGFydCk7Cisg
ICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKICAg
ICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbGJhcjo6c3RhcnRUaW1lcklmTmVlZGVkKGRv
dWJsZSBkZWxheSkKICAgICAvLyBIYW5kbGUgdGhlIHRyYWNrLiAgV2UgaGFsdCB0cmFjayBzY3Jv
bGxpbmcgb25jZSB0aGUgdGh1bWIgaXMgbGV2ZWwKICAgICAvLyB3aXRoIHVzLgogICAgIGlmICgo
bV9wcmVzc2VkUGFydCA9PSBCYWNrVHJhY2tQYXJ0IHx8IG1fcHJlc3NlZFBhcnQgPT0gRm9yd2Fy
ZFRyYWNrUGFydCkgJiYgdGh1bWJVbmRlck1vdXNlKHRoaXMpKSB7Ci0gICAgICAgIHRoZW1lKCkt
PmludmFsaWRhdGVQYXJ0KHRoaXMsIG1fcHJlc3NlZFBhcnQpOworICAgICAgICB0aGVtZSgpLT5p
bnZhbGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CiAgICAgICAgIHNldEhvdmVyZWRQ
YXJ0KFRodW1iUGFydCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTAsOSArMjkwLDkg
QEAgdm9pZCBTY3JvbGxiYXI6Om1vdmVUaHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1l
bnQpCiAgICAgfQogCiAgICAgLy8gRHJhZyB0aGUgdGh1bWIuCi0gICAgaW50IHRodW1iUG9zID0g
dGhlbWUoKS0+dGh1bWJQb3NpdGlvbih0aGlzKTsKLSAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgp
LT50aHVtYkxlbmd0aCh0aGlzKTsKLSAgICBpbnQgdHJhY2tMZW4gPSB0aGVtZSgpLT50cmFja0xl
bmd0aCh0aGlzKTsKKyAgICBpbnQgdGh1bWJQb3MgPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0
aGlzKTsKKyAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgpLT50aHVtYkxlbmd0aCgqdGhpcyk7Cisg
ICAgaW50IHRyYWNrTGVuID0gdGhlbWUoKS0+dHJhY2tMZW5ndGgoKnRoaXMpOwogICAgIGludCBt
YXhQb3MgPSB0cmFja0xlbiAtIHRodW1iTGVuOwogICAgIGlmIChkZWx0YSA+IDApCiAgICAgICAg
IGRlbHRhID0gc3RkOjptaW4obWF4UG9zIC0gdGh1bWJQb3MsIGRlbHRhKTsKQEAgLTMxMyw4ICsz
MTMsOCBAQCB2b2lkIFNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0
KQogICAgIGlmICgobV9ob3ZlcmVkUGFydCA9PSBOb1BhcnQgfHwgcGFydCA9PSBOb1BhcnQpICYm
IHRoZW1lKCktPmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkpCiAgICAgICAgIGludmFsaWRh
dGUoKTsgIC8vIEp1c3QgaW52YWxpZGF0ZSB0aGUgd2hvbGUgc2Nyb2xsYmFyLCBzaW5jZSB0aGUg
YnV0dG9ucyBhdCBlaXRoZXIgZW5kIGNoYW5nZSBhbnl3YXkuCiAgICAgZWxzZSBpZiAobV9wcmVz
c2VkUGFydCA9PSBOb1BhcnQpIHsgIC8vIFdoZW4gdGhlcmUncyBhIHByZXNzZWQgcGFydCwgd2Ug
ZG9uJ3QgZHJhdyBhIGhvdmVyZWQgc3RhdGUsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGludmFs
aWRhdGUuCi0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIHBhcnQpOwotICAg
ICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKKyAgICAg
ICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIHBhcnQpOworICAgICAgICB0aGVtZSgp
LT5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9ob3ZlcmVkUGFydCk7CiAgICAgfQogICAgIG1faG92
ZXJlZFBhcnQgPSBwYXJ0OwogfQpAQCAtMzIyLDI0ICszMjIsMjQgQEAgdm9pZCBTY3JvbGxiYXI6
OnNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKIHZvaWQgU2Nyb2xsYmFyOjpzZXRQ
cmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKG1fcHJlc3NlZFBhcnQg
IT0gTm9QYXJ0KQotICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX3ByZXNz
ZWRQYXJ0KTsKKyAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3Nl
ZFBhcnQpOwogICAgIG1fcHJlc3NlZFBhcnQgPSBwYXJ0OwogICAgIGlmIChtX3ByZXNzZWRQYXJ0
ICE9IE5vUGFydCkKLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQodGhpcywgbV9wcmVz
c2VkUGFydCk7CisgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNz
ZWRQYXJ0KTsKICAgICBlbHNlIGlmIChtX2hvdmVyZWRQYXJ0ICE9IE5vUGFydCkgIC8vIFdoZW4g
d2Ugbm8gbG9uZ2VyIGhhdmUgYSBwcmVzc2VkIHBhcnQsIHdlIGNhbiBzdGFydCBkcmF3aW5nIGEg
aG92ZXJlZCBzdGF0ZSBvbiB0aGUgaG92ZXJlZCBwYXJ0LgotICAgICAgICB0aGVtZSgpLT5pbnZh
bGlkYXRlUGFydCh0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKKyAgICAgICAgdGhlbWUoKS0+aW52YWxp
ZGF0ZVBhcnQoKnRoaXMsIG1faG92ZXJlZFBhcnQpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykK
IGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQogewogICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IFRodW1iUGFydCkgewotICAgICAgICBpZiAo
dGhlbWUoKS0+c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4odGhpcywgZXZ0KSkKKyAgICAgICAg
aWYgKHRoZW1lKCktPnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKCp0aGlzLCBldnQpKQogICAg
ICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24o
bV9vcmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAg
ICAgICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlv
bigpKS54KCkgOgotICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyhldnQucG9zaXRpb24oKSkueSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9jdW1lbnRJbnN0
ZWFkT2ZUaHVtYih0aGlzLCBldnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSwgdGhlbWUoKS0+c2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoKnRoaXMsIGV2dCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM0NywxOSArMzQ3LDE5IEBAIGJvb2wgU2Nyb2xsYmFy
Ojptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIGlmIChtX3By
ZXNzZWRQYXJ0ICE9IE5vUGFydCkKICAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhl
dnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Np
dGlvbigpKS55KCkpOwogCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUoKS0+aGl0VGVz
dCh0aGlzLCBldnQucG9zaXRpb24oKSk7CisgICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUo
KS0+aGl0VGVzdCgqdGhpcywgZXZ0LnBvc2l0aW9uKCkpOwogICAgIGlmIChwYXJ0ICE9IG1faG92
ZXJlZFBhcnQpIHsKICAgICAgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KSB7CiAgICAg
ICAgICAgICBpZiAocGFydCA9PSBtX3ByZXNzZWRQYXJ0KSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIG1vdXNlIGlzIG1vdmluZyBiYWNrIG92ZXIgdGhlIHByZXNzZWQgcGFydC4gIFdlCiAgICAg
ICAgICAgICAgICAgLy8gbmVlZCB0byBzdGFydCB1cCB0aGUgdGltZXIgYWN0aW9uIGFnYWluLgog
ICAgICAgICAgICAgICAgIHN0YXJ0VGltZXJJZk5lZWRlZCh0aGVtZSgpLT5hdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpKTsKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlz
LCBtX3ByZXNzZWRQYXJ0KTsKKyAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFy
dCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1faG92ZXJl
ZFBhcnQgPT0gbV9wcmVzc2VkUGFydCkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBp
cyBsZWF2aW5nIHRoZSBwcmVzc2VkIHBhcnQuICBLaWxsIG91ciB0aW1lcgogICAgICAgICAgICAg
ICAgIC8vIGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgICBzdG9wVGltZXJJZk5lZWRlZCgpOwot
ICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIG1fcHJlc3NlZFBh
cnQpOworICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3By
ZXNzZWRQYXJ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAgCkBAIC0zOTEs
NyArMzkxLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogCiAgICAgLy8gbV9ob3ZlcmVkUGFydCB3b24ndCBiZSB1cGRhdGVk
IHVudGlsIHRoZSBuZXh0IG1vdXNlTW92ZWQgb3IgbW91c2VEb3duLCBzbyB3ZSBoYXZlIHRvIGhp
dCB0ZXN0CiAgICAgLy8gdG8gcmVhbGx5IGtub3cgaWYgdGhlIG1vdXNlIGhhcyBleGl0ZWQgdGhl
IHNjcm9sbGJhciBvbiBhIG1vdXNlVXAuCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUo
KS0+aGl0VGVzdCh0aGlzLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOworICAgIFNjcm9sbGJhclBh
cnQgcGFydCA9IHRoZW1lKCktPmhpdFRlc3QoKnRoaXMsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
CiAgICAgaWYgKHBhcnQgPT0gTm9QYXJ0KQogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLm1vdXNl
RXhpdGVkU2Nyb2xsYmFyKHRoaXMpOwogCkBAIC00MDQsMTggKzQwNCwxOCBAQCBib29sIFNjcm9s
bGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIGlmIChl
dnQuYnV0dG9uKCkgPT0gUmlnaHRCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhN
RTogSGFuZGxlZCBhcyBjb250ZXh0IG1lbnUgYnkgUXQgcmlnaHQgbm93LiAgU2hvdWxkIGp1c3Qg
YXZvaWQgZXZlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgcmlnaHQgY2xpY2sgdGhvdWdoLgog
Ci0gICAgc2V0UHJlc3NlZFBhcnQodGhlbWUoKS0+aGl0VGVzdCh0aGlzLCBldnQucG9zaXRpb24o
KSkpOworICAgIHNldFByZXNzZWRQYXJ0KHRoZW1lKCktPmhpdFRlc3QoKnRoaXMsIGV2dC5wb3Np
dGlvbigpKSk7CiAgICAgaW50IHByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigp
KS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7
CiAgICAgCi0gICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgbV9wcmVz
c2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRo
dW1iKHRoaXMsIGV2dCkpIHsKKyAgICBpZiAoKG1fcHJlc3NlZFBhcnQgPT0gQmFja1RyYWNrUGFy
dCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFja1BhcnQpICYmIHRoZW1lKCktPnNob3Vs
ZENlbnRlck9uVGh1bWIoKnRoaXMsIGV2dCkpIHsKICAgICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1
bWJQYXJ0KTsKICAgICAgICAgc2V0UHJlc3NlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgbV9k
cmFnT3JpZ2luID0gbV9jdXJyZW50UG9zOwotICAgICAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgp
LT50aHVtYkxlbmd0aCh0aGlzKTsKKyAgICAgICAgaW50IHRodW1iTGVuID0gdGhlbWUoKS0+dGh1
bWJMZW5ndGgoKnRoaXMpOwogICAgICAgICBpbnQgZGVzaXJlZFBvcyA9IHByZXNzZWRQb3M7CiAg
ICAgICAgIC8vIFNldCB0aGUgcHJlc3NlZCBwb3NpdGlvbiB0byB0aGUgbWlkZGxlIG9mIHRoZSB0
aHVtYiBzbyB0aGF0IHdoZW4gd2UgZG8gdGhlIG1vdmUsIHRoZSBkZWx0YQogICAgICAgICAvLyB3
aWxsIGJlIGZyb20gdGhlIGN1cnJlbnQgcGl4ZWwgcG9zaXRpb24gb2YgdGhlIHRodW1iIHRvIHRo
ZSBuZXcgZGVzaXJlZCBwb3NpdGlvbiBmb3IgdGhlIHRodW1iLgotICAgICAgICBtX3ByZXNzZWRQ
b3MgPSB0aGVtZSgpLT50cmFja1Bvc2l0aW9uKHRoaXMpICsgdGhlbWUoKS0+dGh1bWJQb3NpdGlv
bih0aGlzKSArIHRodW1iTGVuIC8gMjsKKyAgICAgICAgbV9wcmVzc2VkUG9zID0gdGhlbWUoKS0+
dHJhY2tQb3NpdGlvbigqdGhpcykgKyB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0aGlzKSArIHRo
dW1iTGVuIC8gMjsKICAgICAgICAgbW92ZVRodW1iKGRlc2lyZWRQb3MpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fcHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KQpAQCAt
NDMyLDcgKzQzMiw3IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRFbmFibGVkKGJvb2wgZSkKICAgICBp
ZiAobV9lbmFibGVkID09IGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBlOwot
ICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJsZWRTdGF0ZSh0aGlzKTsKKyAgICB0aGVtZSgpLT51cGRh
dGVFbmFibGVkU3RhdGUoKnRoaXMpOwogICAgIGludmFsaWRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggOTNhN2Q3N2YyZGRkMzhiMjIxNzU2
OGNiMDcxZmU0OGYzNjQxMmZmZS4uZDVlNWMwZTAxNWE4MDQyZjQwYzcwZjAzNDAyNmU2YTUwZTg0
MDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKK2NsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50OwogY2xhc3Mg
U2Nyb2xsVmlldzsKIApAQCAtNDYsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJU
aGVtZSgpIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lKCkge307CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9Owor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyJikgeyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFBvaW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAgdmlydHVhbCBib29sIHBhaW50
KFNjcm9sbGJhciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVj
dCovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0
KFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CiAgICAgCiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0g
UmVndWxhclNjcm9sbGJhcikgeyByZXR1cm4gMDsgfQogCkBAIC01OCwxMyArNTksMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVzZXNPdmVybGF5U2Nyb2xs
YmFyc0NoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCB0aGVtZUNoYW5nZWQoKSB7fQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25N
b3VzZUVudGVyRXhpdCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGludmFsaWRhdGVQ
YXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFy
dE1hc2sgbWFzaykKKyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXImIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIG1hc2spCiAgICAgewogICAgICAgICBpZiAobWFz
ayAmIEJhY2tCdXR0b25TdGFydFBhcnQpCiAgICAgICAgICAgICBpbnZhbGlkYXRlUGFydChzY3Jv
bGxiYXIsIEJhY2tCdXR0b25TdGFydFBhcnQpOwpAQCAtODIsMTIgKzgzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBh
cnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlUGFydChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0KSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihj
b250ZXh0LCBjb3JuZXJSZWN0KTsgfQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpIHsgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxi
YXImLCBjb25zdCBJbnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdB
cmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCkBAIC05NSwyMSArOTYsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRVcENv
bnRlbnRTaGFkb3dMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8g
VGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmly
dHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9
IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxi
YXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0
aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9s
bGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciYs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXImKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3Np
dGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgorICAgIHZpcnR1YWwgaW50
IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0
aGUgdGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGlu
dCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9u
IG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50
IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0
aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KIAogICAgIHZpcnR1YWwg
aW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRp
bWVyRGVsYXkoKSB7IHJldHVybiAwLjI1OyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9s
bFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjA1OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCBhMGZl
Zjc0ZTBhOTY3YjUwZTdhYTVhYTFlMDUwYjJjNTc2YTFjN2JhLi44ZTJmODM1YzY3MzJkZTY0ZTA1
OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKKyNpbmNsdWRlICJTY3Jv
bGxiYXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkK
IHsKICAgICAvLyBDcmVhdGUgdGhlIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0
aGUgZGFtYWdlUmVjdAogICAgIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0g
Tm9QYXJ0OwpAQCAtMTA5LDE2ICsxMDksMTYgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb24KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24pCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRU
ZXN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAg
ICAgU2Nyb2xsYmFyUGFydCByZXN1bHQgPSBOb1BhcnQ7Ci0gICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICBJbnRQb2ludCB0ZXN0UG9zaXRpb24gPSBzY3JvbGxiYXItPmNvbnZlcnRG
cm9tQ29udGFpbmluZ1dpbmRvdyhwb3NpdGlvbik7Ci0gICAgdGVzdFBvc2l0aW9uLm1vdmUoc2Ny
b2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsKKyAgICBJbnRQb2ludCB0ZXN0UG9zaXRpb24g
PSBzY3JvbGxiYXIuY29udmVydEZyb21Db250YWluaW5nV2luZG93KHBvc2l0aW9uKTsKKyAgICB0
ZXN0UG9zaXRpb24ubW92ZShzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpKTsKICAgICAKLSAg
ICBpZiAoIXNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuY29udGFpbnModGVzdFBvc2l0aW9uKSkKKyAg
ICBpZiAoIXNjcm9sbGJhci5mcmFtZVJlY3QoKS5jb250YWlucyh0ZXN0UG9zaXRpb24pKQogICAg
ICAgICByZXR1cm4gTm9QYXJ0OwogCiAgICAgcmVzdWx0ID0gU2Nyb2xsYmFyQkdQYXJ0OwpAQCAt
MTQ4LDcgKzE0OCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Omhp
dFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXImIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjCiAg
ICAgICAgICAgICByZXN1bHQgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNjcm9sbGJhckJHUGFydDoKLSAgICAgICAgICAgIHJl
c3VsdCA9IHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CisgICAgICAgICAgICByZXN1bHQgPSBzY3Jv
bGxiYXIuZnJhbWVSZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDog
ewogICAgICAgICAgICAgSW50UmVjdCBiZWZvcmVUaHVtYlJlY3QsIHRodW1iUmVjdCwgYWZ0ZXJU
aHVtYlJlY3Q7CkBAIC0xODQsMTkgKzE4NCwxOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTYwog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRodW1iUmVjdDsKICAgICAgICAgfQogICAgIH0KLSAg
ICByZXN1bHQubW92ZUJ5KC1zY3JvbGxiYXItPmxvY2F0aW9uKCkpOwotICAgIHNjcm9sbGJhci0+
aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKKyAgICByZXN1bHQubW92ZUJ5KC1zY3JvbGxiYXIubG9j
YXRpb24oKSk7CisgICAgc2Nyb2xsYmFyLmludmFsaWRhdGVSZWN0KHJlc3VsdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50
UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVy
VGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3Jv
bGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwg
SW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFm
dGVyVGh1bWJSZWN0KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2Fs
bGVkIHVubGVzcyB3ZSdyZSBiaWcgZW5vdWdoIHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0
aGVzZSB0aHJlZSByZWN0cyB3aGVyZSBhdCBsZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5v
bi1lbXB0eS4KICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAgICBpbnQgdGhp
Y2tuZXNzID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBzY3JvbGxiYXItPmhlaWdodCgpIDogc2Nyb2xsYmFyLT53aWR0aCgpOworICAgIGludCB0aGlj
a25lc3MgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
c2Nyb2xsYmFyLmhlaWdodCgpIDogc2Nyb2xsYmFyLndpZHRoKCk7CiAgICAgaW50IHRodW1iUG9z
ID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICB0aHVtYlJlY3QgPSBJbnRS
ZWN0KHRyYWNrUmVjdC54KCkgKyB0aHVtYlBvcywgdHJhY2tSZWN0LnkoKSArICh0cmFja1JlY3Qu
aGVpZ2h0KCkgLSB0aGlja25lc3MpIC8gMiwgdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSwgdGhpY2tu
ZXNzKTsgCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpIHsKKyAgICAgICAgdGh1bWJSZWN0ID0gSW50UmVjdCh0cmFja1JlY3QueCgpICsgdGh1
bWJQb3MsIHRyYWNrUmVjdC55KCkgKyAodHJhY2tSZWN0LmhlaWdodCgpIC0gdGhpY2tuZXNzKSAv
IDIsIHRodW1iTGVuZ3RoKHNjcm9sbGJhciksIHRoaWNrbmVzcyk7CiAgICAgICAgIGJlZm9yZVRo
dW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSwgdHJhY2tSZWN0LnkoKSwgdGh1bWJQb3Mg
KyB0aHVtYlJlY3Qud2lkdGgoKSAvIDIsIHRyYWNrUmVjdC5oZWlnaHQoKSk7IAogICAgICAgICBh
ZnRlclRodW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSArIGJlZm9yZVRodW1iUmVjdC53
aWR0aCgpLCB0cmFja1JlY3QueSgpLCB0cmFja1JlY3QubWF4WCgpIC0gYmVmb3JlVGh1bWJSZWN0
Lm1heFgoKSwgdHJhY2tSZWN0LmhlaWdodCgpKTsKICAgICB9IGVsc2UgewpAQCAtMjA4LDMzICsy
MDgsMzMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdAogCiAvLyBSZXR1cm5zIHRoZSBzaXplIHJl
cHJlc2VudGVkIGJ5IHRyYWNrIHRha2luZyBpbnRvIGFjY291bnQgc2Nyb2xsaW5nIHBhc3QKIC8v
IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Lgotc3RhdGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXpl
KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG92ZXJoYW5nQXRTdGFydCA9IC1z
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKTsKLSAgICBmbG9hdCBvdmVyaGFuZ0F0RW5kID0gc2Nyb2xs
YmFyLT5jdXJyZW50UG9zKCkgKyBzY3JvbGxiYXItPnZpc2libGVTaXplKCkgLSBzY3JvbGxiYXIt
PnRvdGFsU2l6ZSgpOworICAgIGZsb2F0IG92ZXJoYW5nQXRTdGFydCA9IC1zY3JvbGxiYXIuY3Vy
cmVudFBvcygpOworICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBzY3JvbGxiYXIuY3VycmVudFBv
cygpICsgc2Nyb2xsYmFyLnZpc2libGVTaXplKCkgLSBzY3JvbGxiYXIudG90YWxTaXplKCk7CiAg
ICAgZmxvYXQgb3ZlcmhhbmcgPSBzdGQ6Om1heCgwLjBmLCBzdGQ6Om1heChvdmVyaGFuZ0F0U3Rh
cnQsIG92ZXJoYW5nQXRFbmQpKTsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSAr
IG92ZXJoYW5nOworICAgIHJldHVybiBzY3JvbGxiYXIudG90YWxTaXplKCkgKyBvdmVyaGFuZzsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKHNjcm9sbGJhci0+
ZW5hYmxlZCgpKSB7Ci0gICAgICAgIGZsb2F0IHNpemUgPSB1c2VkVG90YWxTaXplKHNjcm9sbGJh
cikgLSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CisgICAgaWYgKHNjcm9sbGJhci5lbmFibGVk
KCkpIHsKKyAgICAgICAgZmxvYXQgc2l6ZSA9IHVzZWRUb3RhbFNpemUoc2Nyb2xsYmFyKSAtIHNj
cm9sbGJhci52aXNpYmxlU2l6ZSgpOwogICAgICAgICAvLyBBdm9pZCBkb2luZyBhIGZsb2F0aW5n
IHBvaW50IGRpdmlkZSBieSB6ZXJvIGFuZCByZXR1cm4gMSB3aGVuIHVzZWRUb3RhbFNpemUgPT0g
dmlzaWJsZVNpemUuCiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBmbG9hdCBwb3MgPSBzdGQ6Om1heCgwLjBmLCBzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8g
c2l6ZTsKKyAgICAgICAgZmxvYXQgcG9zID0gc3RkOjptYXgoMC4wZiwgc2Nyb2xsYmFyLmN1cnJl
bnRQb3MoKSkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJh
cikpIC8gc2l6ZTsKICAgICAgICAgcmV0dXJuIChwb3MgPCAxICYmIHBvcyA+IDApID8gMSA6IHBv
czsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK2ludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7
Ci0gICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxvYXQgcHJvcG9ydGlvbiA9IHNjcm9s
bGJhci0+dmlzaWJsZVNpemUoKSAvIHVzZWRUb3RhbFNpemUoc2Nyb2xsYmFyKTsKKyAgICBmbG9h
dCBwcm9wb3J0aW9uID0gc2Nyb2xsYmFyLnZpc2libGVTaXplKCkgLyB1c2VkVG90YWxTaXplKHNj
cm9sbGJhcik7CiAgICAgaW50IHRyYWNrTGVuID0gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKTsKICAg
ICBpbnQgbGVuZ3RoID0gcm91bmQocHJvcG9ydGlvbiAqIHRyYWNrTGVuKTsKICAgICBsZW5ndGgg
PSBzdGQ6Om1heChsZW5ndGgsIG1pbmltdW1UaHVtYkxlbmd0aChzY3JvbGxiYXIpKTsKQEAgLTI0
MywyMSArMjQzLDIxIEBAIGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwogfQog
Ci1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIHNj
cm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOworICAgIHJldHVybiBz
Y3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihT
Y3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0
ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChz
Y3JvbGxiYXIpKTsKLSAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci0+
eCgpIDogY29uc3RyYWluZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CisgICAgcmV0
dXJuIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNv
bnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci54KCkgOiBjb25zdHJhaW5lZFRyYWNr
UmVjdC55KCkgLSBzY3JvbGxiYXIueSgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
ewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwotICAgIHJldHVy
biAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29u
c3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgp
OworICAgIHJldHVybiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QuaGVpZ2h0KCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50U2Ny
b2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4
dCogY28KICAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsK
ICAgICBpZiAoIWhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aAppbmRleCA0MDZmNTU4MThmZWE1NTZjZWMzZDg0ODRlMzBjYzY0NjA5MTU1MjM0Li43MGE3OWVm
MTcxNDU5Y2NhYjEzMGJkYzFmNDhlM2ZhMzgyZDhlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKQEAgLTM5LDM4ICszOSwzOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSA6IHB1
YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgLy8gSW1wbGVtZW50IFNjcm9sbGJh
clRoZW1lIGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAg
IHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0
aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwor
ICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBh
cnQgaGl0VGVzdChTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRP
dmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1i
KFNjcm9sbGJhciYpID0gMDsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwot
ICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgdGh1bWJSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJ
bnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwor
ICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmIHRy
YWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJh
Y2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFp
bnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNj
cm9sbGJhciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9sbGJhcihHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQmLCBTY3JvbGxiYXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0Jiwg
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAg
dmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAppbmRleCA4OTc0
NzI4MDY1ZmE1OTEyMTc2ZWU5Y2M1YTBmMzdiNGU0ZTlmOWFjLi40YTIzNTJmYWNjZDQ0YjAwNTlh
ODE2YTdmMDk3MzRkYWRiZTNiNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTY3JvbGxiYXJUaGlja25lc3MoaW50IHRoaWNrbmVzcykgeyBtX3Njcm9sbGJhclRoaWNr
bmVzcyA9IHRoaWNrbmVzczsgfQogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Nyb2xsYmFyVGhpY2tuZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBvdmVycmlk
ZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBv
dmVycmlkZSB7IH0KIHByaXZhdGU6CiAgICAgaW50IG1fc2Nyb2xsYmFyVGhpY2tuZXNzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3Bw
CmluZGV4IDhmY2JiMzJkMjMyZmNiNzE2ZjQ1NzZjZWUzZDBlZTBkYTQyYjUyNzQuLmY2ZWY1Zjk2
OWI5MmFhNmMzNzExY2JlY2VjMzE3NGY2YjliN2FlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBT
Y3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKIHsKIH0KIAotYm9vbCBTY3Jv
bGxiYXJUaGVtZUd0azo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
ewogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3Qg
Y2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCkBAIC01OCw3ICs1
OCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiAjZW5kaWYKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICNp
Zm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFy
dCAmJiAhbV9oYXNCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTY2LDE4ICs2NiwxOCBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbAogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQgJiYg
IW1faGFzQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAot
ICAgIGludCB4ID0gc2Nyb2xsYmFyLT54KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOwotICAgIGlu
dCB5ID0gc2Nyb2xsYmFyLT55KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOworICAgIGludCB4ID0g
c2Nyb2xsYmFyLngoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGg7CisgICAgaW50IHkgPSBzY3JvbGxi
YXIueSgpICsgbV90cm91Z2hCb3JkZXJXaWR0aDsKICAgICBJbnRTaXplIHNpemUgPSBidXR0b25T
aXplKHNjcm9sbGJhcik7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
IAogICAgIC8vIEJhY2tCdXR0b25FbmRQYXJ0IChhbHRlcm5hdGUgYnV0dG9uKQotICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAg
cmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBtX3Ry
b3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLndpZHRoKCkpLCB5LCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKQorICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc2Ny
b2xsYmFyLndpZHRoKCkgLSBtX3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLndpZHRoKCkp
LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gVmVydGljYWxTY3Jv
bGxiYXIgYWx0ZXJuYXRlIGJ1dHRvbgotICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci0+
eSgpICsgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGggLSAoMiAqIHNp
emUuaGVpZ2h0KCkpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBJ
bnRSZWN0KHgsIHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkgLSBtX3Ryb3VnaEJv
cmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7CiAgICAgVU5VU0VEX1BB
UkFNKHBhcnQpOwpAQCAtODUsNyArODUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbAogI2Vu
ZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9o
YXNGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpAQCAtOTQsMjIgKzk0LDIyIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAgICBJbnRTaXplIHNp
emUgPSBidXR0b25TaXplKHNjcm9sbGJhcik7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIGludCB5ID0gc2Nyb2xsYmFy
LT55KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIGludCB5ID0gc2Nyb2xsYmFy
LnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGg7CiAgICAgICAgIGlmIChwYXJ0ID09IEZvcndhcmRC
dXR0b25FbmRQYXJ0KQotICAgICAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkg
KyBzY3JvbGxiYXItPndpZHRoKCkgLSBzaXplLndpZHRoKCkgLSBtX3Ryb3VnaEJvcmRlcldpZHRo
LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgcmV0dXJuIElu
dFJlY3Qoc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0gc2l6ZS53aWR0aCgpIC0g
bV90cm91Z2hCb3JkZXJXaWR0aCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAog
ICAgICAgICAvLyBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0IChhbHRlcm5hdGUgYnV0dG9uKQotICAg
ICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGgg
KyBzaXplLndpZHRoKCksIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6
ZS53aWR0aCgpLCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIH0KIAogICAg
IC8vIFZlcnRpY2FsU2Nyb2xsYmFyCi0gICAgaW50IHggPSBzY3JvbGxiYXItPngoKSArIG1fdHJv
dWdoQm9yZGVyV2lkdGg7CisgICAgaW50IHggPSBzY3JvbGxiYXIueCgpICsgbV90cm91Z2hCb3Jk
ZXJXaWR0aDsKICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCkKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0g
c2l6ZS5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGgsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci55KCkgKyBzY3Jv
bGxiYXIuaGVpZ2h0KCkgLSBzaXplLmhlaWdodCgpIC0gbV90cm91Z2hCb3JkZXJXaWR0aCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAogICAgIC8vIEZvcndhcmRCdXR0b25TdGFydFBh
cnQgKGFsdGVybmF0ZSBidXR0b24pCi0gICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55
KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIueSgpICsgbV90
cm91Z2hCb3JkZXJXaWR0aCArIHNpemUuaGVpZ2h0KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwogICAgIFVOVVNFRF9Q
QVJBTShwYXJ0KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTYwog
I2VuZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0
azo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sKQogewogI2lmbmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgogICAgIC8vIFRoZSBwYWRkaW5nIGFsb25nIHRoZSB0aHVtYiBtb3ZlbWVu
dCBheGlzIGluY2x1ZGVzIHRoZSB0cm91Z2ggYm9yZGVyCkBAIC0xMjYsNyArMTI2LDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGJvb2wpCiAgICAgaW50IG1vdmVtZW50QXhpc1BhZGRpbmcgPSBtX3Ryb3VnaEJv
cmRlcldpZHRoICsgbV9zdGVwcGVyU3BhY2luZzsKIAogICAgIC8vIFRoZSBmYXRuZXNzIG9mIHRo
ZSBzY3JvbGxiYXIgb24gdGhlIG5vbi1tb3ZlbWVudCBheGlzLgotICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKKyAgICBpbnQg
dGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKTsK
IAogICAgIGludCBzdGFydEJ1dHRvbnNPZmZzZXQgPSAwOwogICAgIGludCBidXR0b25zV2lkdGgg
PSAwOwpAQCAtMTQzLDE5ICsxNDMsMTkgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgaWYgKG1f
aGFzRm9yd2FyZEJ1dHRvbkVuZFBhcnQpCiAgICAgICAgIGJ1dHRvbnNXaWR0aCArPSBtX3N0ZXBw
ZXJTaXplOwogCi0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIpIHsKICAgICAgICAgLy8gT25jZSB0aGUgc2Nyb2xsYmFyIGJlY29tZXMgc21h
bGxlciB0aGFuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlCiAgICAgICAgIC8vIHR3byBidXR0b25z
LCB0aGUgdHJhY2sgZGlzYXBwZWFycy4KLSAgICAgICAgaWYgKHNjcm9sbGJhci0+d2lkdGgoKSA8
IDIgKiB0aGlja25lc3MpCisgICAgICAgIGlmIChzY3JvbGxiYXIud2lkdGgoKSA8IDIgKiB0aGlj
a25lc3MpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgICAgICByZXR1cm4gSW50
UmVjdChzY3JvbGxiYXItPngoKSArIG1vdmVtZW50QXhpc1BhZGRpbmcgKyBzdGFydEJ1dHRvbnNP
ZmZzZXQsIHNjcm9sbGJhci0+eSgpLAotICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXIt
PndpZHRoKCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRpbmcpIC0gYnV0dG9uc1dpZHRoLCB0aGlj
a25lc3MpOworICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgbW92ZW1lbnRB
eGlzUGFkZGluZyArIHN0YXJ0QnV0dG9uc09mZnNldCwgc2Nyb2xsYmFyLnkoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsYmFyLndpZHRoKCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRp
bmcpIC0gYnV0dG9uc1dpZHRoLCB0aGlja25lc3MpOwogICAgIH0KIAotICAgIGlmIChzY3JvbGxi
YXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcykKKyAgICBpZiAoc2Nyb2xsYmFyLmhlaWdodCgp
IDwgMiAqIHRoaWNrbmVzcykKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICByZXR1cm4g
SW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyBtb3ZlbWVudEF4aXNQYWRk
aW5nICsgc3RhcnRCdXR0b25zT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywg
c2Nyb2xsYmFyLT5oZWlnaHQoKSAtICgyICogbW92ZW1lbnRBeGlzUGFkZGluZykgLSBidXR0b25z
V2lkdGgpOworICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCkg
KyBtb3ZlbWVudEF4aXNQYWRkaW5nICsgc3RhcnRCdXR0b25zT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLmhlaWdodCgpIC0gKDIgKiBtb3ZlbWVudEF4aXNQ
YWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY3JvbGxi
YXIpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxi
YXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotdHlwZWRlZiBIYXNoU2V0PFNjcm9sbGJhclRoZW1l
Q2xpZW50Kj4gU2Nyb2xsYmFyTWFwOwordHlwZWRlZiBIYXNoU2V0PFNjcm9sbGJhcio+IFNjcm9s
bGJhck1hcDsKIAogc3RhdGljIFNjcm9sbGJhck1hcCYgc2Nyb2xsYmFyTWFwKCkKIHsKQEAgLTIy
OSwxNCArMjI5LDE0IEBAIHN0YXRpYyBTY3JvbGxiYXJNYXAmIHNjcm9sbGJhck1hcCgpCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHNjcm9s
bGJhck1hcCgpLmFkZChzY3JvbGxiYXIpOworICAgIHNjcm9sbGJhck1hcCgpLmFkZCgmc2Nyb2xs
YmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKLSAgICBzY3JvbGxi
YXJNYXAoKS5yZW1vdmUoc2Nyb2xsYmFyKTsKKyAgICBzY3JvbGxiYXJNYXAoKS5yZW1vdmUoJnNj
cm9sbGJhcik7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNG
cmFtZVRoaWNrbmVzcygpCkBAIC0yNTAsMjIgKzI1MCwyMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjp1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKQogICAgIGZvciAoY29uc3QgYXV0
byYgc2Nyb2xsYmFyIDogc2Nyb2xsYmFyTWFwKCkpIHsKICAgICAgICAgLy8gVG9wLWxldmVsIHNj
cm9sbGJhciBpLmUuIHNjcm9sbGJhcnMgd2hvIGhhdmUgYSBwYXJlbnQgU2Nyb2xsVmlldwogICAg
ICAgICAvLyB3aXRoIG5vIHBhcmVudCBhcmUgbmF0aXZlLCBhbmQgdGh1cyBkbyBub3QgbmVlZCB0
byBiZSByZXNpemVkLgotICAgICAgICBpZiAoIXNjcm9sbGJhci0+cGFyZW50KCkgfHwgIXNjcm9s
bGJhci0+cGFyZW50KCktPnBhcmVudCgpKQorICAgICAgICBpZiAoIXNjcm9sbGJhci5wYXJlbnQo
KSB8fCAhc2Nyb2xsYmFyLnBhcmVudCgpLT5wYXJlbnQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+
Y29udHJvbFNpemUoKSk7Ci0gICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIHNjcm9sbGJhci0+c2V0RnJhbWVSZWN0
KEludFJlY3QoMCwgc2Nyb2xsYmFyLT5wYXJlbnQoKS0+aGVpZ2h0KCkgLSB0aGlja25lc3MsIHNj
cm9sbGJhci0+d2lkdGgoKSwgdGhpY2tuZXNzKSk7CisgICAgICAgIGludCB0aGlja25lc3MgPSBz
Y3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOworICAgICAgICBpZiAo
c2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAg
ICAgIHNjcm9sbGJhci5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCBzY3JvbGxiYXIucGFyZW50KCkt
PmhlaWdodCgpIC0gdGhpY2tuZXNzLCBzY3JvbGxiYXIud2lkdGgoKSwgdGhpY2tuZXNzKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcm9sbGJhci0+c2V0RnJhbWVSZWN0KEludFJlY3Qo
c2Nyb2xsYmFyLT5wYXJlbnQoKS0+d2lkdGgoKSAtIHRoaWNrbmVzcywgMCwgdGhpY2tuZXNzLCBz
Y3JvbGxiYXItPmhlaWdodCgpKSk7CisgICAgICAgICAgICBzY3JvbGxiYXIuc2V0RnJhbWVSZWN0
KEludFJlY3Qoc2Nyb2xsYmFyLnBhcmVudCgpLT53aWR0aCgpIC0gdGhpY2tuZXNzLCAwLCB0aGlj
a25lc3MsIHNjcm9sbGJhci5oZWlnaHQoKSkpOwogICAgIH0KIH0KIAotSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVu
Y29uc3RyYWluZWRUcmFja1JlY3QpCiB7CiAgICAgSW50UmVjdCB0cmFja1JlY3QgPSBjb25zdHJh
aW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVj
dCk7CiAgICAgaW50IHRodW1iUG9zID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIpOwotICAgIGlm
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKICAgICAg
ICAgcmV0dXJuIEludFJlY3QodHJhY2tSZWN0LngoKSArIHRodW1iUG9zLCB0cmFja1JlY3QueSgp
ICsgKHRyYWNrUmVjdC5oZWlnaHQoKSAtIG1fdGh1bWJGYXRuZXNzKSAvIDIsIHRodW1iTGVuZ3Ro
KHNjcm9sbGJhciksIG1fdGh1bWJGYXRuZXNzKTsgCiAKICAgICAvLyBWZXJ0aWNhbFNjcm9sbGJh
cgpAQCAtMjg2LDg4ICsyODYsODggQEAgc3RhdGljIHZvaWQgYWRqdXN0UmVjdEFjY29yZGluZ1Rv
TWFyZ2luKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgR3RrU3RhdGVGbGFncwogICAgIHJlY3Qu
Y29udHJhY3QobWFyZ2luLmxlZnQgKyBtYXJnaW4ucmlnaHQsIG1hcmdpbi50b3AgKyBtYXJnaW4u
Ym90dG9tKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFj
a2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0
aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0
IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKICAgICAvLyB0cmFjayByZWN0Lgog
ICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QocmVjdCk7CiAgICAgaWYgKG1fdHJvdWdoVW5k
ZXJTdGVwcGVycykKLSAgICAgICAgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNjcm9sbGJh
ci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxiYXItPmhl
aWdodCgpKTsKKyAgICAgICAgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNjcm9sbGJhci54
KCksIHNjcm9sbGJhci55KCksIHNjcm9sbGJhci53aWR0aCgpLCBzY3JvbGxiYXIuaGVpZ2h0KCkp
OwogCiAgICAgR3RrU3R5bGVDb250ZXh0KiBzdHlsZUNvbnRleHQgPSBndGtTY3JvbGxiYXJTdHls
ZUNvbnRleHQoKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKHN0eWxlQ29udGV4dCk7CiAK
LSAgICBhcHBseVNjcm9sbGJhclN0eWxlQ29udGV4dENsYXNzZXMoc3R5bGVDb250ZXh0LCBzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkpOworICAgIGFwcGx5U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xh
c3NlcyhzdHlsZUNvbnRleHQsIHNjcm9sbGJhci5vcmllbnRhdGlvbigpKTsKICAgICBndGtfc3R5
bGVfY29udGV4dF9hZGRfY2xhc3Moc3R5bGVDb250ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfVFJPVUdI
KTsKIAogICAgIGFkanVzdFJlY3RBY2NvcmRpbmdUb01hcmdpbihzdHlsZUNvbnRleHQsIHN0YXRp
Y19jYXN0PEd0a1N0YXRlRmxhZ3M+KDApLCBmdWxsU2Nyb2xsYmFyUmVjdCk7Ci0gICAgZ3RrX3Jl
bmRlcl9iYWNrZ3JvdW5kKHN0eWxlQ29udGV4dCwgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJhclJlY3QueSgpLCBmdWxs
U2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5oZWlnaHQoKSk7Ci0gICAg
Z3RrX3JlbmRlcl9mcmFtZShzdHlsZUNvbnRleHQsIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCBmdWxsU2Nyb2xsYmFyUmVjdC54KCksIGZ1bGxTY3JvbGxiYXJSZWN0LnkoKSwgZnVs
bFNjcm9sbGJhclJlY3Qud2lkdGgoKSwgZnVsbFNjcm9sbGJhclJlY3QuaGVpZ2h0KCkpOworICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChzdHlsZUNvbnRleHQsIGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCktPmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJhclJlY3QueSgp
LCBmdWxsU2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5oZWlnaHQoKSk7
CisgICAgZ3RrX3JlbmRlcl9mcmFtZShzdHlsZUNvbnRleHQsIGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCktPmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJhclJlY3QueSgp
LCBmdWxsU2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5oZWlnaHQoKSk7
CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKHN0eWxlQ29udGV4dCk7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBHdGtTdHlsZUNvbnRleHQq
IHN0eWxlQ29udGV4dCA9IGd0a1Njcm9sbGJhclN0eWxlQ29udGV4dCgpOwogICAgIGd0a19zdHls
ZV9jb250ZXh0X3NhdmUoc3R5bGVDb250ZXh0KTsKIAotICAgIGFwcGx5U2Nyb2xsYmFyU3R5bGVD
b250ZXh0Q2xhc3NlcyhzdHlsZUNvbnRleHQsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSk7Cisg
ICAgYXBwbHlTY3JvbGxiYXJTdHlsZUNvbnRleHRDbGFzc2VzKHN0eWxlQ29udGV4dCwgc2Nyb2xs
YmFyLm9yaWVudGF0aW9uKCkpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhzdHls
ZUNvbnRleHQsICJzY3JvbGxlZC13aW5kb3ciKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKHN0eWxl
Q29udGV4dCwgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHNjcm9sbGJhci0+eCgp
LCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxiYXItPmhlaWdodCgp
KTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKHN0eWxlQ29udGV4dCwgY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndp
ZHRoKCksIHNjcm9sbGJhci5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0
b3JlKHN0eWxlQ29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIEd0a1N0eWxlQ29udGV4dCogc3R5bGVDb250ZXh0ID0g
Z3RrU2Nyb2xsYmFyU3R5bGVDb250ZXh0KCk7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShz
dHlsZUNvbnRleHQpOwogCi0gICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCk7CisgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24gPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKTsKICAgICBhcHBseVNjcm9sbGJhclN0eWxl
Q29udGV4dENsYXNzZXMoc3R5bGVDb250ZXh0LCBvcmllbnRhdGlvbik7CiAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfYWRkX2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1NMSURFUik7
CiAKICAgICBndWludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQo
KSA9PSBUaHVtYlBhcnQpCisgICAgaWYgKHNjcm9sbGJhci5wcmVzc2VkUGFydCgpID09IFRodW1i
UGFydCkKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwotICAgIGlmIChz
Y3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgIGlmIChzY3JvbGxiYXIu
aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCiAgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9G
TEFHX1BSRUxJR0hUOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShzdHlsZUNvbnRl
eHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CiAKICAgICBJbnRSZWN0IHRo
dW1iUmVjdChyZWN0KTsKICAgICBhZGp1c3RSZWN0QWNjb3JkaW5nVG9NYXJnaW4oc3R5bGVDb250
ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncyksIHRodW1iUmVjdCk7Ci0gICAg
Z3RrX3JlbmRlcl9zbGlkZXIoc3R5bGVDb250ZXh0LCBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgdGh1bWJSZWN0LngoKSwgdGh1bWJSZWN0LnkoKSwgdGh1bWJSZWN0LndpZHRoKCks
IHRodW1iUmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihzdHlsZUNvbnRleHQs
IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHRodW1iUmVjdC54KCksIHRodW1iUmVj
dC55KCksIHRodW1iUmVjdC53aWR0aCgpLCB0aHVtYlJlY3QuaGVpZ2h0KCksCiAgICAgICAgIG9y
aWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FM
IDogR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRf
cmVzdG9yZShzdHlsZUNvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKIHsKICAgICBHdGtTdHlsZUNvbnRleHQqIHN0eWxlQ29udGV4dCA9IGd0a1Njcm9sbGJh
clN0eWxlQ29udGV4dCgpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoc3R5bGVDb250ZXh0
KTsKIAotICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpOworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCk7CiAgICAgYXBwbHlTY3JvbGxiYXJTdHlsZUNvbnRleHRDbGFz
c2VzKHN0eWxlQ29udGV4dCwgb3JpZW50YXRpb24pOwogCiAgICAgZ3VpbnQgZmxhZ3MgPSAwOwot
ICAgIGlmICgoQmFja0J1dHRvblN0YXJ0UGFydCA9PSBwYXJ0ICYmIHNjcm9sbGJhci0+Y3VycmVu
dFBvcygpKQotICAgICAgICB8fCAoQmFja0J1dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxi
YXItPmN1cnJlbnRQb3MoKSkKLSAgICAgICAgfHwgKEZvcndhcmRCdXR0b25FbmRQYXJ0ID09IHBh
cnQgJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgIT0gc2Nyb2xsYmFyLT5tYXhpbXVtKCkpCi0g
ICAgICAgIHx8IChGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ID09IHBhcnQgJiYgc2Nyb2xsYmFyLT5j
dXJyZW50UG9zKCkgIT0gc2Nyb2xsYmFyLT5tYXhpbXVtKCkpKSB7Ci0gICAgICAgIGlmIChwYXJ0
ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKKyAgICBpZiAoKEJhY2tCdXR0b25TdGFydFBh
cnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3VycmVudFBvcygpKQorICAgICAgICB8fCAoQmFja0J1
dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3VycmVudFBvcygpKQorICAgICAgICB8
fCAoRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3VycmVudFBvcygp
ICE9IHNjcm9sbGJhci5tYXhpbXVtKCkpCisgICAgICAgIHx8IChGb3J3YXJkQnV0dG9uU3RhcnRQ
YXJ0ID09IHBhcnQgJiYgc2Nyb2xsYmFyLmN1cnJlbnRQb3MoKSAhPSBzY3JvbGxiYXIubWF4aW11
bSgpKSkgeworICAgICAgICBpZiAocGFydCA9PSBzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSkKICAg
ICAgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKLSAgICAgICAgaWYgKHBh
cnQgPT0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpKQorICAgICAgICBpZiAocGFydCA9PSBzY3Jv
bGxiYXIuaG92ZXJlZFBhcnQoKSkKICAgICAgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFH
X1BSRUxJR0hUOwogICAgIH0gZWxzZQogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19J
TlNFTlNJVElWRTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoc3R5bGVDb250ZXh0
LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCiAgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfYWRkX2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0JVVFRPTik7Ci0g
ICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKHN0eWxlQ29udGV4dCwgY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKHN0eWxlQ29udGV4dCwgY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoc3R5bGVDb250ZXh0LCBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShzdHlsZUNvbnRl
eHQsIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGdmbG9hdCBhcnJvd1NjYWxpbmc7
CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKHN0eWxlQ29udGV4dCwgImFycm93LXNj
YWxpbmciLCAmYXJyb3dTY2FsaW5nLCBudWxscHRyKTsKQEAgLTM4OSwxNCArMzg5LDE0IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllCiAgICAgZWxzZQogICAgICAgICBhbmdsZSA9IChwYXJ0ID09
IEZvcndhcmRCdXR0b25FbmRQYXJ0IHx8IHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkg
PyBHX1BJIC8gMiA6IDMgKiAoR19QSSAvIDIpOwogCi0gICAgZ3RrX3JlbmRlcl9hcnJvdyhzdHls
ZUNvbnRleHQsIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwgYXJyb3dQ
b2ludC54KCksIGFycm93UG9pbnQueSgpLCBhcnJvd1NpemUpOworICAgIGd0a19yZW5kZXJfYXJy
b3coc3R5bGVDb250ZXh0LCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwg
YXJyb3dQb2ludC54KCksIGFycm93UG9pbnQueSgpLCBhcnJvd1NpemUpOwogCiAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfcmVzdG9yZShzdHlsZUNvbnRleHQpOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lR3RrOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAg
ICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKGdyYXBo
aWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2VkIG9uIHRoZSBk
YW1hZ2VSZWN0CkBAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KgogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gKGV2
ZW50LnNoaWZ0S2V5KCkgJiYgZXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2ZW50
LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7CiB9CkBAIC00NzIsMTYgKzQ3MiwxNiBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6
ZSkKICAgICByZXR1cm4gbV90aHVtYkZhdG5lc3MgKyAobV90cm91Z2hCb3JkZXJXaWR0aCAqIDIp
OwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25T
aXplKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50U2l6ZShtX3RodW1i
RmF0bmVzcywgbV9zdGVwcGVyU2l6ZSk7CiAKICAgICAvLyBIb3Jpem9udGFsU2Nyb2xsYmFyCiAg
ICAgcmV0dXJuIEludFNpemUobV9zdGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1p
bnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCopCitpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXImKQogewogICAgIHJldHVybiBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA4ZDg2YTA5ZGU0Y2E3
MTJiOWZhMTE3OGViOTBlMTk1NGJiOTdjMGU4Li41ZTliNGM3ZjBjYTExNzhhN2U3MGRmNTE3NDgw
Y2E2MzA0ODU3MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsuaApAQCAtMzYsMzMgKzM2LDMzIEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lR3Rr
IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TY3JvbGxiYXJUaGVtZUd0aygpOwogCi0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhciYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIo
U2Nyb2xsYmFyJik7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciYsIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wpOwogCiAjaWZuZGVmIEdUS19BUElfVkVS
U0lPTl8yCiAgICAgU2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIEludFJlY3QgdGh1bWJSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNr
UmVjdCk7Ci0gICAgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0g
ICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7CisgICAgYm9vbCBwYWludChTY3JvbGxi
YXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2
b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXIm
KTsKKyAgICB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xs
YmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKLSAgICB2aXJ0dWFsIEludFNpemUg
YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhciYpOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXImKTsKIAogICAgIC8vIFRPRE86IFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBH
VEsrIHZhbHVlcy4gQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgcHVsbCB0aGVzZSBmcm9tIHRoZSB0
aGVtZSBpdHNlbGYuCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRl
bGF5KCkgeyByZXR1cm4gMC4yMDsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1l
ckRlbGF5KCkgeyByZXR1cm4gMC4wMjsgfQogICAgIHZvaWQgdGhlbWVDaGFuZ2VkKCk7CiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKLSAgICB2b2lkIHJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdm9pZCByZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXImKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJik7
CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaAppbmRleCA1MTky
MTgyZjg4YzAxYzdmNTFhZjg5OWM0OGJjMzg5NWQ2ODk2Yzc0Li4xMmQzNDVmNjA3MTUzMDA1YjJm
N2RlM2UyM2FlZDZkMmRjMzNjNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvU2Nyb2xsYmFyVGhlbWVJT1MuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgU2Ny
b2xsYmFyVGhlbWVJT1MoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUlPUygpOwogCi0g
ICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHBhaW50KFNjcm9sbGJhciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgb3ZlcnJpZGU7CiAgICAg
CkBAIC00NiwyMCArNDYsMjAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJCdXR0
b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNj
cm9sbGJhciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhh
c0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IGZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxi
YXImLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAg
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jikgb3ZlcnJpZGU7CiAgICAgCiBwdWJsaWM6CiAgICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5n
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlP
Uy5tbQppbmRleCBhMzc3NDUyNGQxYzgyYmJiZDk1ZmYzNzMzOGY0OTcyNDBhOWMwMGZlLi5lZGMx
YTU5NmFiOWRkZjllNmU1YjYzMmU4ZWZlOTAxOGYxZDcxYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tCkBAIC00MSwxMSArNDEsMTEg
QEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCiAgICAgcmV0
dXJuICZ0aGVtZS5nZXQoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUlPUzo6cmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQordm9pZCBTY3JvbGxiYXJUaGVtZUlPUzo6
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikKIHsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUlPUzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopCit2b2lkIFNj
cm9sbGJhclRoZW1lSU9TOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYpCiB7CiB9CiAK
QEAgLTgxLDQyICs4MSw0MiBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRo
ZW1lSU9TOjpidXR0b25zUGxhY2VtZW50KCkgY29uc3QKICAgICByZXR1cm4gU2Nyb2xsYmFyQnV0
dG9uc05vbmU7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVJT1M6Omhhc0J1dHRvbnMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKQorYm9vbCBTY3JvbGxiYXJUaGVtZUlPUzo6aGFzQnV0dG9ucyhTY3Jv
bGxiYXImKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUlP
Uzo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQorYm9vbCBTY3JvbGxiYXJUaGVtZUlP
Uzo6aGFzVGh1bWIoU2Nyb2xsYmFyJikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVJT1M6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8pCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lSU9TOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8q
cGFpbnRpbmcqLykKIHsKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1JbnRSZWN0IFNjcm9s
bGJhclRoZW1lSU9TOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNj
cm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUlP
Uzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBh
aW50aW5nKi8pCiB7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUlPUzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCAvKnBhaW50
aW5nKi8pCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lSU9TOjp0cmFja1JlY3QoU2Nyb2xsYmFyJiwg
Ym9vbCAvKnBhaW50aW5nKi8pCiB7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotaW50IFNj
cm9sbGJhclRoZW1lSU9TOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KQoraW50IFNjcm9sbGJhclRoZW1lSU9TOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJikK
IHsKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUlPUzo6c2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpCitib29sIFNjcm9sbGJhclRoZW1lSU9TOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
ciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFNjcm9sbGJhclRoZW1lSU9TOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVjdCovKQorYm9vbCBTY3Jv
bGxiYXJUaGVtZUlPUzo6cGFpbnQoU2Nyb2xsYmFyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggMDJk
MDhiZjc1YjAzYzU2OWZkMzVmYTQwYTgwODc2YjkwNTE2NTgzYS4uNzQzMjJkNmU2MDY2NDRjN2Rm
ZDdmZTdjYzU0NTI2ZTVjMTM3ZDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgU2Nyb2xs
YmFyVGhlbWVNYWMqIG1hY1Njcm9sbGJhclRoZW1lKCkKICAgICByZXR1cm4gIXNjcm9sbGJhclRo
ZW1lLT5pc01vY2tUaGVtZSgpID8gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPihzY3Jv
bGxiYXJUaGVtZSkgOiAwOwogfQogCi1zdGF0aWMgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQ
YWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIFNjcm9sbGJh
clBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJh
cikKIHsKICAgICBpZiAoU2Nyb2xsYmFyVGhlbWVNYWMqIHNjcm9sbGJhclRoZW1lID0gbWFjU2Ny
b2xsYmFyVGhlbWUoKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhclRoZW1lLT5wYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIE5TU2l6ZSBh
YnMoTlNTaXplIHNpemUpCiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBOU1pl
cm9Qb2ludDsKIAotICAgIEFTU0VSVChzY3JvbGxlckltcCA9PSBzY3JvbGxiYXJQYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcikpOworICAgIEFTU0VSVChzY3JvbGxlckltcCA9PSBzY3JvbGxi
YXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpKTsKIAogICAgIHJldHVybiBzY3JvbGxi
YXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoV2ViQ29yZTo6SW50UG9pbnQocG9pbnRJbkNv
bnRlbnRBcmVhKSk7CiB9CkBAIC0zMjMsNyArMzIzLDcgQEAgZW51bSBGZWF0dXJlVG9BbmltYXRl
IHsKIHsKICAgICBBU1NFUlQoX3Njcm9sbGJhcik7CiAKLSAgICBfc2Nyb2xsYmFyUGFpbnRlciA9
IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcik7CisgICAgX3Njcm9sbGJh
clBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpfc2Nyb2xsYmFyKTsKIAog
ICAgIFtzdXBlciBzdGFydEFuaW1hdGlvbl07CiB9CkBAIC00NTIsNyArNDUyLDcgQEAgZW51bSBG
ZWF0dXJlVG9BbmltYXRlIHsKICAgICBpZiAoIV9zY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBO
U1plcm9Qb2ludDsKIAotICAgIEFTU0VSVF9VTlVTRUQoc2Nyb2xsZXJJbXAsIHNjcm9sbGVySW1w
ID09IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcikpOworICAgIEFTU0VS
VF9VTlVTRUQoc2Nyb2xsZXJJbXAsIHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBhaW50ZXJGb3JT
Y3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsKIAogICAgIHJldHVybiBfc2Nyb2xsYmFyLT5jb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3KF9zY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkubGFzdEtub3du
TW91c2VQb3NpdGlvbigpKTsKIH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBlbnVtIEZlYXR1cmVUb0Fu
aW1hdGUgewogICAgIH0KIAogICAgIGlmIChTY3JvbGxiYXJUaGVtZU1hYyogbWFjVGhlbWUgPSBt
YWNTY3JvbGxiYXJUaGVtZSgpKQotICAgICAgICBtYWNUaGVtZS0+c2V0UGFpbnRDaGFyYWN0ZXJp
c3RpY3NGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcik7CisgICAgICAgIG1hY1RoZW1lLT5zZXRQYWlu
dENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcigqX3Njcm9sbGJhcik7CiAKICAgICBpZiAocGFy
dCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBW
ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBpZiAobmV3QWxwaGEgPT0gMSkgewpAQCAtNTE5
LDcgKzUxOSw3IEBAIGVudW0gRmVhdHVyZVRvQW5pbWF0ZSB7CiAgICAgaWYgKCFfc2Nyb2xsYmFy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoc2Nyb2xsZXJJbXAgPT0gc2Nyb2xsYmFy
UGFpbnRlckZvclNjcm9sbGJhcihfc2Nyb2xsYmFyKSk7CisgICAgQVNTRVJUKHNjcm9sbGVySW1w
ID09IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsKIAogICAgIFNj
cm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xs
ZXJJbXA7CiAgICAgaWYgKCFbc2VsZiBzY3JvbGxBbmltYXRvcl0tPnNjcm9sbGJhcnNDYW5CZUFj
dGl2ZSgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgZW51bSBGZWF0dXJlVG9BbmltYXRlIHsKICAg
ICBpZiAoIV9zY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChzY3JvbGxl
ckltcCA9PSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKF9zY3JvbGxiYXIpKTsKKyAgICBB
U1NFUlQoc2Nyb2xsZXJJbXAgPT0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcigqX3Njcm9s
bGJhcikpOwogCiAgICAgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxlclBhaW50ZXIgPSAoU2Nyb2xs
YmFyUGFpbnRlcilzY3JvbGxlckltcDsKICAgICBbc2VsZiBzZXRVcEFscGhhQW5pbWF0aW9uOl90
cmFja0FscGhhQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpX
ZWJDb3JlOjpCYWNrVHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxwaGEgZHVyYXRp
b246ZHVyYXRpb25dOwpAQCAtNTU2LDcgKzU1Niw3IEBAIGVudW0gRmVhdHVyZVRvQW5pbWF0ZSB7
CiAgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBhaW50ZXJGb3JT
Y3JvbGxiYXIoX3Njcm9sbGJhcikpOworICAgIEFTU0VSVChzY3JvbGxlckltcCA9PSBzY3JvbGxi
YXJQYWludGVyRm9yU2Nyb2xsYmFyKCpfc2Nyb2xsYmFyKSk7CiAKICAgICBTY3JvbGxiYXJQYWlu
dGVyIHNjcm9sbGJhclBhaW50ZXIgPSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlckltcDsKIApA
QCAtNTkwLDcgKzU5MCw3IEBAIGVudW0gRmVhdHVyZVRvQW5pbWF0ZSB7CiAgICAgaWYgKCFzdXBw
b3J0c0V4cGFuc2lvblRyYW5zaXRpb25Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQoc2Nyb2xsZXJJbXAgPT0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihfc2Ny
b2xsYmFyKSk7CisgICAgQVNTRVJUKHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBhaW50ZXJGb3JT
Y3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsKIAogICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFy
UGFpbnRlciA9IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVySW1wOwogCkBAIC04MzQsNyArODM0
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyKSBjb25zdAogCiAgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0
aW9uUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTY3JvbGxiYXJQYWludGVy
IHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcikpCisgICAg
aWYgKFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxi
YXIoKnNjcm9sbGJhcikpCiAgICAgICAgIFtwYWludGVyIG1vdXNlRW50ZXJlZFNjcm9sbGVyXTsK
IH0KIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRXhp
dGVkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAogCiAgICAgaWYgKCFzdXBw
b3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlm
IChTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFy
KHNjcm9sbGJhcikpCisgICAgaWYgKFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJh
clBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcikpCiAgICAgICAgIFtwYWludGVyIG1vdXNl
RXhpdGVkU2Nyb2xsZXJdOwogfQogCkBAIC05NDksNyArOTQ5LDcgQEAgYm9vbCBTY3JvbGxBbmlt
YXRvck1hYzo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIAogdm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7
Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9s
bGJhcihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJh
clBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWludGVyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIAogdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQogewotICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBh
aW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50
ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpOwogICAgIGlmICgh
cGFpbnRlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRl
ciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBTY3JvbGxi
YXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxi
YXIpOwogICAgIGlmICghcGFpbnRlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05OTksNyArOTk5
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6d2lsbFJlbW92
ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgU2Nyb2xs
YmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxi
YXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JT
Y3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWludGVyKQogICAgICAgICByZXR1cm47
CiAKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OndpbGxSZW1v
dmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjppbnZhbGlkYXRlU2Nyb2xsYmFyUGFydExheWVycyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsK
LSAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xs
YmFyKHNjcm9sbGJhcik7CisgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFy
UGFpbnRlckZvclNjcm9sbGJhcigqc2Nyb2xsYmFyKTsKICAgICBbcGFpbnRlciBzZXROZWVkc0Rp
c3BsYXk6WUVTXTsKIH0KICNlbHNlCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yTWFjOjp2ZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCkKICAgICBpZiAoIXNj
cm9sbGJhcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVy
ID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJh
clBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJh
cik7CiAgICAgaWYgKCFwYWludGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNDQsNyArMTA0
NCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Omhvcml6b250YWxTY3JvbGxiYXJMYXllckRp
ZENoYW5nZSgpCiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNj
cm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsKKyAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVy
Rm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpOwogICAgIGlmICghcGFpbnRlcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91
bGRTY3JvbGxiYXJQYXJ0aWNpcGF0ZUluSGl0VGVzdGluZyhTY3JvbGxiYXIqIHNjcm9sbAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE92ZXJsYXkgc2Nyb2xsYmFycyBzaG91bGQgcGFy
dGljaXBhdGUgaW4gaGl0IHRlc3Rpbmcgd2hlbmV2ZXIgdGhleSBhcmUgYXQgYWxsIHZpc2libGUu
Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9s
bGJhcihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJh
clBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWludGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFtwYWludGVyIGtub2JBbHBoYV0gPiAwOwpA
QCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRlU2Nyb2xs
ZXJTdHlsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOk5PIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6b2xkVmVydGljYWxQ
YWludGVyXTsKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIgc2V0VmVydGlj
YWxTY3JvbGxlckltcDpuZXdWZXJ0aWNhbFBhaW50ZXJdOwotICAgICAgICBtYWNUaGVtZS0+c2V0
TmV3UGFpbnRlckZvclNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhciwgbmV3VmVydGljYWxQYWlu
dGVyKTsKKyAgICAgICAgbWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoKnZlcnRp
Y2FsU2Nyb2xsYmFyLCBuZXdWZXJ0aWNhbFBhaW50ZXIpOwogCiAgICAgICAgIC8vIFRoZSBkaWZm
ZXJlbnQgc2Nyb2xsYmFyIHN0eWxlcyBoYXZlIGRpZmZlcmVudCB0aGlja25lc3Nlcywgc28gd2Ug
bXVzdCByZS1zZXQgdGhlIAogICAgICAgICAvLyBmcmFtZVJlY3QgdG8gdGhlIG5ldyB0aGlja25l
c3MsIGFuZCB0aGUgcmUtbGF5b3V0IGJlbG93IHdpbGwgZW5zdXJlIHRoZSBwb3NpdGlvbgpAQCAt
MTMzOSw3ICsxMzM5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRlU2Nyb2xsZXJT
dHlsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOllFUyAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZ1Njcm9sbGVySW1wOm9sZEhvcml6b250YWxQ
YWludGVyXTsKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIgc2V0SG9yaXpv
bnRhbFNjcm9sbGVySW1wOm5ld0hvcml6b250YWxQYWludGVyXTsKLSAgICAgICAgbWFjVGhlbWUt
PnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhciwgbmV3SG9yaXpv
bnRhbFBhaW50ZXIpOworICAgICAgICBtYWNUaGVtZS0+c2V0TmV3UGFpbnRlckZvclNjcm9sbGJh
cigqaG9yaXpvbnRhbFNjcm9sbGJhciwgbmV3SG9yaXpvbnRhbFBhaW50ZXIpOwogCiAgICAgICAg
IC8vIFRoZSBkaWZmZXJlbnQgc2Nyb2xsYmFyIHN0eWxlcyBoYXZlIGRpZmZlcmVudCB0aGlja25l
c3Nlcywgc28gd2UgbXVzdCByZS1zZXQgdGhlIAogICAgICAgICAvLyBmcmFtZVJlY3QgdG8gdGhl
IG5ldyB0aGlja25lc3MsIGFuZCB0aGUgcmUtbGF5b3V0IGJlbG93IHdpbGwgZW5zdXJlIHRoZSBw
b3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJh
clRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMuaAppbmRleCBjM2MzZmU5NTc5MGQ4NTRjYzBlYWI2ZWVmMWVjYjg4MGMyMTU4OGFmLi5kY2Q4
NjE5ZWJjNDA1Y2U3MWUzNzZlYmY2YmI0ODFjMTEzY2FmYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzcsMjkgKzM3LDI5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXImKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRo
aWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIG92ZXJyaWRl
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3Jv
bGxiYXJzKCkgY29uc3QgIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1c2VzT3ZlcmxheVNj
cm9sbGJhcnNDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopICBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciYpICBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1Bs
YWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYWludGVyKTsKLSAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXJGb3JT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHNldE5ld1BhaW50ZXJG
b3JTY3JvbGxiYXIoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFpbnRlcik7CisgICAgU2Nyb2xsYmFy
UGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYpOwogCi0gICAgdm9pZCBzZXRQ
YWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwor
ICAgIHZvaWQgc2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyJik7
CiAKICAgICBzdGF0aWMgYm9vbCBpc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoKTsKICAgICBz
dGF0aWMgdm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7CkBAIC03Mywx
OSArNzMsMTkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW50UmVj
dCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBw
YWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNj
cm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGludCBtYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkgb3ZlcnJpZGUgeyByZXR1cm4gNDA7IH0KIAot
ICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIm
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFn
RG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKSBvdmVycmlkZTsKICAgICBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Ny
b2xsYmFyUGFydCk7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggNjZkNjJmNDMz
MzY2NmFjYWE3OTVjNWJmNGU3MjkxOTRkMjY3MWU5Zi4uMjY5N2UxYmJjNTI2Y2NiNDczZDk0Mjdk
NzIyNjg4OGM3OTkwYmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8U2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4+IFNjcm9sbGJhclBhaW50
ZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U2Nyb2xsYmFyKiwgUmV0YWluUHRyPFNjcm9sbGJhclBh
aW50ZXI+PiBTY3JvbGxiYXJQYWludGVyTWFwOwogCiBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1h
cCogc2Nyb2xsYmFyTWFwKCkKIHsKQEAgLTE1NCwzMyArMTU0LDMzIEBAIHN0YXRpYyBOU0NvbnRy
b2xTaXplIHNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvCiAgICAgcmV0dXJuIE5TUmVndWxhckNvbnRyb2xTaXplOwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXI7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQ
YWludGVyID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcCIpIHNjcm9sbGVySW1w
V2l0aFN0eWxlOnJlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSgpIGNvbnRyb2xTaXplOnNjcm9sbGJh
ckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSkgaG9y
aXpvbnRhbDppc0hvcml6b250YWwgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6bmlsXTsKLSAgICBzY3Jv
bGxiYXJNYXAoKS0+YWRkKHNjcm9sbGJhciwgc2Nyb2xsYmFyUGFpbnRlcik7CisgICAgYm9vbCBp
c0hvcml6b250YWwgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyOworICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciA9IFtOU0NsYXNzRnJv
bVN0cmluZyhAIk5TU2Nyb2xsZXJJbXAiKSBzY3JvbGxlckltcFdpdGhTdHlsZTpyZWNvbW1lbmRl
ZFNjcm9sbGVyU3R5bGUoKSBjb250cm9sU2l6ZTpzY3JvbGxiYXJDb250cm9sU2l6ZVRvTlNDb250
cm9sU2l6ZShzY3JvbGxiYXIuY29udHJvbFNpemUoKSkgaG9yaXpvbnRhbDppc0hvcml6b250YWwg
cmVwbGFjaW5nU2Nyb2xsZXJJbXA6bmlsXTsKKyAgICBzY3JvbGxiYXJNYXAoKS0+YWRkKCZzY3Jv
bGxiYXIsIHNjcm9sbGJhclBhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShzY3JvbGxi
YXIpOwogICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHNjcm9sbGJhck1hcCgpLT5yZW1v
dmUoc2Nyb2xsYmFyKTsKKyAgICBzY3JvbGxiYXJNYXAoKS0+cmVtb3ZlKCZzY3JvbGxiYXIpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRl
cikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikKIHsKLSAgICBz
Y3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7CisgICAgc2Nyb2xsYmFy
TWFwKCktPnNldCgmc2Nyb2xsYmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3Rh
dGUoc2Nyb2xsYmFyKTsKICAgICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFy
KTsKIH0KIAotU2Nyb2xsYmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQorU2Nyb2xsYmFyUGFpbnRl
ciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9s
bGJhcikKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgp
OworICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3JvbGxiYXIpLmdldCgpOwogfQog
CiBzdGF0aWMgYm9vbCBnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllcjsKQEAgLTI0MCwxMSAr
MjQwLDExIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFyc0No
YW5nZWQoKQogICAgIGdVc2VzT3ZlcmxheVNjcm9sbGJhcnMgPSByZWNvbW1lbmRlZFNjcm9sbGVy
U3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5bGVPdmVybGF5OwogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJs
YXlTdHlsZShTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gcGFpbnRlckZvclNjcm9s
bGJhcihzY3JvbGxiYXIpOwotICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxiYXJPdmVybGF5
U3R5bGUoKSkgeworICAgIHN3aXRjaCAoc2Nyb2xsYmFyLnNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
KSB7CiAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OgogICAgICAgICBbcGFp
bnRlciBzZXRLbm9iU3R5bGU6TlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwogICAgICAgICBi
cmVhazsKQEAgLTI3MywyNSArMjczLDI1IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Ny
b2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBnQnV0
dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpo
YXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBzY3JvbGxiYXIt
PmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUK
LSAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIKLSAgICAgICAgICAgICA/IHNjcm9sbGJhci0+d2lkdGgoKQotICAgICAgICAgICAg
IDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNp
emUoKV0pOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1l
bnQoKSAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZQorICAgICAgICAgICAgICYmIChzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCisgICAgICAgICAgICAgPyBzY3Jv
bGxiYXIud2lkdGgoKQorICAgICAgICAgICAgIDogc2Nyb2xsYmFyLmhlaWdodCgpKSA+PSAyICog
KGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJ
bnNldFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0pOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
TWFjOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQorYm9vbCBTY3Jv
bGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7CiAgICAgaW50
IG1pbkxlbmd0aEZvclRodW1iOwogCi0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Ny
b2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOworICAgIFNjcm9sbGJhclBhaW50ZXIg
cGFpbnRlciA9IHNjcm9sbGJhck1hcCgpLT5nZXQoJnNjcm9sbGJhcikuZ2V0KCk7CiAgICAgbWlu
TGVuZ3RoRm9yVGh1bWIgPSBbcGFpbnRlciBrbm9iTWluTGVuZ3RoXSArIFtwYWludGVyIHRyYWNr
T3ZlcmxhcEVuZEluc2V0XSArIFtwYWludGVyIGtub2JPdmVybGFwRW5kSW5zZXRdCiAgICAgICAg
ICsgMiAqIChbcGFpbnRlciB0cmFja0VuZEluc2V0XSArIFtwYWludGVyIGtub2JFbmRJbnNldF0p
OwogCi0gICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAotICAgICAgICAgICAgIHNjcm9sbGJh
ci0+d2lkdGgoKSA6IAotICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IG1pbkxl
bmd0aEZvclRodW1iOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8KKyAgICAgICAgICAgICBz
Y3JvbGxiYXIud2lkdGgoKSA6CisgICAgICAgICAgICAgc2Nyb2xsYmFyLmhlaWdodCgpKSA+PSBt
aW5MZW5ndGhGb3JUaHVtYjsKIH0KIAogc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJlY3Qo
Y29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHN0YXJ0KQpAQCAtMzEy
LDcgKzMxMiw3IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJl
Y3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVj
dDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50
aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJ
bnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTMyMiwzMSArMzIyLDMxIEBAIEludFJlY3QgU2Nyb2xs
YmFyVGhlbWVNYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQ
bGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9uZSB8fCBidXR0b25zUGxhY2VtZW50KCkg
PT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0IHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBT
Y3JvbGxiYXJCdXR0b25zU2luZ2xlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
Ci0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCkpOworICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xs
YmFyLmNvbnRyb2xTaXplKCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0ID09IEJhY2tC
dXR0b25TdGFydFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25z
RG91YmxlU3RhcnQgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3Vi
bGVCb3RoKTsKICAgICBpZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICAgICAgcmVzdWx0
ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIGNPdXRlckJ1dHRvbkxl
bmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgKHBhaW50aW5nID8gY091dGVyQnV0dG9u
T3ZlcmxhcCA6IDApLCB0aGlja25lc3MpOworICAgICAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIHJlc3VsdCA9IEludFJl
Y3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9s
bGJhci5jb250cm9sU2l6ZSgpXSArIChwYWludGluZyA/IGNPdXRlckJ1dHRvbk92ZXJsYXAgOiAw
KSwgdGhpY2tuZXNzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVj
dChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHRoaWNrbmVzcywgY091dGVyQnV0dG9u
TGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAocGFpbnRpbmcgPyBjT3V0ZXJCdXR0
b25PdmVybGFwIDogMCkpOworICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIu
eCgpLCBzY3JvbGxiYXIueSgpLCB0aGlja25lc3MsIGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxi
YXIuY29udHJvbFNpemUoKV0gKyAocGFpbnRpbmcgPyBjT3V0ZXJCdXR0b25PdmVybGFwIDogMCkp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICAvLyBPdXIgcmVwYWlu
dCByZWN0IGlzIHNsaWdodGx5IGxhcmdlciwgc2luY2Ugd2UgYXJlIGEgYnV0dG9uIHRoYXQgaXMg
YWRqYWNlbnQgdG8gdGhlIHRyYWNrLgotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEJh
Y2tCdXR0b25TdGFydFBhcnQgPyBzY3JvbGxiYXItPngoKSA6IHNjcm9sbGJhci0+eCgpICsgc2Ny
b2xsYmFyLT53aWR0aCgpIC0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNp
emUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07Ci0gICAgICAg
IHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci0+eSgpLCBjQnV0dG9uTGVuZ3RoW3Nj
cm9sbGJhci0+Y29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CisgICAgaWYgKHNjcm9sbGJhci5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaW50IHN0YXJ0
ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLngoKSA6IHNjcm9sbGJh
ci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAtIGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXIu
Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXTsK
KyAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLnkoKSwgY0J1dHRvbkxl
bmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xs
YmFyLT55KCkgOiBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBjT3V0ZXJC
dXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKLSAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxi
YXItPngoKSwgc3RhcnQsIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQ
YXJ0ID8gc2Nyb2xsYmFyLnkoKSA6IHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkg
LSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkxl
bmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV07CisgICAgICAgIHJlc3VsdCA9IEludFJlY3Qo
c2Nyb2xsYmFyLngoKSwgc3RhcnQsIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIu
Y29udHJvbFNpemUoKV0pOwogICAgIH0KICAgICAKICAgICBpZiAocGFpbnRpbmcpCi0gICAgICAg
IHJldHVybiBidXR0b25SZXBhaW50UmVjdChyZXN1bHQsIHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSwgc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQp
OworICAgICAgICByZXR1cm4gYnV0dG9uUmVwYWludFJlY3QocmVzdWx0LCBzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSwgc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCksIHBhcnQgPT0gQmFja0J1dHRvblN0
YXJ0UGFydCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAg
LTM1Niw0NyArMzU2LDQ3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjCiAgICAgaWYgKHBhcnQg
PT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9s
bGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25z
RG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zU2luZ2xl
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCi0gICAgaW50IHRoaWNrbmVzcyA9
IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgIGludCBv
dXRlckJ1dHRvbkxlbmd0aCA9IGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldOwotICAgIGludCBidXR0b25MZW5ndGggPSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV07CisgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhz
Y3JvbGxiYXIuY29udHJvbFNpemUoKSk7CisgICAgaW50IG91dGVyQnV0dG9uTGVuZ3RoID0gY091
dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXTsKKyAgICBpbnQgYnV0dG9u
TGVuZ3RoID0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV07CiAgICAgCiAg
ICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1
dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQ
bGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVy
QnV0dG9uKSB7Ci0gICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcikgewotICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIt
PngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIG91dGVyQnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXIt
PnkoKSwgb3V0ZXJCdXR0b25MZW5ndGgsIHRoaWNrbmVzcyk7CisgICAgICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBy
ZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAtIG91dGVy
QnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXIueSgpLCBvdXRlckJ1dHRvbkxlbmd0aCwgdGhpY2tuZXNz
KTsKICAgICAgICAgICAgIGlmIChwYWludGluZykKICAgICAgICAgICAgICAgICByZXN1bHQuaW5m
bGF0ZVgoY091dGVyQnV0dG9uT3ZlcmxhcCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHNjcm9s
bGJhci0+aGVpZ2h0KCkgLSBvdXRlckJ1dHRvbkxlbmd0aCwgdGhpY2tuZXNzLCBvdXRlckJ1dHRv
bkxlbmd0aCk7CisgICAgICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNj
cm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkgLSBvdXRlckJ1dHRvbkxlbmd0aCwgdGhp
Y2tuZXNzLCBvdXRlckJ1dHRvbkxlbmd0aCk7CiAgICAgICAgICAgICBpZiAocGFpbnRpbmcpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmluZmxhdGVZKGNPdXRlckJ1dHRvbk92ZXJsYXApOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBp
bnQgc3RhcnQgPSBwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ID8gc2Nyb2xsYmFyLT54KCkg
KyBzY3JvbGxiYXItPndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXItPngoKSArIG91
dGVyQnV0dG9uTGVuZ3RoOwotICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHN0YXJ0LCBzY3JvbGxi
YXItPnkoKSwgYnV0dG9uTGVuZ3RoLCB0aGlja25lc3MpOworICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIGludCBzdGFydCA9
IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFy
LndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIueCgpICsgb3V0ZXJCdXR0b25MZW5n
dGg7CisgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55KCksIGJ1dHRv
bkxlbmd0aCwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnQgc3RhcnQgPSBw
YXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ID8gc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXIt
PmhlaWdodCgpIC0gYnV0dG9uTGVuZ3RoIDogc2Nyb2xsYmFyLT55KCkgKyBvdXRlckJ1dHRvbkxl
bmd0aDsKLSAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc3RhcnQsIHRo
aWNrbmVzcywgYnV0dG9uTGVuZ3RoKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBGb3J3
YXJkQnV0dG9uRW5kUGFydCA/IHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkgLSBi
dXR0b25MZW5ndGggOiBzY3JvbGxiYXIueSgpICsgb3V0ZXJCdXR0b25MZW5ndGg7CisgICAgICAg
IHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc3RhcnQsIHRoaWNrbmVzcywgYnV0dG9u
TGVuZ3RoKTsKICAgICB9CiAgICAgaWYgKHBhaW50aW5nKQotICAgICAgICByZXR1cm4gYnV0dG9u
UmVwYWludFJlY3QocmVzdWx0LCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCksIHNjcm9sbGJhci0+
Y29udHJvbFNpemUoKSwgcGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsKKyAgICAgICAg
cmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCks
IHNjcm9sbGJhci5jb250cm9sU2l6ZSgpLCBwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQor
SW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFy
LCBib29sIHBhaW50aW5nKQogewogICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3Jv
bGxiYXIpKQotICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGJhci5mcmFtZVJlY3QoKTsKICAgICAKICAgICBJbnRSZWN0IHJlc3VsdDsK
LSAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJv
bFNpemUoKSk7CisgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxi
YXIuY29udHJvbFNpemUoKSk7CiAgICAgaW50IHN0YXJ0V2lkdGggPSAwOwogICAgIGludCBlbmRX
aWR0aCA9IDA7Ci0gICAgaW50IG91dGVyQnV0dG9uTGVuZ3RoID0gY091dGVyQnV0dG9uTGVuZ3Ro
W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07Ci0gICAgaW50IGJ1dHRvbkxlbmd0aCA9IGNCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKKyAgICBpbnQgb3V0ZXJCdXR0b25M
ZW5ndGggPSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldOworICAg
IGludCBidXR0b25MZW5ndGggPSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgp
XTsKICAgICBpbnQgZG91YmxlQnV0dG9uTGVuZ3RoID0gb3V0ZXJCdXR0b25MZW5ndGggKyBidXR0
b25MZW5ndGg7CiAgICAgc3dpdGNoIChidXR0b25zUGxhY2VtZW50KCkpIHsKICAgICAgICAgY2Fz
ZSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlOgpAQCAtNDE4LDE5ICs0MTgsMTkgQEAgSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGJvb2wgcGFpbnQKICAgICB9CiAgICAgCiAgICAgaW50IHRvdGFsV2lkdGggPSBzdGFydFdp
ZHRoICsgZW5kV2lkdGg7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSAr
IHN0YXJ0V2lkdGgsIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxiYXItPndpZHRoKCkgLSB0b3RhbFdp
ZHRoLCB0aGlja25lc3MpOwotICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3Jv
bGxiYXItPnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAt
IHRvdGFsV2lkdGgpOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKQorICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc3Rh
cnRXaWR0aCwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndpZHRoKCkgLSB0b3RhbFdpZHRoLCB0
aGlja25lc3MpOworICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55
KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWlnaHQoKSAtIHRvdGFsV2lk
dGgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxi
YXIpIGtub2JNaW5MZW5ndGhdOworICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdldCgmc2Ny
b2xsYmFyKSBrbm9iTWluTGVuZ3RoXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgU2Nyb2xs
YmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBQbGF0Zm9yCiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxi
YXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyJiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gZXZlbnQuYWx0
S2V5KCk7CiB9CkBAIC00NjIsMjUgKzQ2MiwyNSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNj
cm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5h
YmxlZFN0YXRlKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLSAgICBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpIHNldEVuYWJs
ZWQ6c2Nyb2xsYmFyLT5lbmFibGVkKCldOworICAgIFtzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3Jv
bGxiYXIpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLmVuYWJsZWQoKV07CiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0UGFpbnRDaGFy
YWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFBhaW50Q2hhcmFjdGVyaXN0aWNzRm9yU2Nyb2xs
YmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBwYWludGVyRm9yU2Nyb2xsYmFy
KHNjcm9sbGJhcik7CiAKICAgICBmbG9hdCB2YWx1ZTsKICAgICBmbG9hdCBvdmVyaGFuZzsKLSAg
ICBTY3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3Zlcmhhbmcoc2Nyb2xs
YmFyLT5jdXJyZW50UG9zKCksIHNjcm9sbGJhci0+dG90YWxTaXplKCksIHNjcm9sbGJhci0+dmlz
aWJsZVNpemUoKSwgdmFsdWUsIG92ZXJoYW5nKTsKLSAgICBmbG9hdCBwcm9wb3J0aW9uID0gc2Ny
b2xsYmFyLT50b3RhbFNpemUoKSA+IDAgPyAoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc2Nyb2xsYmFy
LT52aXNpYmxlU2l6ZSgpKSAtIG92ZXJoYW5nKSAvIHNjcm9sbGJhci0+dG90YWxTaXplKCkgOiAx
OworICAgIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhz
Y3JvbGxiYXIuY3VycmVudFBvcygpLCBzY3JvbGxiYXIudG90YWxTaXplKCksIHNjcm9sbGJhci52
aXNpYmxlU2l6ZSgpLCB2YWx1ZSwgb3ZlcmhhbmcpOworICAgIGZsb2F0IHByb3BvcnRpb24gPSBz
Y3JvbGxiYXIudG90YWxTaXplKCkgPiAwID8gKHN0YXRpY19jYXN0PENHRmxvYXQ+KHNjcm9sbGJh
ci52aXNpYmxlU2l6ZSgpKSAtIG92ZXJoYW5nKSAvIHNjcm9sbGJhci50b3RhbFNpemUoKSA6IDE7
CiAKLSAgICBbcGFpbnRlciBzZXRFbmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgpXTsKLSAgICBb
cGFpbnRlciBzZXRCb3VuZHNTaXplOnNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpXTsKKyAg
ICBbcGFpbnRlciBzZXRFbmFibGVkOnNjcm9sbGJhci5lbmFibGVkKCldOworICAgIFtwYWludGVy
IHNldEJvdW5kc1NpemU6c2Nyb2xsYmFyLmZyYW1lUmVjdCgpLnNpemUoKV07CiAgICAgW3BhaW50
ZXIgc2V0RG91YmxlVmFsdWU6dmFsdWVdOwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKICAgICBbcGFpbnRlciBzZXRQcmVzZW50YXRpb25WYWx1ZTp2YWx1ZV07CkBAIC01MDMsMTgg
KzUwMywxOCBAQCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnQoU2Nyb2xsYmFyUGFp
bnRlciBzY3JvbGxiYXJQYWludGVyLCBib29sIGVuYWJsZQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCiB7CiAgICAgc2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsKIAotICAgIGlmICghc2Nyb2xsYmFyLT5zdXBwb3J0c1VwZGF0ZU9uU2Vjb25kYXJ5
VGhyZWFkKCkpIHsKLSAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzQ3VycmVudGx5RHJh
d2luZ0ludG9MYXllcihnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllciwgY29udGV4dC0+aXND
QUxheWVyQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjcm9sbGJhci5zdXBwb3J0c1VwZGF0ZU9uU2Vj
b25kYXJ5VGhyZWFkKCkpIHsKKyAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzQ3VycmVu
dGx5RHJhd2luZ0ludG9MYXllcihnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllciwgY29udGV4
dC5pc0NBTGF5ZXJDb250ZXh0KCkpOwogICAgIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgICAgICBjb250ZXh0LT5jbGlwKGRhbWFn
ZVJlY3QpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoc2Nyb2xsYmFyLT5mcmFtZVJlY3Qo
KS54KCksIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkueSgpKTsKLSAgICAgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKLSAgICAgICAgc2Nyb2xsYmFy
UGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xs
YmFyLT5lbmFibGVkKCkpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY2xpcChkYW1hZ2VSZWN0KTsKKyAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFy
LmZyYW1lUmVjdCgpLnkoKSk7CisgICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQoJmNvbnRleHQpOworICAgICAgICBzY3JvbGxiYXJQYWludGVyUGFpbnQoc2Ny
b2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFyLmVuYWJsZWQoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggYjJmNjBhMWNjNDA1YzY3YWZk
OGE1Zjc4NDM3Yjg5ZWEzYzgyNjQ1Yi4uOTk1NDQ3YjU2ODAxMDM4Y2ZmZTMzMTU4OWM3NzY0MGJj
ZmZjODE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxi
YXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmNwcApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBpbnQgY1Njcm9sbGJhclRoaWNrbmVzc1tdID0geyAxNSwgMTEgfTsKIAot
SW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhciwgYm9vbCkKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLmZyYW1lUmVjdCgpOwogfQogCiBpbnQg
U2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNp
emUgY29udHJvbFNpemUpCkBAIC00MiwxNSArNDIsMTUgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9j
azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQog
ICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVjdCh0cmFja1JlY3QsIHNj
cm9sbGJhci0+ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTAp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwg
c2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUw
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewotICAgIGlmIChzY3JvbGxiYXIt
PmVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xvcjo6
ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGlmIChzY3JvbGxiYXIuZW5hYmxl
ZCgpKQorICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggYTUwMDQ0NGQ5NDg2ZTg0ZTgx
MmE5MTQ5OWIxNzgwN2E5ZWQxOTAyMC4uYzAwZmNhMzMxODRjYTY1Y2U2ZmE2NDI5NzRhOWM0OTBm
OGFiYzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxi
YXJUaGVtZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5oCkBAIC0zMywyMiArMzMsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
U2Nyb2xsYmFyIHRoZW1lIHVzZWQgaW4gaW1hZ2Ugc25hcHNob3RzLCB0byBlbGltaW5hdGUgYXBw
ZWFyYW5jZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHBsYXRmb3Jtcy4KIGNsYXNzIFNjcm9sbGJhclRo
ZW1lTW9jayA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVn
dWxhclNjcm9sbGJhcik7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhciYpIG92ZXJyaWRlICB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
LSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8g
PSBmYWxzZSkgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRS
ZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgLypw
YWludGluZyovID0gZmFsc2UpIG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZp
cnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyJiwgYm9vbCBwYWludGluZyA9IGZhbHNl
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBpbnQgbWF4T3Zlcmxh
cEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQm
LCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQg
bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIG92ZXJyaWRlIHsgcmV0dXJuIDQwOyB9CiAgICAgCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCAxY2M1Mzg1ZTE4N2EyMmVhZjFiMDU1
ZTM0YmUwZmY2NDM4OTI5YjNkLi42YzkwYTljMmRkYjBhYzUwYzM3ODAyYTUzNDA0MDMxMzc5ZDgy
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHAKQEAgLTEwNCwxOCArMTA0LDE4IEBAIGludCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXpl
KQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxi
YXImIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCi0gICAgICAg
ICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCi0gICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWln
aHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCld
IC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOworICAgIHJldHVy
biBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICAgc2Nyb2xsYmFyLndpZHRoKCkgOiAKKyAg
ICAgICAgICAgICBzY3JvbGxiYXIuaGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhb
c2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci5jb250
cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJp
OjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFy
LT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gCi0gICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCi0gICAgICAgICAg
ICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIGNCdXR0b25JbnNldFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0g
KyAxOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICAgc2Nyb2xsYmFy
LndpZHRoKCkgOiAKKyAgICAgICAgICAgICBzY3JvbGxiYXIuaGVpZ2h0KCkpID49IDIgKiBjQnV0
dG9uSW5zZXRbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9s
bGJhci5jb250cm9sU2l6ZSgpXSArIDE7CiB9CiAKIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFp
bnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCBzdGFydCkK
QEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25z
dCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBw
YWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwg
Ym9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAKQEAgLTE0MiwxNyArMTQyLDE3IEBAIEludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhp
Y2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICByZXN1bHQgPSBJbnRS
ZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgY0J1dHRvbkxlbmd0aFtzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MpOworICAgIGludCB0aGlja25lc3MgPSBzY3Jv
bGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOworICAgIGlmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICByZXN1bHQg
PSBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksIGNCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyLmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MpOwogICAgIGVsc2UKLSAgICAgICAgcmVz
dWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHRoaWNrbmVzcywg
Y0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKKyAgICAgICAgcmVzdWx0
ID0gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLCB0aGlja25lc3MsIGNCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldKTsKICAgICBpZiAocGFpbnRpbmcpCi0g
ICAgICAgIHJldHVybiBidXR0b25SZXBhaW50UmVjdChyZXN1bHQsIHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSwgc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCksIHNjcm9s
bGJhci5jb250cm9sU2l6ZSgpLCB0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIm
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIElu
dFJlY3QgcmVzdWx0OwogICAgIApAQCAtMTYwLDEzICsxNjAsMTMgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwKICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCi0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgcmVzdWx0ID0gSW50UmVjdChz
Y3JvbGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIGNCdXR0b25MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXSwgc2Nyb2xsYmFyLT55KCksIGNCdXR0b25MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKKyAgICBpbnQgdGhpY2tuZXNzID0gc2Ny
b2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKTsKKyAgICBpZiAoc2Nyb2xs
YmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgcmVzdWx0
ID0gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFyLndpZHRoKCkgLSBjQnV0dG9uTGVu
Z3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSwgc2Nyb2xsYmFyLnkoKSwgY0J1dHRvbkxlbmd0
aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CiAgICAgZWxzZQotICAgICAg
ICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHNjcm9s
bGJhci0+aGVpZ2h0KCkgLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0s
IHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKKyAg
ICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpICsgc2Ny
b2xsYmFyLmhlaWdodCgpIC0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0s
IHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0pOwogICAg
IGlmIChwYWludGluZykKLSAgICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwg
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpLCBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCksIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCksIHNjcm9sbGJhci5jb250cm9sU2l6ZSgpLCBmYWxzZSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTgxLDc0ICsxODEsNzQgQEAgc3RhdGljIEludFJlY3QgdHJhY2tS
ZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9u
IG8KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2Fm
YXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWlu
dGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIm
IHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1
dHRvbnMoc2Nyb2xsYmFyKSkKLSAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7
CisgICAgICAgIHJldHVybiBzY3JvbGxiYXIuZnJhbWVSZWN0KCk7CiAgICAgCiAgICAgSW50UmVj
dCByZXN1bHQ7Ci0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCkpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikgCi0gICAgICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+
eCgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCBzY3JvbGxiYXIt
PnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpIC0gMiAqIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5j
b250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKLSAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIt
PngoKSwgc2Nyb2xsYmFyLT55KCkgKyBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNp
emUoKV0sIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBjQnV0dG9uTGVuZ3Ro
W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOworICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxi
YXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOworICAgIGlmIChzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSAKKyAgICAgICAgcmV0dXJuIElu
dFJlY3Qoc2Nyb2xsYmFyLngoKSArIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXpl
KCldLCBzY3JvbGxiYXIueSgpLCBzY3JvbGxiYXIud2lkdGgoKSAtIDIgKiBjQnV0dG9uTGVuZ3Ro
W3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKKyAgICByZXR1cm4gSW50UmVj
dChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIu
Y29udHJvbFNpemUoKV0sIHRoaWNrbmVzcywgc2Nyb2xsYmFyLmhlaWdodCgpIC0gMiAqIGNCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldKTsKIH0KIAotaW50IFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhciYgc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpXTsKKyAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci5j
b250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4g
ZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiB0cmFja1JlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBpZiAoIVNhZmFy
aVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47Ci0gICAgTlNDb250cm9sU2l6ZSBzaXpl
ID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENv
bnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CisgICAgTlNDb250cm9sU2l6ZSBzaXpl
ID0gc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29u
dHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBz
dGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQor
ICAgIGlmIChzY3JvbGxiYXIuaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0
ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAg
ICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7Ci0gICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNrUGFydCA6IEhT
Y3JvbGxUcmFja1BhcnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHRyYWNr
UmVjdCwgc2l6ZSwgc3RhdGUpOyAKKyAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXIub3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IFZTY3JvbGxUcmFja1BhcnQgOiBIU2Nyb2xs
VHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHRyYWNrUmVjdCwg
c2l6ZSwgc3RhdGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
YnV0dG9uUmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNp
emUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKKyAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3Jv
bGxiYXIuY29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6
ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0g
MDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCisgICAgaWYg
KHNjcm9sbGJhci5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFj
dGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRl
IHw9IEVuYWJsZWRTdGF0ZTsKLSAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBh
cnQpCisgICAgaWYgKHNjcm9sbGJhci5wcmVzc2VkUGFydCgpID09IHBhcnQpCiAgICAgICAgIHN0
YXRlIHw9IFByZXNzZWRTdGF0ZTsKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0
KQotICAgICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVy
dGljYWxTY3JvbGxiYXIgPyBTY3JvbGxVcEFycm93UGFydCA6IFNjcm9sbExlZnRBcnJvd1BhcnQs
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCisgICAgICAgIHBhaW50VGhlbWVQ
YXJ0KHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gU2Nyb2xs
VXBBcnJvd1BhcnQgOiBTY3JvbGxMZWZ0QXJyb3dQYXJ0LCBncmFwaGljc0NvbnRleHQucGxhdGZv
cm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNpemUsIHN0
YXRlKTsKICAgICBlbHNlIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0KQotICAgICAg
ICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIgPyBTY3JvbGxEb3duQXJyb3dQYXJ0IDogU2Nyb2xsUmlnaHRBcnJvd1BhcnQsIGdyYXBo
aWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCisgICAgICAgIHBhaW50VGhlbWVQYXJ0KHNj
cm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gU2Nyb2xsRG93bkFy
cm93UGFydCA6IFNjcm9sbFJpZ2h0QXJyb3dQYXJ0LCBncmFwaGljc0NvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNpemUsIHN0YXRl
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1l
TGlicmFyeSgpKQogICAgICAgICByZXR1cm47Ci0gICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xT
aXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CisgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Ny
b2xsYmFyLmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNp
emUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9
IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQorICAgIGlm
IChzY3JvbGxiYXIuaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBB
Y3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUg
fD0gRW5hYmxlZFN0YXRlOwotICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1
bWJQYXJ0KQorICAgIGlmIChzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCiAg
ICAgICAgIHN0YXRlIHw9IFByZXNzZWRTdGF0ZTsKLSAgICBwYWludFRoZW1lUGFydChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xsVGh1bWJQYXJ0
IDogSFNjcm9sbFRodW1iUGFydCwgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
CisgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIgPyBWU2Nyb2xsVGh1bWJQYXJ0IDogSFNjcm9sbFRodW1iUGFydCwgZ3JhcGhpY3ND
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAKICAgICAgICAgICAgICAgICAgICB0aHVtYlJlY3Qs
IHNpemUsIHN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmNDI3YjE5MGZkNjc2NjUyMTU2NzU2NmNiNmNi
YzRkZmU0M2Q5OTI4Li4yMDkwNTMzNjQwMzQ1MGE1ZDExMDMyZmQ4NDYyOTBkMDc4ZmI4ZjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuaApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXImKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIElu
dFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyJik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXImLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwg
Y29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4u
Y3BwCmluZGV4IDNlZTBiYjMzOWE0NWU3NDQ5MzcxNmQyOTU3MWFkZjQ5MjU1ZmNhY2IuLjM4OTkw
ZDZkYzM4OGYyZWIwZmI1ODRhNTA3ZGIxNmFhYmRmYTQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMTI5LDEyICsxMjks
MTIgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQo
KQogICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46
Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJh
clRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4g
dGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVX
aW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7
CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09
IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgU2Nyb2wKICAgICAvLyB3ZSBoYXZlIDwgMzQgcGl4ZWxzIGxlZnQuICBUaGlzIGFsbG93cyB0
aGUgc2Nyb2xsYmFyCiAgICAgLy8gdG8gc2NhbGUgZG93biBhbmQgZnVuY3Rpb24gZXZlbiBhdCB0
aW55IHNpemVzLgogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKLSAg
ICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0g
ICAgICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHRoaWNrbmVzcyA/
IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiB0aGlja25lc3MsIHRoaWNrbmVzcyk7Ci0gICAgcmV0
dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLAotICAgICAgICAgICAg
ICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MgPyBz
Y3JvbGxiYXItPmhlaWdodCgpIC8gMiA6IHRoaWNrbmVzcyk7CisgICAgaWYgKHNjcm9sbGJhci5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIHJldHVybiBJbnRS
ZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksCisgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci53aWR0aCgpIC8g
MiA6IHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKKyAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIu
eCgpLCBzY3JvbGxiYXIueSgpLAorICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xs
YmFyLmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci5oZWlnaHQoKSAvIDIgOiB0
aGlja25lc3MpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdp
bmRvd3MganVzdCBoYXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0
dG9uU3RhcnRQYXJ0KQpAQCAtMTY1LDc1ICsxNjUsNzUgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
U2MKICAgICAvLyB3ZSBoYXZlIDwgMzQgcGl4ZWxzIGxlZnQuICBUaGlzIGFsbG93cyB0aGUgc2Ny
b2xsYmFyCiAgICAgLy8gdG8gc2NhbGUgZG93biBhbmQgZnVuY3Rpb24gZXZlbiBhdCB0aW55IHNp
emVzLgogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKLSAgICBpZiAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKLSAgICAg
ICAgaW50IHcgPSBzY3JvbGxiYXItPndpZHRoKCkgPCAyICogdGhpY2tuZXNzID8gc2Nyb2xsYmFy
LT53aWR0aCgpIC8gMiA6IHRoaWNrbmVzczsKLSAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xs
YmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSB3LCBzY3JvbGxiYXItPnkoKSwgdywgdGhp
Y2tuZXNzKTsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcikgeworICAgICAgICBpbnQgdyA9IHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNr
bmVzcyA/IHNjcm9sbGJhci53aWR0aCgpIC8gMiA6IHRoaWNrbmVzczsKKyAgICAgICAgcmV0dXJu
IEludFJlY3Qoc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0gdywgc2Nyb2xsYmFy
LnkoKSwgdywgdGhpY2tuZXNzKTsKICAgICB9CiAgICAgCi0gICAgaW50IGggPSBzY3JvbGxiYXIt
PmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogdGhp
Y2tuZXNzOwotICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnko
KSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBoLCB0aGlja25lc3MsIGgpOworICAgIGludCBoID0g
c2Nyb2xsYmFyLmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci5oZWlnaHQoKSAv
IDIgOiB0aGlja25lc3M7CisgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xs
YmFyLnkoKSArIHNjcm9sbGJhci5oZWlnaHQoKSAtIGgsIHRoaWNrbmVzcywgaCk7CiB9CiAKLUlu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyLCBib29sKQogewogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxi
YXJUaGlja25lc3MoKTsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiB0
aGlja25lc3MpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNrbmVz
cykKICAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgICAgIHJldHVybiBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpICsgdGhpY2tuZXNzLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53
aWR0aCgpIC0gMiAqIHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3Qoc2Nyb2xsYmFyLngoKSArIHRoaWNrbmVzcywgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndp
ZHRoKCkgLSAyICogdGhpY2tuZXNzLCB0aGlja25lc3MpOwogICAgIH0KLSAgICBpZiAoc2Nyb2xs
YmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MpCisgICAgaWYgKHNjcm9sbGJhci5oZWlnaHQo
KSA8IDIgKiB0aGlja25lc3MpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgcmV0dXJu
IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdGhpY2tuZXNzLCB0aGlj
a25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogdGhpY2tuZXNzKTsKKyAgICByZXR1cm4g
SW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpICsgdGhpY2tuZXNzLCB0aGlja25l
c3MsIHNjcm9sbGJhci5oZWlnaHQoKSAtIDIgKiB0aGlja25lc3MpOwogfQogCi1ib29sIFNjcm9s
bGJhclRoZW1lV2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIHJldHVybiBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVm
dEJ1dHRvbjsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0Ry
YWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1Rv
RHJhZ09yaWdpbihTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCiB7CiAgICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0
IHNuYXAsIGJ5IGV4cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5z
aW9ucy4KICAgICBJbnRSZWN0IHJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyKTsKLSAgICBjb25z
dCBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKLSAgICBjb25zdCBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSk7CisgICAgY29uc3QgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBjb25zdCBpbnQgdGhpY2tu
ZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKTsKICAgICBy
ZWN0LmluZmxhdGVYKChob3J6ID8ga09mZkVuZE11bHRpcGxpZXIgOiBrT2ZmU2lkZU11bHRpcGxp
ZXIpICogdGhpY2tuZXNzKTsKICAgICByZWN0LmluZmxhdGVZKChob3J6ID8ga09mZlNpZGVNdWx0
aXBsaWVyIDoga09mZkVuZE11bHRpcGxpZXIpICogdGhpY2tuZXNzKTsKIAogICAgIC8vIENvbnZl
cnQgdGhlIGV2ZW50IHRvIGxvY2FsIGNvb3JkaW5hdGVzLgotICAgIEludFBvaW50IG1vdXNlUG9z
aXRpb24gPSBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRp
b24oKSk7Ci0gICAgbW91c2VQb3NpdGlvbi5tb3ZlKHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXIt
PnkoKSk7CisgICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9IHNjcm9sbGJhci5jb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOworICAgIG1vdXNlUG9zaXRpb24ubW92
ZShzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBzbmFw
IGlmZiB0aGUgZXZlbnQgaXMgb3V0c2lkZSBvdXIgY2FsY3VsYXRlZCByZWN0LgogICAgIHJldHVy
biAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhl
IHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYg
KCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwg
c2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNoZWNrQW5kSW5pdFNj
cm9sbGJhclRoZW1lKCk7CiAKICAgICBib29sIHN0YXJ0ID0gcGFydFR5cGUgPT0gQmFja1RyYWNr
UGFydDsKICAgICBpbnQgcGFydDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIHBhcnQgPSBzdGFydCA/IFNQX1RSQUNLU1RB
UlRIT1IgOiBTUF9UUkFDS0VOREhPUjsKICAgICBlbHNlCiAgICAgICAgIHBhcnQgPSBzdGFydCA/
IFNQX1RSQUNLU1RBUlRWRVJUIDogU1BfVFJBQ0tFTkRWRVJUOwogCiAgICAgaW50IHN0YXRlOwot
ICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCisgICAgaWYgKCFzY3JvbGxiYXIuZW5hYmxl
ZCgpKQogICAgICAgICBzdGF0ZSA9IFRTX0RJU0FCTEVEOwotICAgIGVsc2UgaWYgKChzY3JvbGxi
YXItPmhvdmVyZWRQYXJ0KCkgPT0gQmFja1RyYWNrUGFydCAmJiBzdGFydCkgfHwKLSAgICAgICAg
ICAgICAoc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IEZvcndhcmRUcmFja1BhcnQgJiYgIXN0
YXJ0KSkKLSAgICAgICAgc3RhdGUgPSAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHNjcm9s
bGJhci0+aG92ZXJlZFBhcnQoKSA/IFRTX0FDVElWRSA6IFRTX0hPVkVSKTsKKyAgICBlbHNlIGlm
ICgoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gQmFja1RyYWNrUGFydCAmJiBzdGFydCkgfHwK
KyAgICAgICAgICAgICAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gRm9yd2FyZFRyYWNrUGFy
dCAmJiAhc3RhcnQpKQorICAgICAgICBzdGF0ZSA9IChzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSA9
PSBzY3JvbGxiYXIuaG92ZXJlZFBhcnQoKSA/IFRTX0FDVElWRSA6IFRTX0hPVkVSKTsKICAgICBl
bHNlCiAgICAgICAgIHN0YXRlID0gVFNfTk9STUFMOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9p
ZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWUKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIGFs
cGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJh
clRoZW1lLCBwYXJ0LCBzdGF0ZSk7CiAKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3ND
b250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOworICAgIExvY2FsV2luZG93c0NvbnRl
eHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwogICAgIFJFQ1Qg
dGhlbWVSZWN0KHJlY3QpOwogCiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQpAQCAtMjY3LDM5ICsy
NjcsMzkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWUKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICghYWxwaGFCbGVuZCAmJiAhY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCisg
ICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpKQog
ICAgICAgICBESUJQaXhlbERhdGE6OnNldFJHQkFCaXRtYXBBbHBoYSh3aW5kb3dzQ29udGV4dC5o
ZGMoKSwgcmVjdCwgMjU1KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9s
bGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9s
bGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQp
CiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIAogICAgIGJvb2wgc3RhcnQg
PSAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBpbnQgeHBTdGF0ZSA9IDA7CiAg
ICAgaW50IGNsYXNzaWNTdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICB4cFN0YXRlID0gc3RhcnQgPyBUU19M
RUZUX0JVVFRPTiA6IFRTX1JJR0hUX0JVVFRPTjsKICAgICBlbHNlCiAgICAgICAgIHhwU3RhdGUg
PSBzdGFydCA/IFRTX1VQX0JVVFRPTiA6IFRTX0RPV05fQlVUVE9OOwogICAgIGNsYXNzaWNTdGF0
ZSA9IHhwU3RhdGUgLyA0OwogCi0gICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkgeworICAg
IGlmICghc2Nyb2xsYmFyLmVuYWJsZWQoKSkgewogICAgICAgICB4cFN0YXRlICs9IFRTX0RJU0FC
TEVEOwogICAgICAgICBjbGFzc2ljU3RhdGUgfD0gREZDU19JTkFDVElWRTsKLSAgICB9IGVsc2Ug
aWYgKChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gQmFja0J1dHRvblN0YXJ0UGFydCAmJiBz
dGFydCkgfHwKLSAgICAgICAgICAgICAgIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gRm9y
d2FyZEJ1dHRvbkVuZFBhcnQgJiYgIXN0YXJ0KSkgewotICAgICAgICBpZiAoc2Nyb2xsYmFyLT5w
cmVzc2VkUGFydCgpID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkgeworICAgIH0gZWxzZSBp
ZiAoKHNjcm9sbGJhci5ob3ZlcmVkUGFydCgpID09IEJhY2tCdXR0b25TdGFydFBhcnQgJiYgc3Rh
cnQpIHx8CisgICAgICAgICAgICAgICAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gRm9yd2Fy
ZEJ1dHRvbkVuZFBhcnQgJiYgIXN0YXJ0KSkgeworICAgICAgICBpZiAoc2Nyb2xsYmFyLnByZXNz
ZWRQYXJ0KCkgPT0gc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkpIHsKICAgICAgICAgICAgIHhwU3Rh
dGUgKz0gVFNfQUNUSVZFOwogICAgICAgICAgICAgY2xhc3NpY1N0YXRlIHw9IERGQ1NfUFVTSEVE
OwogICAgICAgICAgICAgY2xhc3NpY1N0YXRlIHw9IERGQ1NfRkxBVDsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICB4cFN0YXRlICs9IFRTX0hPVkVSOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gTm9QYXJ0IHx8ICFydW5uaW5nVmlzdGEp
CisgICAgICAgIGlmIChzY3JvbGxiYXIuaG92ZXJlZFBhcnQoKSA9PSBOb1BhcnQgfHwgIXJ1bm5p
bmdWaXN0YSkKICAgICAgICAgICAgIHhwU3RhdGUgKz0gVFNfTk9STUFMOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikKKyAgICAgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICAgICAgICAgIHhwU3RhdGUgPSBzdGFydCA/IFRT
X0xFRlRfQlVUVE9OX0hPVkVSIDogVFNfUklHSFRfQlVUVE9OX0hPVkVSOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHhwU3RhdGUgPSBzdGFydCA/IFRTX1VQX0JVVFRPTl9IT1ZF
UiA6IFRTX0RPV05fQlVUVE9OX0hPVkVSOwpAQCAtMzEwLDE0ICszMTAsMTQgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWUKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIGFscGhhQmxl
bmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1l
LCBTUF9CVVRUT04sIHhwU3RhdGUpOwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dz
Q29udGV4dChjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBMb2NhbFdpbmRvd3NDb250
ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNU
IHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIERyYXdU
aGVtZUJhY2tncm91bmQoc2Nyb2xsYmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0LmhkYygpLCBTUF9C
VVRUT04sIHhwU3RhdGUsICZ0aGVtZVJlY3QsIDApOwogICAgIGVsc2UKICAgICAgICAgOjpEcmF3
RnJhbWVDb250cm9sKHdpbmRvd3NDb250ZXh0LmhkYygpLCAmdGhlbWVSZWN0LCBERkNfU0NST0xM
LCBjbGFzc2ljU3RhdGUpOwogCi0gICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250ZXh0LT5pc0lu
VHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhhQmxlbmQgJiYgIWNvbnRleHQuaXNJ
blRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBpeGVsRGF0YTo6c2V0UkdCQUJpdG1h
cEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCByZWN0LCAyNTUpOwogfQogCkBAIC0zMzAsNTEg
KzMzMCw1MSBAQCBzdGF0aWMgSW50UmVjdCBncmlwcGVyUmVjdChpbnQgdGhpY2tuZXNzLCBjb25z
dCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAgICAgICAgICAgICAgICAgICAgZ3JpcHBlclRoaWNrbmVz
cywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0
KQorc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBIREMgaGRj
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghc2Nyb2xsYmFyVGhlbWUpCiAgICAg
ICAgIHJldHVybjsgIC8vIENsYXNzaWMgbG9vayBoYXMgbm8gZ3JpcHBlci4KICAgIAogICAgIGlu
dCBzdGF0ZTsKLSAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQorICAgIGlmICghc2Nyb2xs
YmFyLmVuYWJsZWQoKSkKICAgICAgICAgc3RhdGUgPSBUU19ESVNBQkxFRDsKLSAgICBlbHNlIGlm
IChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgIGVsc2UgaWYgKHNj
cm9sbGJhci5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKICAgICAgICAgc3RhdGUgPSBUU19B
Q1RJVkU7IC8vIFRodW1iIGFsd2F5cyBzdGF5cyBhY3RpdmUgb25jZSBwcmVzc2VkLgotICAgIGVs
c2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgZWxzZSBp
ZiAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICBzdGF0ZSA9
IFRTX0hPVkVSOwogICAgIGVsc2UKICAgICAgICAgc3RhdGUgPSBUU19OT1JNQUw7CiAKICAgICBS
RUNUIHRoZW1lUmVjdChyZWN0KTsKLSAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRo
ZW1lLCBoZGMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gU1BfR1JJUFBFUkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7
CisgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhPUiA6IFNQ
X0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxi
YXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGNoZWNrQW5kSW5pdFNj
cm9sbGJhclRoZW1lKCk7CiAKICAgICBpbnQgc3RhdGU7Ci0gICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFibGVkKCkpCiAgICAgICAgIHN0YXRlID0g
VFNfRElTQUJMRUQ7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRo
dW1iUGFydCkKKyAgICBlbHNlIGlmIChzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBh
cnQpCiAgICAgICAgIHN0YXRlID0gVFNfQUNUSVZFOyAvLyBUaHVtYiBhbHdheXMgc3RheXMgYWN0
aXZlIG9uY2UgcHJlc3NlZC4KLSAgICBlbHNlIGlmIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkg
PT0gVGh1bWJQYXJ0KQorICAgIGVsc2UgaWYgKHNjcm9sbGJhci5ob3ZlcmVkUGFydCgpID09IFRo
dW1iUGFydCkKICAgICAgICAgc3RhdGUgPSBUU19IT1ZFUjsKICAgICBlbHNlCiAgICAgICAgIHN0
YXRlID0gVFNfTk9STUFMOwogCiAgICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYg
KHNjcm9sbGJhclRoZW1lKQotICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQ
YXJ0aWFsbHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwg
c3RhdGUpOwotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwg
cmVjdCwgYWxwaGFCbGVuZCk7CisgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3Vu
ZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQs
IHN0YXRlKTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0
LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAo
c2Nyb2xsYmFyVGhlbWUpIHsKLSAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJU
aGVtZSwgd2luZG93c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlLCAm
dGhlbWVSZWN0LCAwKTsKKyAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVt
ZSwgd2luZG93c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVt
ZVJlY3QsIDApOwogICAgICAgICBwYWludEdyaXBwZXIoc2Nyb2xsYmFyLCB3aW5kb3dzQ29udGV4
dC5oZGMoKSwgZ3JpcHBlclJlY3Qoc2Nyb2xsYmFyVGhpY2tuZXNzKCksIHJlY3QpKTsKICAgICB9
IGVsc2UKICAgICAgICAgOjpEcmF3RWRnZSh3aW5kb3dzQ29udGV4dC5oZGMoKSwgJnRoZW1lUmVj
dCwgRURHRV9SQUlTRUQsIEJGX1JFQ1QgfCBCRl9NSURETEUpOwogCi0gICAgaWYgKCFhbHBoYUJs
ZW5kICYmICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhh
QmxlbmQgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBp
eGVsRGF0YTo6c2V0UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCByZWN0LCAy
NTUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
YmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5oCmluZGV4IGY0NGU5MmJjYjk2NDRiZDhjZjdkMDMxNDBhYTZlMjhlZmEwM2Q0YjAuLjU3
NTIzZTExZjNhZWYxM2Q3ZTJlMjI4YWZhNzY4MDUxNjg5MTA4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00MSwyMSArNDEsMjEg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKSBv
dmVycmlkZTsKIAotICAgIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAg
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBh
cnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFs
c2UpIG92ZXJyaWRlOworICAgIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOworICAgIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
IG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICBi
b29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3Jv
bGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jiwg
U2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRl
OworICAgIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5k
ZXggYjM3Yzk5NTMwOGI3MjJiODU0YjVmMGFlZWNhOTk4YmIyMmIyMGMxMS4uZjZjODVjOTc3YzBi
NGJmZDNlZmI2OThhZGJiYWNkZDAwMDc5N2Q0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhcikKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDbGllbnQmIHNjcm9sbGJhcikgeyByZXR1cm4gc2Nyb2xsYmFyLmlzQ3VzdG9t
U2Nyb2xsYmFyKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2Ny
b2xsYmFyJiBzY3JvbGxiYXIpIHsgcmV0dXJuIHNjcm9sbGJhci5pc0N1c3RvbVNjcm9sbGJhcigp
OyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBSZW5kZXJTY3Jv
bGxiYXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuY3BwCmluZGV4IDU4ZTI0Y2JiZDU4ZjEzMTkwMzU2ZDI5NmY4NmQ1YWI1NTdlMjFiNjIuLjg5
NjNjYjg3MDRmOWNkZGQ3NGY4ZDAyMDZlNTdmNGMxZTVmZjMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTEzOCwxMyArMTM4
LDEzIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgc2V0RmxvYXRpbmcoZmFsc2UpOwog
ICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiAgICAgaWYgKG9sZFN0eWxlICYmIG1fc2Ny
b2xsYmFyICYmIG1fcGFydCAhPSBOb1BhcnQgJiYgZGlmZiA+PSBTdHlsZURpZmZlcmVuY2VSZXBh
aW50KQotICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQobV9zY3Jv
bGxiYXIsIG1fcGFydCk7CisgICAgICAgIG1fc2Nyb2xsYmFyLT50aGVtZSgpLT5pbnZhbGlkYXRl
UGFydCgqbV9zY3JvbGxiYXIsIG1fcGFydCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFy
dDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVj
dCkKIHsKICAgICBpZiAobV9zY3JvbGxiYXIgJiYgbV9wYXJ0ICE9IE5vUGFydCkKLSAgICAgICAg
bV9zY3JvbGxiYXItPnRoZW1lKCktPmludmFsaWRhdGVQYXJ0KG1fc2Nyb2xsYmFyLCBtX3BhcnQp
OworICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKm1fc2Nyb2xs
YmFyLCBtX3BhcnQpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodmlldygpLmZyYW1lVmlldygp
LmlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKHRoaXMpKSB7CiAgICAgICAgICAgICB2aWV3KCkuZnJh
bWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbENvcm5lcih2aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xs
Q29ybmVyUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwCmluZGV4IGI2N2IxOGIyOGU5ZmI4M2QzZGJlYzQ4MWY4N2M4Yzc5NTIy
ZGQ3MTMuLmNiN2MzNzM2MGNkZWI3MmFkMmI5M2Y2ZDQzMDU3YmEwOGViOTVkYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAt
MzcsMTMgKzM3LDEzIEBAIFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogICAgIHJldHVybiAmdGhlbWU7CiB9CiAKLXZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCiB7CiAg
ICAgSW50UmVjdCBmaXJzdEJ1dHRvbiA9IGJhY2tCdXR0b25SZWN0KHNjcm9sbGJhciwgQmFja0J1
dHRvblN0YXJ0UGFydCk7CiAgICAgSW50UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3YXJkQnV0dG9u
UmVjdChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJlY3QgdGhp
cmRCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJhY2tCdXR0b25FbmRQYXJ0KTsK
ICAgICBJbnRSZWN0IGZvdXJ0aEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwg
Rm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGJlZm9yZVNpemUgPSBmaXJzdEJ1
dHRvbi53aWR0aCgpICsgc2Vjb25kQnV0dG9uLndpZHRoKCk7CiAgICAgICAgIGFmdGVyU2l6ZSA9
IHRoaXJkQnV0dG9uLndpZHRoKCkgKyBmb3VydGhCdXR0b24ud2lkdGgoKTsKICAgICB9IGVsc2Ug
ewpAQCAtNTIsNTIgKzUyLDUyIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNp
emVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sCiAgICAgfQogfQog
Ci1ib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIGludCBzdGFydFNpemU7CiAgICAgaW50IGVuZFNp
emU7CiAgICAgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhzY3JvbGxiYXIsIHN0YXJ0U2l6ZSwg
ZW5kU2l6ZSk7Ci0gICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxiYXItPndpZHRo
KCkgOiBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICByZXR1cm4gKHN0YXJ0U2l6ZSArIGVuZFNp
emUpIDw9IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
c2Nyb2xsYmFyLndpZHRoKCkgOiBzY3JvbGxiYXIuaGVpZ2h0KCkpOwogfQogCi1ib29sIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChz
Y3JvbGxiYXIpID49IDA7CiB9CiAKLWludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6bWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsK
LSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPigqc2Nyb2xsYmFyKS5taW5pbXVt
VGh1bWJMZW5ndGgoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3Jv
bGxiYXIpLm1pbmltdW1UaHVtYkxlbmd0aCgpOwogfQogCi1JbnRSZWN0IFJlbmRlclNjcm9sbGJh
clRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNj
cm9sbGJhcikuYnV0dG9uUmVjdChwYXJ0VHlwZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRl
clNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVj
dCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3Qg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewotICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLmJ1dHRvblJlY3QocGFydFR5cGUpOworICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikuYnV0dG9uUmVjdChw
YXJ0VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sKQogewogICAg
IGlmICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQotICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci5mcmFtZVJlY3QoKTsKICAgICAK
ICAgICBpbnQgc3RhcnRMZW5ndGg7CiAgICAgaW50IGVuZExlbmd0aDsKICAgICBidXR0b25TaXpl
c0Fsb25nVHJhY2tBeGlzKHNjcm9sbGJhciwgc3RhcnRMZW5ndGgsIGVuZExlbmd0aCk7CiAgICAg
Ci0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikudHJhY2tS
ZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJT
Y3JvbGxiYXI+KHNjcm9sbGJhcikudHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOwog
fQogCi1JbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1Ry
YWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
eyAKLSAgICBJbnRSZWN0IGJhY2tSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPigqc2Ny
b2xsYmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOwot
ICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KCpzY3Jv
bGxiYXIpLnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7
CisgICAgSW50UmVjdCBiYWNrUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xs
YmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOworICAg
IEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJh
cikudHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsKICAg
ICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgcmVzdWx0LnNldFgoYmFja1Jl
Y3QueCgpKTsKICAgICAgICAgcmVzdWx0LnNldFdpZHRoKGZvcndhcmRSZWN0Lm1heFgoKSAtIGJh
Y2tSZWN0LngoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTEwNywyMiArMTA3LDIyIEBAIEludFJlY3Qg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Ny
b2xsYmFyVGhlbWVDbGllCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6d2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OndpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJh
ciYgc2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG9wYWNpdHkgPSBkb3duY2FzdDxSZW5kZXJTY3Jv
bGxiYXI+KCpzY3JvbGxiYXIpLm9wYWNpdHkoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZG93bmNh
c3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLm9wYWNpdHkoKTsKICAgICBpZiAob3BhY2l0
eSAhPSAxKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+Y2xp
cChzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNv
bnRleHQuY2xpcChzY3JvbGxiYXIuZnJhbWVSZWN0KCkpOworICAgICAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgfQogfQogCi12b2lkIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1l
OjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG9wYWNpdHkgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxi
YXI+KCpzY3JvbGxiYXIpLm9wYWNpdHkoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZG93bmNhc3Q8
UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLm9wYWNpdHkoKTsKICAgICBpZiAob3BhY2l0eSAh
PSAxKSB7Ci0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgICAg
IGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOworICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiB9CiAKQEAgLTEzMiwzMiAr
MTMyLDMyIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNj
cm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRlCiAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
Y29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJl
bmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFNjcm9sbGJhckJH
UGFydCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xs
YmFyPihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3Jv
bGxiYXIuZnJhbWVSZWN0KCkpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGRvd25j
YXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFRyYWNr
QkdQYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhciku
cGFpbnRQYXJ0KCZjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNj
cm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPigqc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7
CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29u
dGV4dCwgcGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikucGFp
bnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJh
cj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAg
ICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0
LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xs
YmFyKS5wYWludFBhcnQoJmNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
CiAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNvbnRleHQsIHNj
cm9sbGJhciwgcmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJUaGVtZS5oCmluZGV4IDUyZTAxNmY3M2JlNTIyMDUyYjA2M2YwY2I0OTBlZTRkMWE2
ZjkzNTkuLjQ3ZjBmODAzM2ViMDk0YzA0ZDE5NDNhZWY2Nzg0MWVmOTY0MTgyMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCkBAIC00Niwz
OSArNDYsMzkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50
ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91
bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCiAgICAgdmlydHVhbCBk
b3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAg
ICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVy
biBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdp
c3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFy
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9s
bGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVy
U2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmly
dHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0
b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciYsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBh
ZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogcmVuZGVy
U2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0
b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGhhc0J1dHRvbnMoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFs
c2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyJiwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBT
Y3JvbGxiYXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5U
cmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdy
YXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OworCisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMo
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255568</attachid>
            <date>2015-06-25 13:01:25 -0700</date>
            <delta_ts>2015-06-25 14:09:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146320-20150625130039.patch</filename>
            <type>text/plain</type>
            <size>146168</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk2YzJjNzM2YmQ1NDk4
YmFlYTQ4NWYyNWJiYjMyMWI3ZGI4ZTljZi4uOWFmZmQ1MzE2YTFkMDZjYjNlYWI2NDMzZGI5YjM4
ZTFjNGZiNDRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAxNS0wNi0yNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcg
U2Nyb2xsYmFyVGhlbWVDbGllbnQgYW5kIGp1c3QgdXNlIFNjcm9sbGJhciBkaXJlY3RseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFy
UGFpbnRlcnNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhcjo6flNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om9mZnNldERp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnVwZGF0ZVRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGh1
bWJVbmRlck1vdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6YXV0b3Njcm9sbFBy
ZXNzZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3RhcnRUaW1lcklmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW92ZVRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpzZXRQcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZVVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6c2V0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1cGRhdGVFbmFibGVkU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWU6OmludmFsaWRhdGVQYXJ0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0cmFja0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVu
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0
ZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6dXNlZFRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp3aWxsUGFpbnRTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmRpZFBhaW50U2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1l
R3RrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzQnV0dG9ucyk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVJT1M6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lSU9TOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lSU9TOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lSU9TOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUlPUzo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVJ
T1M6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
SU9TOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVJT1M6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUlPUzo6
c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUlP
Uzo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToK
KyAgICAgICAgKHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIpOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlIHNjcm9sbGVySW1wUGFpcjpjb252ZXJ0
Q29udGVudFBvaW50OnRvU2Nyb2xsZXJJbXA6XSk6CisgICAgICAgICgtW1dlYlNjcm9sbGJhclBh
cnRBbmltYXRpb24gc3RhcnRBbmltYXRpb25dKToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFp
bnRlckRlbGVnYXRlIG1vdXNlTG9jYXRpb25JblNjcm9sbGVyRm9yU2Nyb2xsZXJJbXA6XSk6Cisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9u
OnNjcm9sbGVyUGFpbnRlcjpwYXJ0OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZUtub2JB
bHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdh
dGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpkdXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV2ViU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIHNjcm9sbGVySW1wOmFuaW1hdGVVSVN0YXRl
VHJhbnNpdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFpbnRl
ckRlbGVnYXRlIHNjcm9sbGVySW1wOmFuaW1hdGVFeHBhbnNpb25UcmFuc2l0aW9uV2l0aER1cmF0
aW9uOl0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50ZXJl
ZFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6bW91c2VF
eGl0ZWRTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmRp
ZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
TWFjOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbnZhbGlkYXRlU2Nyb2xsYmFy
UGFydExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6dmVydGlj
YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvck1hYzo6aG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTY3JvbGxiYXJQYXJ0aWNpcGF0ZUluSGl0
VGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRlU2Ny
b2xsZXJTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxi
YXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1i
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJ
bnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBk
YXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpz
ZXRQYWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6
dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNCdXR0b25zKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6aGFzVGh1bWIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpiYWNrQnV0dG9u
UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmZv
cndhcmRCdXR0b25SZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTW9jazo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmlzTW9ja1RoZW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VGh1bWIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpm
b3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6
dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRD
ZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpzaG91
bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRHcmlwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclBhcnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
OjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6d2lsbFBhaW50U2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5o
OgorCiAyMDE1LTA2LTI1ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAK
ICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDVhNDdlYTgyYWE2NjI4
OGMyNWVjZDFkYTYxNDIxNTA1Nzc2ZDYzM2IuLmJkODU1N2Y4ZDExNGY4NGVmYTFjZDg3YWMyNDg5
MDYzOGE2NjRkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVN
YWMubW0KQEAgLTQzLDkgKzQzLDkgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGwKICAgICBTY3Jv
bGxiYXJUaGVtZU1hYyogbWFjVGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyo+
KHNjcm9sbGJhclRoZW1lKTsKIAogICAgIFNjcm9sbGJhclBhaW50ZXIgdmVydGljYWxQYWludGVy
ID0gdmVydGljYWxTY3JvbGxiYXIgJiYgdmVydGljYWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRl
T25TZWNvbmRhcnlUaHJlYWQoKQotICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xs
YmFyKHZlcnRpY2FsU2Nyb2xsYmFyKSA6IDA7CisgICAgICAgID8gbWFjVGhlbWUtPnBhaW50ZXJG
b3JTY3JvbGxiYXIoKnZlcnRpY2FsU2Nyb2xsYmFyKSA6IG51bGxwdHI7CiAgICAgU2Nyb2xsYmFy
UGFpbnRlciBob3Jpem9udGFsUGFpbnRlciA9IGhvcml6b250YWxTY3JvbGxiYXIgJiYgaG9yaXpv
bnRhbFNjcm9sbGJhci0+c3VwcG9ydHNVcGRhdGVPblNlY29uZGFyeVRocmVhZCgpCi0gICAgICAg
ID8gbWFjVGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhcikgOiAw
OworICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKCpob3Jpem9udGFsU2Ny
b2xsYmFyKSA6IG51bGxwdHI7CiAKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIg
PT0gdmVydGljYWxQYWludGVyICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPT0gaG9y
aXpvbnRhbFBhaW50ZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBhZDQ4NzkzMThjOWRiYWJmODUyZDZiMTgwMjIxMmI2
ZDcxMmZhYjNmLi41ZGZjNjk1NWYyMTk2YWQ0NDhjYzYwNzAyZGU2NmRjYTJiYmExNjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0zMzksMTQgKzMz
OSwxNCBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZQogICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlID0gb3ZlcmxheVN0eWxlOwogCiAgICAgaWYgKGhvcml6b250YWxTY3JvbGxiYXIoKSkgewot
ICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKmhvcml6b250YWxTY3JvbGxiYXIoKSk7
CiAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBp
ZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gZXhpc3RpbmdTY3JvbGxBbmltYXRv
cigpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPmludmFsaWRhdGVTY3JvbGxiYXJQYXJ0
TGF5ZXJzKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2ZXJ0
aWNhbFNjcm9sbGJhcigpKSB7Ci0gICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51cGRh
dGVTY3JvbGxiYXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKnZlcnRp
Y2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcigpLT5pbnZhbGlkYXRl
KCk7CiAgICAgICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGlu
Z1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRvci0+aW52YWxpZGF0
ZVNjcm9sbGJhclBhcnRMYXllcnModmVydGljYWxTY3JvbGxiYXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCBhNWI2ZTNmZjEwYThmNmVmNDc5NTc0ZmU0NTljODI5
ODg1YTdmNDhlLi41MmQ3ODc0YWE5OGI1YWYxODczN2FkMDc2NTBlNjUyNjU2ZmMzMWIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgU2Nyb2xs
YmFyOjpTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnQKICAgICBpZiAoIW1fdGhlbWUpCiAgICAgICAgIG1fdGhlbWUgPSBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKIAotICAgIG1fdGhlbWUtPnJlZ2lzdGVyU2Nyb2xsYmFy
KHRoaXMpOworICAgIG1fdGhlbWUtPnJlZ2lzdGVyU2Nyb2xsYmFyKCp0aGlzKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIHVnbHkgYW5kIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgd2UgZml4
IGNyb3NzLXBsYXRmb3JtIGNvZGUgdG8gYWN0dWFsbHkgcXVlcnkgZm9yCiAgICAgLy8gc2Nyb2xs
YmFyIHRoaWNrbmVzcyBhbmQgdXNlIGl0IHdoZW4gc2l6aW5nIHNjcm9sbGJhcnMgKHJhdGhlciB0
aGFuIGxlYXZpbmcgb25lIGRpbWVuc2lvbiBvZiB0aGUgc2Nyb2xsYmFyCkBAIC0xMDAsNyArMTAw
LDcgQEAgU2Nyb2xsYmFyOjp+U2Nyb2xsYmFyKCkKIHsKICAgICBzdG9wVGltZXJJZk5lZWRlZCgp
OwogICAgIAotICAgIG1fdGhlbWUtPnVucmVnaXN0ZXJTY3JvbGxiYXIodGhpcyk7CisgICAgbV90
aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcigqdGhpcyk7CiB9CiAKIFNjcm9sbGJhck92ZXJsYXlT
dHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0CkBAIC0xMjQsMTEg
KzEyNCwxMSBAQCB2b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKICAgICBpZiAocG9z
aXRpb24gPT0gbV9jdXJyZW50UG9zKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgb2xkVGh1
bWJQb3NpdGlvbiA9IHRoZW1lKCktPnRodW1iUG9zaXRpb24odGhpcyk7CisgICAgaW50IG9sZFRo
dW1iUG9zaXRpb24gPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0aGlzKTsKICAgICBtX2N1cnJl
bnRQb3MgPSBwb3NpdGlvbjsKICAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7CiAgICAgaWYgKG1f
cHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KQotICAgICAgICBzZXRQcmVzc2VkUG9zKG1fcHJlc3Nl
ZFBvcyArIHRoZW1lKCktPnRodW1iUG9zaXRpb24odGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsg
ICAgCisgICAgICAgIHNldFByZXNzZWRQb3MobV9wcmVzc2VkUG9zICsgdGhlbWUoKS0+dGh1bWJQ
b3NpdGlvbigqdGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsKIH0KIAogdm9pZCBTY3JvbGxiYXI6
OnNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKQpAQCAtMTU0LDcg
KzE1NCw3IEBAIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVtYigpCiAjaWZkZWYgVEhVTUJfUE9T
SVRJT05fQUZGRUNUU19CVVRUT05TCiAgICAgaW52YWxpZGF0ZSgpOwogI2Vsc2UKLSAgICB0aGVt
ZSgpLT5pbnZhbGlkYXRlUGFydHModGhpcywgRm9yd2FyZFRyYWNrUGFydCB8IEJhY2tUcmFja1Bh
cnQgfCBUaHVtYlBhcnQpOworICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0cygqdGhpcywgRm9y
d2FyZFRyYWNrUGFydCB8IEJhY2tUcmFja1BhcnQgfCBUaHVtYlBhcnQpOwogI2VuZGlmCiB9CiAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogICAgIGlmIChjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGhlbWUoKS0+cGFpbnQodGhpcywgY29udGV4
dCwgZGFtYWdlUmVjdCkpCisgICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgKmNvbnRleHQs
IGRhbWFnZVJlY3QpKQogICAgICAgICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIGRhbWFnZVJlY3Qp
OwogfQogCkBAIC0xODksOCArMTg5LDggQEAgdm9pZCBTY3JvbGxiYXI6OmF1dG9zY3JvbGxUaW1l
ckZpcmVkKCkKIAogc3RhdGljIGJvb2wgdGh1bWJVbmRlck1vdXNlKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogewotICAgIGludCB0aHVtYlBvcyA9IHNjcm9sbGJhci0+dGhlbWUoKS0+dHJhY2tQb3Np
dGlvbihzY3JvbGxiYXIpICsgc2Nyb2xsYmFyLT50aGVtZSgpLT50aHVtYlBvc2l0aW9uKHNjcm9s
bGJhcik7Ci0gICAgaW50IHRodW1iTGVuZ3RoID0gc2Nyb2xsYmFyLT50aGVtZSgpLT50aHVtYkxl
bmd0aChzY3JvbGxiYXIpOworICAgIGludCB0aHVtYlBvcyA9IHNjcm9sbGJhci0+dGhlbWUoKS0+
dHJhY2tQb3NpdGlvbigqc2Nyb2xsYmFyKSArIHNjcm9sbGJhci0+dGhlbWUoKS0+dGh1bWJQb3Np
dGlvbigqc2Nyb2xsYmFyKTsKKyAgICBpbnQgdGh1bWJMZW5ndGggPSBzY3JvbGxiYXItPnRoZW1l
KCktPnRodW1iTGVuZ3RoKCpzY3JvbGxiYXIpOwogICAgIHJldHVybiBzY3JvbGxiYXItPnByZXNz
ZWRQb3MoKSA+PSB0aHVtYlBvcyAmJiBzY3JvbGxiYXItPnByZXNzZWRQb3MoKSA8IHRodW1iUG9z
ICsgdGh1bWJMZW5ndGg7CiB9CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNjcm9sbGJhcjo6
YXV0b3Njcm9sbFByZXNzZWRQYXJ0KGRvdWJsZSBkZWxheSkKIAogICAgIC8vIEhhbmRsZSB0aGUg
dHJhY2suCiAgICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgbV9wcmVz
c2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aHVtYlVuZGVyTW91c2UodGhpcykpIHsK
LSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQodGhpcywgbV9wcmVzc2VkUGFydCk7Cisg
ICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKICAg
ICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbGJhcjo6c3RhcnRUaW1lcklmTmVlZGVkKGRv
dWJsZSBkZWxheSkKICAgICAvLyBIYW5kbGUgdGhlIHRyYWNrLiAgV2UgaGFsdCB0cmFjayBzY3Jv
bGxpbmcgb25jZSB0aGUgdGh1bWIgaXMgbGV2ZWwKICAgICAvLyB3aXRoIHVzLgogICAgIGlmICgo
bV9wcmVzc2VkUGFydCA9PSBCYWNrVHJhY2tQYXJ0IHx8IG1fcHJlc3NlZFBhcnQgPT0gRm9yd2Fy
ZFRyYWNrUGFydCkgJiYgdGh1bWJVbmRlck1vdXNlKHRoaXMpKSB7Ci0gICAgICAgIHRoZW1lKCkt
PmludmFsaWRhdGVQYXJ0KHRoaXMsIG1fcHJlc3NlZFBhcnQpOworICAgICAgICB0aGVtZSgpLT5p
bnZhbGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CiAgICAgICAgIHNldEhvdmVyZWRQ
YXJ0KFRodW1iUGFydCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTAsOSArMjkwLDkg
QEAgdm9pZCBTY3JvbGxiYXI6Om1vdmVUaHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1l
bnQpCiAgICAgfQogCiAgICAgLy8gRHJhZyB0aGUgdGh1bWIuCi0gICAgaW50IHRodW1iUG9zID0g
dGhlbWUoKS0+dGh1bWJQb3NpdGlvbih0aGlzKTsKLSAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgp
LT50aHVtYkxlbmd0aCh0aGlzKTsKLSAgICBpbnQgdHJhY2tMZW4gPSB0aGVtZSgpLT50cmFja0xl
bmd0aCh0aGlzKTsKKyAgICBpbnQgdGh1bWJQb3MgPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0
aGlzKTsKKyAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgpLT50aHVtYkxlbmd0aCgqdGhpcyk7Cisg
ICAgaW50IHRyYWNrTGVuID0gdGhlbWUoKS0+dHJhY2tMZW5ndGgoKnRoaXMpOwogICAgIGludCBt
YXhQb3MgPSB0cmFja0xlbiAtIHRodW1iTGVuOwogICAgIGlmIChkZWx0YSA+IDApCiAgICAgICAg
IGRlbHRhID0gc3RkOjptaW4obWF4UG9zIC0gdGh1bWJQb3MsIGRlbHRhKTsKQEAgLTMxMyw4ICsz
MTMsOCBAQCB2b2lkIFNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0
KQogICAgIGlmICgobV9ob3ZlcmVkUGFydCA9PSBOb1BhcnQgfHwgcGFydCA9PSBOb1BhcnQpICYm
IHRoZW1lKCktPmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkpCiAgICAgICAgIGludmFsaWRh
dGUoKTsgIC8vIEp1c3QgaW52YWxpZGF0ZSB0aGUgd2hvbGUgc2Nyb2xsYmFyLCBzaW5jZSB0aGUg
YnV0dG9ucyBhdCBlaXRoZXIgZW5kIGNoYW5nZSBhbnl3YXkuCiAgICAgZWxzZSBpZiAobV9wcmVz
c2VkUGFydCA9PSBOb1BhcnQpIHsgIC8vIFdoZW4gdGhlcmUncyBhIHByZXNzZWQgcGFydCwgd2Ug
ZG9uJ3QgZHJhdyBhIGhvdmVyZWQgc3RhdGUsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGludmFs
aWRhdGUuCi0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIHBhcnQpOwotICAg
ICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKKyAgICAg
ICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIHBhcnQpOworICAgICAgICB0aGVtZSgp
LT5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9ob3ZlcmVkUGFydCk7CiAgICAgfQogICAgIG1faG92
ZXJlZFBhcnQgPSBwYXJ0OwogfQpAQCAtMzIyLDI0ICszMjIsMjQgQEAgdm9pZCBTY3JvbGxiYXI6
OnNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKIHZvaWQgU2Nyb2xsYmFyOjpzZXRQ
cmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKG1fcHJlc3NlZFBhcnQg
IT0gTm9QYXJ0KQotICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX3ByZXNz
ZWRQYXJ0KTsKKyAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3Nl
ZFBhcnQpOwogICAgIG1fcHJlc3NlZFBhcnQgPSBwYXJ0OwogICAgIGlmIChtX3ByZXNzZWRQYXJ0
ICE9IE5vUGFydCkKLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQodGhpcywgbV9wcmVz
c2VkUGFydCk7CisgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNz
ZWRQYXJ0KTsKICAgICBlbHNlIGlmIChtX2hvdmVyZWRQYXJ0ICE9IE5vUGFydCkgIC8vIFdoZW4g
d2Ugbm8gbG9uZ2VyIGhhdmUgYSBwcmVzc2VkIHBhcnQsIHdlIGNhbiBzdGFydCBkcmF3aW5nIGEg
aG92ZXJlZCBzdGF0ZSBvbiB0aGUgaG92ZXJlZCBwYXJ0LgotICAgICAgICB0aGVtZSgpLT5pbnZh
bGlkYXRlUGFydCh0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKKyAgICAgICAgdGhlbWUoKS0+aW52YWxp
ZGF0ZVBhcnQoKnRoaXMsIG1faG92ZXJlZFBhcnQpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykK
IGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQogewogICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IFRodW1iUGFydCkgewotICAgICAgICBpZiAo
dGhlbWUoKS0+c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4odGhpcywgZXZ0KSkKKyAgICAgICAg
aWYgKHRoZW1lKCktPnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKCp0aGlzLCBldnQpKQogICAg
ICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24o
bV9vcmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtb3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAg
ICAgICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlv
bigpKS54KCkgOgotICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyhldnQucG9zaXRpb24oKSkueSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9jdW1lbnRJbnN0
ZWFkT2ZUaHVtYih0aGlzLCBldnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSwgdGhlbWUoKS0+c2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoKnRoaXMsIGV2dCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM0NywxOSArMzQ3LDE5IEBAIGJvb2wgU2Nyb2xsYmFy
Ojptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIGlmIChtX3By
ZXNzZWRQYXJ0ICE9IE5vUGFydCkKICAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhl
dnQucG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Np
dGlvbigpKS55KCkpOwogCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUoKS0+aGl0VGVz
dCh0aGlzLCBldnQucG9zaXRpb24oKSk7CisgICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUo
KS0+aGl0VGVzdCgqdGhpcywgZXZ0LnBvc2l0aW9uKCkpOwogICAgIGlmIChwYXJ0ICE9IG1faG92
ZXJlZFBhcnQpIHsKICAgICAgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KSB7CiAgICAg
ICAgICAgICBpZiAocGFydCA9PSBtX3ByZXNzZWRQYXJ0KSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIG1vdXNlIGlzIG1vdmluZyBiYWNrIG92ZXIgdGhlIHByZXNzZWQgcGFydC4gIFdlCiAgICAg
ICAgICAgICAgICAgLy8gbmVlZCB0byBzdGFydCB1cCB0aGUgdGltZXIgYWN0aW9uIGFnYWluLgog
ICAgICAgICAgICAgICAgIHN0YXJ0VGltZXJJZk5lZWRlZCh0aGVtZSgpLT5hdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpKTsKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlz
LCBtX3ByZXNzZWRQYXJ0KTsKKyAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFy
dCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1faG92ZXJl
ZFBhcnQgPT0gbV9wcmVzc2VkUGFydCkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBtb3VzZSBp
cyBsZWF2aW5nIHRoZSBwcmVzc2VkIHBhcnQuICBLaWxsIG91ciB0aW1lcgogICAgICAgICAgICAg
ICAgIC8vIGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgICBzdG9wVGltZXJJZk5lZWRlZCgpOwot
ICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIG1fcHJlc3NlZFBh
cnQpOworICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3By
ZXNzZWRQYXJ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAgCkBAIC0zOTEs
NyArMzkxLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogCiAgICAgLy8gbV9ob3ZlcmVkUGFydCB3b24ndCBiZSB1cGRhdGVk
IHVudGlsIHRoZSBuZXh0IG1vdXNlTW92ZWQgb3IgbW91c2VEb3duLCBzbyB3ZSBoYXZlIHRvIGhp
dCB0ZXN0CiAgICAgLy8gdG8gcmVhbGx5IGtub3cgaWYgdGhlIG1vdXNlIGhhcyBleGl0ZWQgdGhl
IHNjcm9sbGJhciBvbiBhIG1vdXNlVXAuCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUo
KS0+aGl0VGVzdCh0aGlzLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOworICAgIFNjcm9sbGJhclBh
cnQgcGFydCA9IHRoZW1lKCktPmhpdFRlc3QoKnRoaXMsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
CiAgICAgaWYgKHBhcnQgPT0gTm9QYXJ0KQogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLm1vdXNl
RXhpdGVkU2Nyb2xsYmFyKHRoaXMpOwogCkBAIC00MDQsMTggKzQwNCwxOCBAQCBib29sIFNjcm9s
bGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIGlmIChl
dnQuYnV0dG9uKCkgPT0gUmlnaHRCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhN
RTogSGFuZGxlZCBhcyBjb250ZXh0IG1lbnUgYnkgUXQgcmlnaHQgbm93LiAgU2hvdWxkIGp1c3Qg
YXZvaWQgZXZlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgcmlnaHQgY2xpY2sgdGhvdWdoLgog
Ci0gICAgc2V0UHJlc3NlZFBhcnQodGhlbWUoKS0+aGl0VGVzdCh0aGlzLCBldnQucG9zaXRpb24o
KSkpOworICAgIHNldFByZXNzZWRQYXJ0KHRoZW1lKCktPmhpdFRlc3QoKnRoaXMsIGV2dC5wb3Np
dGlvbigpKSk7CiAgICAgaW50IHByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigp
KS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7
CiAgICAgCi0gICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgbV9wcmVz
c2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRo
dW1iKHRoaXMsIGV2dCkpIHsKKyAgICBpZiAoKG1fcHJlc3NlZFBhcnQgPT0gQmFja1RyYWNrUGFy
dCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFja1BhcnQpICYmIHRoZW1lKCktPnNob3Vs
ZENlbnRlck9uVGh1bWIoKnRoaXMsIGV2dCkpIHsKICAgICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1
bWJQYXJ0KTsKICAgICAgICAgc2V0UHJlc3NlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgbV9k
cmFnT3JpZ2luID0gbV9jdXJyZW50UG9zOwotICAgICAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgp
LT50aHVtYkxlbmd0aCh0aGlzKTsKKyAgICAgICAgaW50IHRodW1iTGVuID0gdGhlbWUoKS0+dGh1
bWJMZW5ndGgoKnRoaXMpOwogICAgICAgICBpbnQgZGVzaXJlZFBvcyA9IHByZXNzZWRQb3M7CiAg
ICAgICAgIC8vIFNldCB0aGUgcHJlc3NlZCBwb3NpdGlvbiB0byB0aGUgbWlkZGxlIG9mIHRoZSB0
aHVtYiBzbyB0aGF0IHdoZW4gd2UgZG8gdGhlIG1vdmUsIHRoZSBkZWx0YQogICAgICAgICAvLyB3
aWxsIGJlIGZyb20gdGhlIGN1cnJlbnQgcGl4ZWwgcG9zaXRpb24gb2YgdGhlIHRodW1iIHRvIHRo
ZSBuZXcgZGVzaXJlZCBwb3NpdGlvbiBmb3IgdGhlIHRodW1iLgotICAgICAgICBtX3ByZXNzZWRQ
b3MgPSB0aGVtZSgpLT50cmFja1Bvc2l0aW9uKHRoaXMpICsgdGhlbWUoKS0+dGh1bWJQb3NpdGlv
bih0aGlzKSArIHRodW1iTGVuIC8gMjsKKyAgICAgICAgbV9wcmVzc2VkUG9zID0gdGhlbWUoKS0+
dHJhY2tQb3NpdGlvbigqdGhpcykgKyB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0aGlzKSArIHRo
dW1iTGVuIC8gMjsKICAgICAgICAgbW92ZVRodW1iKGRlc2lyZWRQb3MpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fcHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KQpAQCAt
NDMyLDcgKzQzMiw3IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRFbmFibGVkKGJvb2wgZSkKICAgICBp
ZiAobV9lbmFibGVkID09IGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBlOwot
ICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJsZWRTdGF0ZSh0aGlzKTsKKyAgICB0aGVtZSgpLT51cGRh
dGVFbmFibGVkU3RhdGUoKnRoaXMpOwogICAgIGludmFsaWRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggOTNhN2Q3N2YyZGRkMzhiMjIxNzU2
OGNiMDcxZmU0OGYzNjQxMmZmZS4uZDVlNWMwZTAxNWE4MDQyZjQwYzcwZjAzNDAyNmU2YTUwZTg0
MDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKK2NsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50OwogY2xhc3Mg
U2Nyb2xsVmlldzsKIApAQCAtNDYsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJU
aGVtZSgpIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lKCkge307CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9Owor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyJikgeyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFBvaW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAgdmlydHVhbCBib29sIHBhaW50
KFNjcm9sbGJhciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVj
dCovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0
KFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CiAgICAgCiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0g
UmVndWxhclNjcm9sbGJhcikgeyByZXR1cm4gMDsgfQogCkBAIC01OCwxMyArNTksMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVzZXNPdmVybGF5U2Nyb2xs
YmFyc0NoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCB0aGVtZUNoYW5nZWQoKSB7fQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25N
b3VzZUVudGVyRXhpdCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGludmFsaWRhdGVQ
YXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFy
dE1hc2sgbWFzaykKKyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXImIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIG1hc2spCiAgICAgewogICAgICAgICBpZiAobWFz
ayAmIEJhY2tCdXR0b25TdGFydFBhcnQpCiAgICAgICAgICAgICBpbnZhbGlkYXRlUGFydChzY3Jv
bGxiYXIsIEJhY2tCdXR0b25TdGFydFBhcnQpOwpAQCAtODIsMTIgKzgzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBh
cnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlUGFydChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0KSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihj
b250ZXh0LCBjb3JuZXJSZWN0KTsgfQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpIHsgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxi
YXImLCBjb25zdCBJbnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdB
cmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCkBAIC05NSwyMSArOTYsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRVcENv
bnRlbnRTaGFkb3dMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8g
VGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmly
dHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9
IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxi
YXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0
aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9s
bGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciYs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXImKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3Np
dGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgorICAgIHZpcnR1YWwgaW50
IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0
aGUgdGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGlu
dCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9u
IG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50
IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciYpIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0
aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KIAogICAgIHZpcnR1YWwg
aW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRp
bWVyRGVsYXkoKSB7IHJldHVybiAwLjI1OyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9s
bFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjA1OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCBhMGZl
Zjc0ZTBhOTY3YjUwZTdhYTVhYTFlMDUwYjJjNTc2YTFjN2JhLi44ZTJmODM1YzY3MzJkZTY0ZTA1
OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKKyNpbmNsdWRlICJTY3Jv
bGxiYXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkK
IHsKICAgICAvLyBDcmVhdGUgdGhlIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0
aGUgZGFtYWdlUmVjdAogICAgIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0g
Tm9QYXJ0OwpAQCAtMTA5LDE2ICsxMDksMTYgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb24KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24pCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRU
ZXN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAg
ICAgU2Nyb2xsYmFyUGFydCByZXN1bHQgPSBOb1BhcnQ7Ci0gICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICBJbnRQb2ludCB0ZXN0UG9zaXRpb24gPSBzY3JvbGxiYXItPmNvbnZlcnRG
cm9tQ29udGFpbmluZ1dpbmRvdyhwb3NpdGlvbik7Ci0gICAgdGVzdFBvc2l0aW9uLm1vdmUoc2Ny
b2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsKKyAgICBJbnRQb2ludCB0ZXN0UG9zaXRpb24g
PSBzY3JvbGxiYXIuY29udmVydEZyb21Db250YWluaW5nV2luZG93KHBvc2l0aW9uKTsKKyAgICB0
ZXN0UG9zaXRpb24ubW92ZShzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpKTsKICAgICAKLSAg
ICBpZiAoIXNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuY29udGFpbnModGVzdFBvc2l0aW9uKSkKKyAg
ICBpZiAoIXNjcm9sbGJhci5mcmFtZVJlY3QoKS5jb250YWlucyh0ZXN0UG9zaXRpb24pKQogICAg
ICAgICByZXR1cm4gTm9QYXJ0OwogCiAgICAgcmVzdWx0ID0gU2Nyb2xsYmFyQkdQYXJ0OwpAQCAt
MTQ4LDcgKzE0OCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Omhp
dFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXImIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjCiAg
ICAgICAgICAgICByZXN1bHQgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNjcm9sbGJhckJHUGFydDoKLSAgICAgICAgICAgIHJl
c3VsdCA9IHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CisgICAgICAgICAgICByZXN1bHQgPSBzY3Jv
bGxiYXIuZnJhbWVSZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDog
ewogICAgICAgICAgICAgSW50UmVjdCBiZWZvcmVUaHVtYlJlY3QsIHRodW1iUmVjdCwgYWZ0ZXJU
aHVtYlJlY3Q7CkBAIC0xODQsMTkgKzE4NCwxOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTYwog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRodW1iUmVjdDsKICAgICAgICAgfQogICAgIH0KLSAg
ICByZXN1bHQubW92ZUJ5KC1zY3JvbGxiYXItPmxvY2F0aW9uKCkpOwotICAgIHNjcm9sbGJhci0+
aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKKyAgICByZXN1bHQubW92ZUJ5KC1zY3JvbGxiYXIubG9j
YXRpb24oKSk7CisgICAgc2Nyb2xsYmFyLmludmFsaWRhdGVSZWN0KHJlc3VsdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50
UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVy
VGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3Jv
bGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwg
SW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFm
dGVyVGh1bWJSZWN0KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2Fs
bGVkIHVubGVzcyB3ZSdyZSBiaWcgZW5vdWdoIHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0
aGVzZSB0aHJlZSByZWN0cyB3aGVyZSBhdCBsZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5v
bi1lbXB0eS4KICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAgICBpbnQgdGhp
Y2tuZXNzID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBzY3JvbGxiYXItPmhlaWdodCgpIDogc2Nyb2xsYmFyLT53aWR0aCgpOworICAgIGludCB0aGlj
a25lc3MgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
c2Nyb2xsYmFyLmhlaWdodCgpIDogc2Nyb2xsYmFyLndpZHRoKCk7CiAgICAgaW50IHRodW1iUG9z
ID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICB0aHVtYlJlY3QgPSBJbnRS
ZWN0KHRyYWNrUmVjdC54KCkgKyB0aHVtYlBvcywgdHJhY2tSZWN0LnkoKSArICh0cmFja1JlY3Qu
aGVpZ2h0KCkgLSB0aGlja25lc3MpIC8gMiwgdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSwgdGhpY2tu
ZXNzKTsgCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpIHsKKyAgICAgICAgdGh1bWJSZWN0ID0gSW50UmVjdCh0cmFja1JlY3QueCgpICsgdGh1
bWJQb3MsIHRyYWNrUmVjdC55KCkgKyAodHJhY2tSZWN0LmhlaWdodCgpIC0gdGhpY2tuZXNzKSAv
IDIsIHRodW1iTGVuZ3RoKHNjcm9sbGJhciksIHRoaWNrbmVzcyk7CiAgICAgICAgIGJlZm9yZVRo
dW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSwgdHJhY2tSZWN0LnkoKSwgdGh1bWJQb3Mg
KyB0aHVtYlJlY3Qud2lkdGgoKSAvIDIsIHRyYWNrUmVjdC5oZWlnaHQoKSk7IAogICAgICAgICBh
ZnRlclRodW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSArIGJlZm9yZVRodW1iUmVjdC53
aWR0aCgpLCB0cmFja1JlY3QueSgpLCB0cmFja1JlY3QubWF4WCgpIC0gYmVmb3JlVGh1bWJSZWN0
Lm1heFgoKSwgdHJhY2tSZWN0LmhlaWdodCgpKTsKICAgICB9IGVsc2UgewpAQCAtMjA4LDMzICsy
MDgsMzMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdAogCiAvLyBSZXR1cm5zIHRoZSBzaXplIHJl
cHJlc2VudGVkIGJ5IHRyYWNrIHRha2luZyBpbnRvIGFjY291bnQgc2Nyb2xsaW5nIHBhc3QKIC8v
IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Lgotc3RhdGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXpl
KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG92ZXJoYW5nQXRTdGFydCA9IC1z
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKTsKLSAgICBmbG9hdCBvdmVyaGFuZ0F0RW5kID0gc2Nyb2xs
YmFyLT5jdXJyZW50UG9zKCkgKyBzY3JvbGxiYXItPnZpc2libGVTaXplKCkgLSBzY3JvbGxiYXIt
PnRvdGFsU2l6ZSgpOworICAgIGZsb2F0IG92ZXJoYW5nQXRTdGFydCA9IC1zY3JvbGxiYXIuY3Vy
cmVudFBvcygpOworICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBzY3JvbGxiYXIuY3VycmVudFBv
cygpICsgc2Nyb2xsYmFyLnZpc2libGVTaXplKCkgLSBzY3JvbGxiYXIudG90YWxTaXplKCk7CiAg
ICAgZmxvYXQgb3ZlcmhhbmcgPSBzdGQ6Om1heCgwLjBmLCBzdGQ6Om1heChvdmVyaGFuZ0F0U3Rh
cnQsIG92ZXJoYW5nQXRFbmQpKTsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSAr
IG92ZXJoYW5nOworICAgIHJldHVybiBzY3JvbGxiYXIudG90YWxTaXplKCkgKyBvdmVyaGFuZzsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKHNjcm9sbGJhci0+
ZW5hYmxlZCgpKSB7Ci0gICAgICAgIGZsb2F0IHNpemUgPSB1c2VkVG90YWxTaXplKHNjcm9sbGJh
cikgLSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CisgICAgaWYgKHNjcm9sbGJhci5lbmFibGVk
KCkpIHsKKyAgICAgICAgZmxvYXQgc2l6ZSA9IHVzZWRUb3RhbFNpemUoc2Nyb2xsYmFyKSAtIHNj
cm9sbGJhci52aXNpYmxlU2l6ZSgpOwogICAgICAgICAvLyBBdm9pZCBkb2luZyBhIGZsb2F0aW5n
IHBvaW50IGRpdmlkZSBieSB6ZXJvIGFuZCByZXR1cm4gMSB3aGVuIHVzZWRUb3RhbFNpemUgPT0g
dmlzaWJsZVNpemUuCiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBmbG9hdCBwb3MgPSBzdGQ6Om1heCgwLjBmLCBzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8g
c2l6ZTsKKyAgICAgICAgZmxvYXQgcG9zID0gc3RkOjptYXgoMC4wZiwgc2Nyb2xsYmFyLmN1cnJl
bnRQb3MoKSkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJh
cikpIC8gc2l6ZTsKICAgICAgICAgcmV0dXJuIChwb3MgPCAxICYmIHBvcyA+IDApID8gMSA6IHBv
czsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK2ludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7
Ci0gICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxvYXQgcHJvcG9ydGlvbiA9IHNjcm9s
bGJhci0+dmlzaWJsZVNpemUoKSAvIHVzZWRUb3RhbFNpemUoc2Nyb2xsYmFyKTsKKyAgICBmbG9h
dCBwcm9wb3J0aW9uID0gc2Nyb2xsYmFyLnZpc2libGVTaXplKCkgLyB1c2VkVG90YWxTaXplKHNj
cm9sbGJhcik7CiAgICAgaW50IHRyYWNrTGVuID0gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKTsKICAg
ICBpbnQgbGVuZ3RoID0gcm91bmQocHJvcG9ydGlvbiAqIHRyYWNrTGVuKTsKICAgICBsZW5ndGgg
PSBzdGQ6Om1heChsZW5ndGgsIG1pbmltdW1UaHVtYkxlbmd0aChzY3JvbGxiYXIpKTsKQEAgLTI0
MywyMSArMjQzLDIxIEBAIGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwogfQog
Ci1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIHNj
cm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOworICAgIHJldHVybiBz
Y3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihT
Y3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0
ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChz
Y3JvbGxiYXIpKTsKLSAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci0+
eCgpIDogY29uc3RyYWluZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CisgICAgcmV0
dXJuIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNv
bnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci54KCkgOiBjb25zdHJhaW5lZFRyYWNr
UmVjdC55KCkgLSBzY3JvbGxiYXIueSgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
ewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwotICAgIHJldHVy
biAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29u
c3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgp
OworICAgIHJldHVybiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QuaGVpZ2h0KCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50U2Ny
b2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4
dCogY28KICAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsK
ICAgICBpZiAoIWhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aAppbmRleCA0MDZmNTU4MThmZWE1NTZjZWMzZDg0ODRlMzBjYzY0NjA5MTU1MjM0Li43MGE3OWVm
MTcxNDU5Y2NhYjEzMGJkYzFmNDhlM2ZhMzgyZDhlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKQEAgLTM5LDM4ICszOSwzOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSA6IHB1
YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgLy8gSW1wbGVtZW50IFNjcm9sbGJh
clRoZW1lIGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAg
IHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0
aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwor
ICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBh
cnQgaGl0VGVzdChTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRP
dmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1i
KFNjcm9sbGJhciYpID0gMDsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwot
ICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgdGh1bWJSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJ
bnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwor
ICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmIHRy
YWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJh
Y2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFp
bnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNj
cm9sbGJhciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9sbGJhcihHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQmLCBTY3JvbGxiYXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0Jiwg
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAg
dmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAppbmRleCA4OTc0
NzI4MDY1ZmE1OTEyMTc2ZWU5Y2M1YTBmMzdiNGU0ZTlmOWFjLi40YTIzNTJmYWNjZDQ0YjAwNTlh
ODE2YTdmMDk3MzRkYWRiZTNiNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTY3JvbGxiYXJUaGlja25lc3MoaW50IHRoaWNrbmVzcykgeyBtX3Njcm9sbGJhclRoaWNr
bmVzcyA9IHRoaWNrbmVzczsgfQogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Nyb2xsYmFyVGhpY2tuZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBvdmVycmlk
ZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBv
dmVycmlkZSB7IH0KIHByaXZhdGU6CiAgICAgaW50IG1fc2Nyb2xsYmFyVGhpY2tuZXNzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3Bw
CmluZGV4IDhmY2JiMzJkMjMyZmNiNzE2ZjQ1NzZjZWUzZDBlZTBkYTQyYjUyNzQuLjlhMTUzZjZk
ZjBlMjRlNmI1ZGQ1ZGY2MzQ0MWIzOTI3YzFhNWU2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBT
Y3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKIHsKIH0KIAotYm9vbCBTY3Jv
bGxiYXJUaGVtZUd0azo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
ewogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3Qg
Y2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCkBAIC01OCw3ICs1
OCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiAjZW5kaWYKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICNp
Zm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFy
dCAmJiAhbV9oYXNCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTY2LDE4ICs2NiwxOCBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbAogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQgJiYg
IW1faGFzQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAot
ICAgIGludCB4ID0gc2Nyb2xsYmFyLT54KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOwotICAgIGlu
dCB5ID0gc2Nyb2xsYmFyLT55KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOworICAgIGludCB4ID0g
c2Nyb2xsYmFyLngoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGg7CisgICAgaW50IHkgPSBzY3JvbGxi
YXIueSgpICsgbV90cm91Z2hCb3JkZXJXaWR0aDsKICAgICBJbnRTaXplIHNpemUgPSBidXR0b25T
aXplKHNjcm9sbGJhcik7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
IAogICAgIC8vIEJhY2tCdXR0b25FbmRQYXJ0IChhbHRlcm5hdGUgYnV0dG9uKQotICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAg
cmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBtX3Ry
b3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLndpZHRoKCkpLCB5LCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKQorICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc2Ny
b2xsYmFyLndpZHRoKCkgLSBtX3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLndpZHRoKCkp
LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gVmVydGljYWxTY3Jv
bGxiYXIgYWx0ZXJuYXRlIGJ1dHRvbgotICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci0+
eSgpICsgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGggLSAoMiAqIHNp
emUuaGVpZ2h0KCkpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBJ
bnRSZWN0KHgsIHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkgLSBtX3Ryb3VnaEJv
cmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7CiAgICAgVU5VU0VEX1BB
UkFNKHBhcnQpOwpAQCAtODUsNyArODUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbAogI2Vu
ZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9o
YXNGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpAQCAtOTQsMjIgKzk0LDIyIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAgICBJbnRTaXplIHNp
emUgPSBidXR0b25TaXplKHNjcm9sbGJhcik7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIGludCB5ID0gc2Nyb2xsYmFy
LT55KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIGludCB5ID0gc2Nyb2xsYmFy
LnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGg7CiAgICAgICAgIGlmIChwYXJ0ID09IEZvcndhcmRC
dXR0b25FbmRQYXJ0KQotICAgICAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkg
KyBzY3JvbGxiYXItPndpZHRoKCkgLSBzaXplLndpZHRoKCkgLSBtX3Ryb3VnaEJvcmRlcldpZHRo
LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgcmV0dXJuIElu
dFJlY3Qoc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0gc2l6ZS53aWR0aCgpIC0g
bV90cm91Z2hCb3JkZXJXaWR0aCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAog
ICAgICAgICAvLyBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0IChhbHRlcm5hdGUgYnV0dG9uKQotICAg
ICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGgg
KyBzaXplLndpZHRoKCksIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6
ZS53aWR0aCgpLCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIH0KIAogICAg
IC8vIFZlcnRpY2FsU2Nyb2xsYmFyCi0gICAgaW50IHggPSBzY3JvbGxiYXItPngoKSArIG1fdHJv
dWdoQm9yZGVyV2lkdGg7CisgICAgaW50IHggPSBzY3JvbGxiYXIueCgpICsgbV90cm91Z2hCb3Jk
ZXJXaWR0aDsKICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCkKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0g
c2l6ZS5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGgsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci55KCkgKyBzY3Jv
bGxiYXIuaGVpZ2h0KCkgLSBzaXplLmhlaWdodCgpIC0gbV90cm91Z2hCb3JkZXJXaWR0aCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAogICAgIC8vIEZvcndhcmRCdXR0b25TdGFydFBh
cnQgKGFsdGVybmF0ZSBidXR0b24pCi0gICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55
KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIueSgpICsgbV90
cm91Z2hCb3JkZXJXaWR0aCArIHNpemUuaGVpZ2h0KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwogICAgIFVOVVNFRF9Q
QVJBTShwYXJ0KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTYwog
I2VuZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0
azo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sKQogewogI2lmbmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgogICAgIC8vIFRoZSBwYWRkaW5nIGFsb25nIHRoZSB0aHVtYiBtb3ZlbWVu
dCBheGlzIGluY2x1ZGVzIHRoZSB0cm91Z2ggYm9yZGVyCkBAIC0xMjYsNyArMTI2LDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGJvb2wpCiAgICAgaW50IG1vdmVtZW50QXhpc1BhZGRpbmcgPSBtX3Ryb3VnaEJv
cmRlcldpZHRoICsgbV9zdGVwcGVyU3BhY2luZzsKIAogICAgIC8vIFRoZSBmYXRuZXNzIG9mIHRo
ZSBzY3JvbGxiYXIgb24gdGhlIG5vbi1tb3ZlbWVudCBheGlzLgotICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKKyAgICBpbnQg
dGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKTsK
IAogICAgIGludCBzdGFydEJ1dHRvbnNPZmZzZXQgPSAwOwogICAgIGludCBidXR0b25zV2lkdGgg
PSAwOwpAQCAtMTQzLDE5ICsxNDMsMTkgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgaWYgKG1f
aGFzRm9yd2FyZEJ1dHRvbkVuZFBhcnQpCiAgICAgICAgIGJ1dHRvbnNXaWR0aCArPSBtX3N0ZXBw
ZXJTaXplOwogCi0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIpIHsKICAgICAgICAgLy8gT25jZSB0aGUgc2Nyb2xsYmFyIGJlY29tZXMgc21h
bGxlciB0aGFuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlCiAgICAgICAgIC8vIHR3byBidXR0b25z
LCB0aGUgdHJhY2sgZGlzYXBwZWFycy4KLSAgICAgICAgaWYgKHNjcm9sbGJhci0+d2lkdGgoKSA8
IDIgKiB0aGlja25lc3MpCisgICAgICAgIGlmIChzY3JvbGxiYXIud2lkdGgoKSA8IDIgKiB0aGlj
a25lc3MpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgICAgICByZXR1cm4gSW50
UmVjdChzY3JvbGxiYXItPngoKSArIG1vdmVtZW50QXhpc1BhZGRpbmcgKyBzdGFydEJ1dHRvbnNP
ZmZzZXQsIHNjcm9sbGJhci0+eSgpLAotICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXIt
PndpZHRoKCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRpbmcpIC0gYnV0dG9uc1dpZHRoLCB0aGlj
a25lc3MpOworICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpICsgbW92ZW1lbnRB
eGlzUGFkZGluZyArIHN0YXJ0QnV0dG9uc09mZnNldCwgc2Nyb2xsYmFyLnkoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsYmFyLndpZHRoKCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRp
bmcpIC0gYnV0dG9uc1dpZHRoLCB0aGlja25lc3MpOwogICAgIH0KIAotICAgIGlmIChzY3JvbGxi
YXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcykKKyAgICBpZiAoc2Nyb2xsYmFyLmhlaWdodCgp
IDwgMiAqIHRoaWNrbmVzcykKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICByZXR1cm4g
SW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyBtb3ZlbWVudEF4aXNQYWRk
aW5nICsgc3RhcnRCdXR0b25zT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywg
c2Nyb2xsYmFyLT5oZWlnaHQoKSAtICgyICogbW92ZW1lbnRBeGlzUGFkZGluZykgLSBidXR0b25z
V2lkdGgpOworICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCkg
KyBtb3ZlbWVudEF4aXNQYWRkaW5nICsgc3RhcnRCdXR0b25zT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLmhlaWdodCgpIC0gKDIgKiBtb3ZlbWVudEF4aXNQ
YWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY3JvbGxi
YXIpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxi
YXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotdHlwZWRlZiBIYXNoU2V0PFNjcm9sbGJhclRoZW1l
Q2xpZW50Kj4gU2Nyb2xsYmFyTWFwOwordHlwZWRlZiBIYXNoU2V0PFNjcm9sbGJhcio+IFNjcm9s
bGJhck1hcDsKIAogc3RhdGljIFNjcm9sbGJhck1hcCYgc2Nyb2xsYmFyTWFwKCkKIHsKQEAgLTIy
OSwxNCArMjI5LDE0IEBAIHN0YXRpYyBTY3JvbGxiYXJNYXAmIHNjcm9sbGJhck1hcCgpCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHNjcm9s
bGJhck1hcCgpLmFkZChzY3JvbGxiYXIpOworICAgIHNjcm9sbGJhck1hcCgpLmFkZCgmc2Nyb2xs
YmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKLSAgICBzY3JvbGxi
YXJNYXAoKS5yZW1vdmUoc2Nyb2xsYmFyKTsKKyAgICBzY3JvbGxiYXJNYXAoKS5yZW1vdmUoJnNj
cm9sbGJhcik7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNG
cmFtZVRoaWNrbmVzcygpCkBAIC0yNjEsMTEgKzI2MSwxMSBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjp1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKQogICAgIH0KIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCiB7CiAgICAgSW50UmVjdCB0cmFja1JlY3Qg
PSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdW5jb25zdHJhaW5l
ZFRyYWNrUmVjdCk7CiAgICAgaW50IHRodW1iUG9zID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIp
OwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikKICAgICAgICAgcmV0dXJuIEludFJlY3QodHJhY2tSZWN0LngoKSArIHRodW1iUG9zLCB0cmFj
a1JlY3QueSgpICsgKHRyYWNrUmVjdC5oZWlnaHQoKSAtIG1fdGh1bWJGYXRuZXNzKSAvIDIsIHRo
dW1iTGVuZ3RoKHNjcm9sbGJhciksIG1fdGh1bWJGYXRuZXNzKTsgCiAKICAgICAvLyBWZXJ0aWNh
bFNjcm9sbGJhcgpAQCAtMjg2LDg4ICsyODYsODggQEAgc3RhdGljIHZvaWQgYWRqdXN0UmVjdEFj
Y29yZGluZ1RvTWFyZ2luKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgR3RrU3RhdGVGbGFncwog
ICAgIHJlY3QuY29udHJhY3QobWFyZ2luLmxlZnQgKyBtYXJnaW4ucmlnaHQsIG1hcmdpbi50b3Ag
KyBtYXJnaW4uYm90dG9tKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxi
YXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUg
dHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBp
cyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9s
bGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKICAgICAvLyB0cmFj
ayByZWN0LgogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QocmVjdCk7CiAgICAgaWYgKG1f
dHJvdWdoVW5kZXJTdGVwcGVycykKLSAgICAgICAgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3Jv
bGxiYXItPmhlaWdodCgpKTsKKyAgICAgICAgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNj
cm9sbGJhci54KCksIHNjcm9sbGJhci55KCksIHNjcm9sbGJhci53aWR0aCgpLCBzY3JvbGxiYXIu
aGVpZ2h0KCkpOwogCiAgICAgR3RrU3R5bGVDb250ZXh0KiBzdHlsZUNvbnRleHQgPSBndGtTY3Jv
bGxiYXJTdHlsZUNvbnRleHQoKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKHN0eWxlQ29u
dGV4dCk7CiAKLSAgICBhcHBseVNjcm9sbGJhclN0eWxlQ29udGV4dENsYXNzZXMoc3R5bGVDb250
ZXh0LCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkpOworICAgIGFwcGx5U2Nyb2xsYmFyU3R5bGVD
b250ZXh0Q2xhc3NlcyhzdHlsZUNvbnRleHQsIHNjcm9sbGJhci5vcmllbnRhdGlvbigpKTsKICAg
ICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3Moc3R5bGVDb250ZXh0LCBHVEtfU1RZTEVfQ0xB
U1NfVFJPVUdIKTsKIAogICAgIGFkanVzdFJlY3RBY2NvcmRpbmdUb01hcmdpbihzdHlsZUNvbnRl
eHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KDApLCBmdWxsU2Nyb2xsYmFyUmVjdCk7Ci0g
ICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKHN0eWxlQ29udGV4dCwgY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJhclJlY3Qu
eSgpLCBmdWxsU2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5oZWlnaHQo
KSk7Ci0gICAgZ3RrX3JlbmRlcl9mcmFtZShzdHlsZUNvbnRleHQsIGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBmdWxsU2Nyb2xsYmFyUmVjdC54KCksIGZ1bGxTY3JvbGxiYXJSZWN0
LnkoKSwgZnVsbFNjcm9sbGJhclJlY3Qud2lkdGgoKSwgZnVsbFNjcm9sbGJhclJlY3QuaGVpZ2h0
KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChzdHlsZUNvbnRleHQsIGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJh
clJlY3QueSgpLCBmdWxsU2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShzdHlsZUNvbnRleHQsIGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIGZ1bGxTY3JvbGxiYXJSZWN0LngoKSwgZnVsbFNjcm9sbGJh
clJlY3QueSgpLCBmdWxsU2Nyb2xsYmFyUmVjdC53aWR0aCgpLCBmdWxsU2Nyb2xsYmFyUmVjdC5o
ZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKHN0eWxlQ29udGV4dCk7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
Cit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBHdGtTdHls
ZUNvbnRleHQqIHN0eWxlQ29udGV4dCA9IGd0a1Njcm9sbGJhclN0eWxlQ29udGV4dCgpOwogICAg
IGd0a19zdHlsZV9jb250ZXh0X3NhdmUoc3R5bGVDb250ZXh0KTsKIAotICAgIGFwcGx5U2Nyb2xs
YmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhzdHlsZUNvbnRleHQsIHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSk7CisgICAgYXBwbHlTY3JvbGxiYXJTdHlsZUNvbnRleHRDbGFzc2VzKHN0eWxlQ29udGV4
dCwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9j
bGFzcyhzdHlsZUNvbnRleHQsICJzY3JvbGxlZC13aW5kb3ciKTsKLSAgICBndGtfcmVuZGVyX2Zy
YW1lKHN0eWxlQ29udGV4dCwgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHNjcm9s
bGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxiYXIt
PmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKHN0eWxlQ29udGV4dCwgY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgc2Ny
b2xsYmFyLndpZHRoKCksIHNjcm9sbGJhci5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29u
dGV4dF9yZXN0b3JlKHN0eWxlQ29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEd0a1N0eWxlQ29udGV4dCogc3R5bGVD
b250ZXh0ID0gZ3RrU2Nyb2xsYmFyU3R5bGVDb250ZXh0KCk7CiAgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfc2F2ZShzdHlsZUNvbnRleHQpOwogCi0gICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24gPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCk7CisgICAgU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24gPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKTsKICAgICBhcHBseVNjcm9s
bGJhclN0eWxlQ29udGV4dENsYXNzZXMoc3R5bGVDb250ZXh0LCBvcmllbnRhdGlvbik7CiAgICAg
Z3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNT
X1NMSURFUik7CiAKICAgICBndWludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+cHJl
c3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgaWYgKHNjcm9sbGJhci5wcmVzc2VkUGFydCgp
ID09IFRodW1iUGFydCkKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwot
ICAgIGlmIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgIGlmIChz
Y3JvbGxiYXIuaG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCiAgICAgICAgIGZsYWdzIHw9IEdU
S19TVEFURV9GTEFHX1BSRUxJR0hUOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShz
dHlsZUNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CiAKICAgICBJ
bnRSZWN0IHRodW1iUmVjdChyZWN0KTsKICAgICBhZGp1c3RSZWN0QWNjb3JkaW5nVG9NYXJnaW4o
c3R5bGVDb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncyksIHRodW1iUmVj
dCk7Ci0gICAgZ3RrX3JlbmRlcl9zbGlkZXIoc3R5bGVDb250ZXh0LCBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgdGh1bWJSZWN0LngoKSwgdGh1bWJSZWN0LnkoKSwgdGh1bWJSZWN0
LndpZHRoKCksIHRodW1iUmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihzdHls
ZUNvbnRleHQsIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHRodW1iUmVjdC54KCks
IHRodW1iUmVjdC55KCksIHRodW1iUmVjdC53aWR0aCgpLCB0aHVtYlJlY3QuaGVpZ2h0KCksCiAg
ICAgICAgIG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gR1RLX09SSUVOVEFUSU9O
X1ZFUlRJQ0FMIDogR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogCiAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfcmVzdG9yZShzdHlsZUNvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKIHsKICAgICBHdGtTdHlsZUNvbnRleHQqIHN0eWxlQ29udGV4dCA9IGd0
a1Njcm9sbGJhclN0eWxlQ29udGV4dCgpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoc3R5
bGVDb250ZXh0KTsKIAotICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpOworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uID0gc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCk7CiAgICAgYXBwbHlTY3JvbGxiYXJTdHlsZUNv
bnRleHRDbGFzc2VzKHN0eWxlQ29udGV4dCwgb3JpZW50YXRpb24pOwogCiAgICAgZ3VpbnQgZmxh
Z3MgPSAwOwotICAgIGlmICgoQmFja0J1dHRvblN0YXJ0UGFydCA9PSBwYXJ0ICYmIHNjcm9sbGJh
ci0+Y3VycmVudFBvcygpKQotICAgICAgICB8fCAoQmFja0J1dHRvbkVuZFBhcnQgPT0gcGFydCAm
JiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSkKLSAgICAgICAgfHwgKEZvcndhcmRCdXR0b25FbmRQ
YXJ0ID09IHBhcnQgJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgIT0gc2Nyb2xsYmFyLT5tYXhp
bXVtKCkpCi0gICAgICAgIHx8IChGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ID09IHBhcnQgJiYgc2Ny
b2xsYmFyLT5jdXJyZW50UG9zKCkgIT0gc2Nyb2xsYmFyLT5tYXhpbXVtKCkpKSB7Ci0gICAgICAg
IGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKKyAgICBpZiAoKEJhY2tCdXR0
b25TdGFydFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3VycmVudFBvcygpKQorICAgICAgICB8
fCAoQmFja0J1dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3VycmVudFBvcygpKQor
ICAgICAgICB8fCAoRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXIuY3Vy
cmVudFBvcygpICE9IHNjcm9sbGJhci5tYXhpbXVtKCkpCisgICAgICAgIHx8IChGb3J3YXJkQnV0
dG9uU3RhcnRQYXJ0ID09IHBhcnQgJiYgc2Nyb2xsYmFyLmN1cnJlbnRQb3MoKSAhPSBzY3JvbGxi
YXIubWF4aW11bSgpKSkgeworICAgICAgICBpZiAocGFydCA9PSBzY3JvbGxiYXIucHJlc3NlZFBh
cnQoKSkKICAgICAgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKLSAgICAg
ICAgaWYgKHBhcnQgPT0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpKQorICAgICAgICBpZiAocGFy
dCA9PSBzY3JvbGxiYXIuaG92ZXJlZFBhcnQoKSkKICAgICAgICAgICAgIGZsYWdzIHw9IEdUS19T
VEFURV9GTEFHX1BSRUxJR0hUOwogICAgIH0gZWxzZQogICAgICAgICBmbGFncyB8PSBHVEtfU1RB
VEVfRkxBR19JTlNFTlNJVElWRTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoc3R5
bGVDb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCiAgICAgZ3Rr
X3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0JV
VFRPTik7Ci0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKHN0eWxlQ29udGV4dCwgY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKHN0eWxlQ29udGV4dCwgY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoc3R5bGVD
b250ZXh0LCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55
KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShz
dHlsZUNvbnRleHQsIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGdmbG9hdCBhcnJv
d1NjYWxpbmc7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKHN0eWxlQ29udGV4dCwg
ImFycm93LXNjYWxpbmciLCAmYXJyb3dTY2FsaW5nLCBudWxscHRyKTsKQEAgLTM4OSwxNCArMzg5
LDE0IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllCiAgICAgZWxzZQogICAgICAgICBhbmdsZSA9
IChwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0IHx8IHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0
YXJ0UGFydCkgPyBHX1BJIC8gMiA6IDMgKiAoR19QSSAvIDIpOwogCi0gICAgZ3RrX3JlbmRlcl9h
cnJvdyhzdHlsZUNvbnRleHQsIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmds
ZSwgYXJyb3dQb2ludC54KCksIGFycm93UG9pbnQueSgpLCBhcnJvd1NpemUpOworICAgIGd0a19y
ZW5kZXJfYXJyb3coc3R5bGVDb250ZXh0LCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCBhbmdsZSwgYXJyb3dQb2ludC54KCksIGFycm93UG9pbnQueSgpLCBhcnJvd1NpemUpOwogCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShzdHlsZUNvbnRleHQpOwogfQogCi1ib29sIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCkKIHsKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAg
aWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2Vk
IG9uIHRoZSBkYW1hZ2VSZWN0CkBAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250
ZXh0KgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBy
ZXR1cm4gKGV2ZW50LnNoaWZ0S2V5KCkgJiYgZXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikg
fHwgKGV2ZW50LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7CiB9CkBAIC00NzIsMTYgKzQ3Miwx
NiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSkKICAgICByZXR1cm4gbV90aHVtYkZhdG5lc3MgKyAobV90cm91Z2hCb3JkZXJX
aWR0aCAqIDIpOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lR3Rr
OjpidXR0b25TaXplKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGlmIChzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50U2l6
ZShtX3RodW1iRmF0bmVzcywgbV9zdGVwcGVyU2l6ZSk7CiAKICAgICAvLyBIb3Jpem9udGFsU2Ny
b2xsYmFyCiAgICAgcmV0dXJuIEludFNpemUobV9zdGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3Mp
OwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCopCitpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXImKQogewogICAgIHJldHVybiBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA4ZDg2
YTA5ZGU0Y2E3MTJiOWZhMTE3OGViOTBlMTk1NGJiOTdjMGU4Li41ZTliNGM3ZjBjYTExNzhhN2U3
MGRmNTE3NDgwY2E2MzA0ODU3MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyVGhlbWVHdGsuaApAQCAtMzYsMzMgKzM2LDMzIEBAIGNsYXNzIFNjcm9sbGJh
clRoZW1lR3RrIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUd0aygpOwogCi0gICAgdmlydHVhbCBib29sIGhhc0J1
dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBo
YXNCdXR0b25zKFNjcm9sbGJhciYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyJik7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCBm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wpOwogCiAjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCiAgICAgU2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIEludFJlY3Qg
dGh1bWJSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJh
aW5lZFRyYWNrUmVjdCk7Ci0gICAgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFp
bnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7Ci0gICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7CisgICAgYm9vbCBwYWlu
dChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBT
Y3JvbGxiYXImKTsKKyAgICB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBp
bnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKLSAgICB2aXJ0dWFs
IEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZpcnR1YWwg
aW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1
YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciYpOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXImKTsKIAogICAgIC8vIFRPRE86IFRoZXNlIGFyZSB0aGUg
ZGVmYXVsdCBHVEsrIHZhbHVlcy4gQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgcHVsbCB0aGVzZSBm
cm9tIHRoZSB0aGVtZSBpdHNlbGYuCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3Jv
bGxUaW1lckRlbGF5KCkgeyByZXR1cm4gMC4yMDsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9z
Y3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gMC4wMjsgfQogICAgIHZvaWQgdGhlbWVDaGFuZ2Vk
KCk7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKLSAgICB2b2lk
IHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdm9pZCByZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXImKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyJik7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZVRoZW1lUHJvcGVydGllcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1l
SU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaApp
bmRleCA1MTkyMTgyZjg4YzAxYzdmNTFhZjg5OWM0OGJjMzg5NWQ2ODk2Yzc0Li4xMmQzNDVmNjA3
MTUzMDA1YjJmN2RlM2UyM2FlZDZkMmRjMzNjNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAgICAgU2Nyb2xsYmFyVGhlbWVJT1MoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUlP
UygpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgb3ZlcnJp
ZGU7CiAgICAgCkBAIC00NiwyMCArNDYsMjAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3Jv
bGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNr
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9s
bGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJ
bnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVj
dChTY3JvbGxiYXImLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJy
aWRlOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CiAgICAgCiBwdWJsaWM6CiAgICAgdm9pZCBwcmVmZXJl
bmNlc0NoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxiYXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxi
YXJUaGVtZUlPUy5tbQppbmRleCBhMzc3NDUyNGQxYzgyYmJiZDk1ZmYzNzMzOGY0OTcyNDBhOWMw
MGZlLi5lZGMxYTU5NmFiOWRkZjllNmU1YjYzMmU4ZWZlOTAxOGYxZDcxYjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tCkBAIC00MSwx
MSArNDEsMTEgQEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgp
CiAgICAgcmV0dXJuICZ0aGVtZS5nZXQoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUlPUzo6
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQordm9pZCBTY3JvbGxiYXJU
aGVtZUlPUzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikKIHsKIH0KIAotdm9pZCBTY3Jv
bGxiYXJUaGVtZUlPUzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCop
Cit2b2lkIFNjcm9sbGJhclRoZW1lSU9TOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYp
CiB7CiB9CiAKQEAgLTgxLDQyICs4MSw0MiBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNj
cm9sbGJhclRoZW1lSU9TOjpidXR0b25zUGxhY2VtZW50KCkgY29uc3QKICAgICByZXR1cm4gU2Ny
b2xsYmFyQnV0dG9uc05vbmU7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVJT1M6Omhhc0J1dHRv
bnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQorYm9vbCBTY3JvbGxiYXJUaGVtZUlPUzo6aGFzQnV0
dG9ucyhTY3JvbGxiYXImKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZUlPUzo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQorYm9vbCBTY3JvbGxi
YXJUaGVtZUlPUzo6aGFzVGh1bWIoU2Nyb2xsYmFyJikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVJT1M6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8pCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lSU9TOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0
LCBib29sIC8qcGFpbnRpbmcqLykKIHsKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lSU9TOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUlPUzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCAvKnBhaW50aW5nKi8pCiB7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUlPUzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9v
bCAvKnBhaW50aW5nKi8pCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lSU9TOjp0cmFja1JlY3QoU2Ny
b2xsYmFyJiwgYm9vbCAvKnBhaW50aW5nKi8pCiB7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0K
IAotaW50IFNjcm9sbGJhclRoZW1lSU9TOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKQoraW50IFNjcm9sbGJhclRoZW1lSU9TOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyJikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUlPUzo6
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpCitib29sIFNjcm9sbGJhclRoZW1lSU9TOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpCiB7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lSU9TOjpwYWludChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVjdCovKQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUlPUzo6cGFpbnQoU2Nyb2xsYmFyJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0K
aW5kZXggMDJkMDhiZjc1YjAzYzU2OWZkMzVmYTQwYTgwODc2YjkwNTE2NTgzYS4uNzQzMjJkNmU2
MDY2NDRjN2RmZDdmZTdjYzU0NTI2ZTVjMTM3ZDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0
aWMgU2Nyb2xsYmFyVGhlbWVNYWMqIG1hY1Njcm9sbGJhclRoZW1lKCkKICAgICByZXR1cm4gIXNj
cm9sbGJhclRoZW1lLT5pc01vY2tUaGVtZSgpID8gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVN
YWMqPihzY3JvbGxiYXJUaGVtZSkgOiAwOwogfQogCi1zdGF0aWMgU2Nyb2xsYmFyUGFpbnRlciBz
Y3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGlj
IFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIm
IHNjcm9sbGJhcikKIHsKICAgICBpZiAoU2Nyb2xsYmFyVGhlbWVNYWMqIHNjcm9sbGJhclRoZW1l
ID0gbWFjU2Nyb2xsYmFyVGhlbWUoKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhclRoZW1lLT5w
YWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGlj
IE5TU2l6ZSBhYnMoTlNTaXplIHNpemUpCiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAgIHJl
dHVybiBOU1plcm9Qb2ludDsKIAotICAgIEFTU0VSVChzY3JvbGxlckltcCA9PSBzY3JvbGxiYXJQ
YWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcikpOworICAgIEFTU0VSVChzY3JvbGxlckltcCA9
PSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpKTsKIAogICAgIHJldHVy
biBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoV2ViQ29yZTo6SW50UG9pbnQo
cG9pbnRJbkNvbnRlbnRBcmVhKSk7CiB9CkBAIC0zMjMsNyArMzIzLDcgQEAgZW51bSBGZWF0dXJl
VG9BbmltYXRlIHsKIHsKICAgICBBU1NFUlQoX3Njcm9sbGJhcik7CiAKLSAgICBfc2Nyb2xsYmFy
UGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcik7CisgICAg
X3Njcm9sbGJhclBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpfc2Nyb2xs
YmFyKTsKIAogICAgIFtzdXBlciBzdGFydEFuaW1hdGlvbl07CiB9CkBAIC00NTIsNyArNDUyLDcg
QEAgZW51bSBGZWF0dXJlVG9BbmltYXRlIHsKICAgICBpZiAoIV9zY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBOU1plcm9Qb2ludDsKIAotICAgIEFTU0VSVF9VTlVTRUQoc2Nyb2xsZXJJbXAsIHNj
cm9sbGVySW1wID09IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcikpOwor
ICAgIEFTU0VSVF9VTlVTRUQoc2Nyb2xsZXJJbXAsIHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBh
aW50ZXJGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsKIAogICAgIHJldHVybiBfc2Nyb2xsYmFy
LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KF9zY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCku
bGFzdEtub3duTW91c2VQb3NpdGlvbigpKTsKIH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBlbnVtIEZl
YXR1cmVUb0FuaW1hdGUgewogICAgIH0KIAogICAgIGlmIChTY3JvbGxiYXJUaGVtZU1hYyogbWFj
VGhlbWUgPSBtYWNTY3JvbGxiYXJUaGVtZSgpKQotICAgICAgICBtYWNUaGVtZS0+c2V0UGFpbnRD
aGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcik7CisgICAgICAgIG1hY1RoZW1l
LT5zZXRQYWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcigqX3Njcm9sbGJhcik7CiAKICAg
ICBpZiAocGFydCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQgJiYgX3Njcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBpZiAobmV3QWxwaGEgPT0gMSkg
ewpAQCAtNTE5LDcgKzUxOSw3IEBAIGVudW0gRmVhdHVyZVRvQW5pbWF0ZSB7CiAgICAgaWYgKCFf
c2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoc2Nyb2xsZXJJbXAgPT0g
c2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihfc2Nyb2xsYmFyKSk7CisgICAgQVNTRVJUKHNj
cm9sbGVySW1wID09IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsK
IAogICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50
ZXIpc2Nyb2xsZXJJbXA7CiAgICAgaWYgKCFbc2VsZiBzY3JvbGxBbmltYXRvcl0tPnNjcm9sbGJh
cnNDYW5CZUFjdGl2ZSgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgZW51bSBGZWF0dXJlVG9Bbmlt
YXRlIHsKICAgICBpZiAoIV9zY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChzY3JvbGxlckltcCA9PSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKF9zY3JvbGxiYXIp
KTsKKyAgICBBU1NFUlQoc2Nyb2xsZXJJbXAgPT0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJh
cigqX3Njcm9sbGJhcikpOwogCiAgICAgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxlclBhaW50ZXIg
PSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlckltcDsKICAgICBbc2VsZiBzZXRVcEFscGhhQW5p
bWF0aW9uOl90cmFja0FscGhhQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50
ZXIgcGFydDpXZWJDb3JlOjpCYWNrVHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxw
aGEgZHVyYXRpb246ZHVyYXRpb25dOwpAQCAtNTU2LDcgKzU1Niw3IEBAIGVudW0gRmVhdHVyZVRv
QW5pbWF0ZSB7CiAgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBh
aW50ZXJGb3JTY3JvbGxiYXIoX3Njcm9sbGJhcikpOworICAgIEFTU0VSVChzY3JvbGxlckltcCA9
PSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpfc2Nyb2xsYmFyKSk7CiAKICAgICBTY3Jv
bGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIgPSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxl
ckltcDsKIApAQCAtNTkwLDcgKzU5MCw3IEBAIGVudW0gRmVhdHVyZVRvQW5pbWF0ZSB7CiAgICAg
aWYgKCFzdXBwb3J0c0V4cGFuc2lvblRyYW5zaXRpb25Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBU1NFUlQoc2Nyb2xsZXJJbXAgPT0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9s
bGJhcihfc2Nyb2xsYmFyKSk7CisgICAgQVNTRVJUKHNjcm9sbGVySW1wID09IHNjcm9sbGJhclBh
aW50ZXJGb3JTY3JvbGxiYXIoKl9zY3JvbGxiYXIpKTsKIAogICAgIFNjcm9sbGJhclBhaW50ZXIg
c2Nyb2xsYmFyUGFpbnRlciA9IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVySW1wOwogCkBAIC04
MzQsNyArODM0LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAogCiAgICAgaWYgKCFzdXBwb3J0c1VJU3Rh
dGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTY3JvbGxi
YXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJh
cikpCisgICAgaWYgKFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJG
b3JTY3JvbGxiYXIoKnNjcm9sbGJhcikpCiAgICAgICAgIFtwYWludGVyIG1vdXNlRW50ZXJlZFNj
cm9sbGVyXTsKIH0KIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAogCiAgICAg
aWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGlmIChTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcikpCisgICAgaWYgKFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9
IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcikpCiAgICAgICAgIFtwYWlu
dGVyIG1vdXNlRXhpdGVkU2Nyb2xsZXJdOwogfQogCkBAIC05NDksNyArOTQ5LDcgQEAgYm9vbCBT
Y3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIAogdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiB7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRl
ckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9
IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWlu
dGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yTWFjOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
IAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNj
cm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBTY3JvbGxiYXJQYWlu
dGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpOwog
ICAgIGlmICghcGFpbnRlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05ODEsNyArOTgxLDcgQEAg
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRBZGRIb3Jpem9u
dGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIFNjcm9sbGJhclBhaW50
ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAg
ICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVyRm9yU2Nyb2xsYmFy
KCpzY3JvbGxiYXIpOwogICAgIGlmICghcGFpbnRlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05
OTksNyArOTk5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6
d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0g
ICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJh
cihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBh
aW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWludGVyKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiB2b2lkIFNjcm9sbEFu
aW1hdG9yTWFjOjppbnZhbGlkYXRlU2Nyb2xsYmFyUGFydExheWVycyhTY3JvbGxiYXIqIHNjcm9s
bGJhcikKIHsKLSAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxiYXJQYWludGVy
Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0g
c2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcigqc2Nyb2xsYmFyKTsKICAgICBbcGFpbnRlciBz
ZXROZWVkc0Rpc3BsYXk6WUVTXTsKIH0KICNlbHNlCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yTWFjOjp2ZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCkKICAg
ICBpZiAoIXNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2Nyb2xsYmFyUGFpbnRl
ciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAg
IFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIo
KnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWludGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEw
NDQsNyArMTA0NCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Omhvcml6b250YWxTY3JvbGxi
YXJMYXllckRpZENoYW5nZSgpCiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhclBhaW50ZXJGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBzY3JvbGxi
YXJQYWludGVyRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpOwogICAgIGlmICghcGFpbnRlcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9y
TWFjOjpzaG91bGRTY3JvbGxiYXJQYXJ0aWNpcGF0ZUluSGl0VGVzdGluZyhTY3JvbGxiYXIqIHNj
cm9sbAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE92ZXJsYXkgc2Nyb2xsYmFycyBz
aG91bGQgcGFydGljaXBhdGUgaW4gaGl0IHRlc3Rpbmcgd2hlbmV2ZXIgdGhleSBhcmUgYXQgYWxs
IHZpc2libGUuCi0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gc2Nyb2xsYmFyUGFpbnRl
ckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9
IHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CiAgICAgaWYgKCFwYWlu
dGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFtwYWludGVyIGtub2JBbHBo
YV0gPiAwOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6dXBk
YXRlU2Nyb2xsZXJTdHlsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFs
Ok5PIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6b2xk
VmVydGljYWxQYWludGVyXTsKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIg
c2V0VmVydGljYWxTY3JvbGxlckltcDpuZXdWZXJ0aWNhbFBhaW50ZXJdOwotICAgICAgICBtYWNU
aGVtZS0+c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhciwgbmV3VmVy
dGljYWxQYWludGVyKTsKKyAgICAgICAgbWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JTY3JvbGxi
YXIoKnZlcnRpY2FsU2Nyb2xsYmFyLCBuZXdWZXJ0aWNhbFBhaW50ZXIpOwogCiAgICAgICAgIC8v
IFRoZSBkaWZmZXJlbnQgc2Nyb2xsYmFyIHN0eWxlcyBoYXZlIGRpZmZlcmVudCB0aGlja25lc3Nl
cywgc28gd2UgbXVzdCByZS1zZXQgdGhlIAogICAgICAgICAvLyBmcmFtZVJlY3QgdG8gdGhlIG5l
dyB0aGlja25lc3MsIGFuZCB0aGUgcmUtbGF5b3V0IGJlbG93IHdpbGwgZW5zdXJlIHRoZSBwb3Np
dGlvbgpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRl
U2Nyb2xsZXJTdHlsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOllF
UyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZ1Njcm9sbGVySW1wOm9sZEhv
cml6b250YWxQYWludGVyXTsKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIg
c2V0SG9yaXpvbnRhbFNjcm9sbGVySW1wOm5ld0hvcml6b250YWxQYWludGVyXTsKLSAgICAgICAg
bWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhciwg
bmV3SG9yaXpvbnRhbFBhaW50ZXIpOworICAgICAgICBtYWNUaGVtZS0+c2V0TmV3UGFpbnRlckZv
clNjcm9sbGJhcigqaG9yaXpvbnRhbFNjcm9sbGJhciwgbmV3SG9yaXpvbnRhbFBhaW50ZXIpOwog
CiAgICAgICAgIC8vIFRoZSBkaWZmZXJlbnQgc2Nyb2xsYmFyIHN0eWxlcyBoYXZlIGRpZmZlcmVu
dCB0aGlja25lc3Nlcywgc28gd2UgbXVzdCByZS1zZXQgdGhlIAogICAgICAgICAvLyBmcmFtZVJl
Y3QgdG8gdGhlIG5ldyB0aGlja25lc3MsIGFuZCB0aGUgcmUtbGF5b3V0IGJlbG93IHdpbGwgZW5z
dXJlIHRoZSBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaAppbmRleCBjM2MzZmU5NTc5MGQ4NTRjYzBlYWI2ZWVmMWVjYjg4MGMyMTU4
OGFmLi5kY2Q4NjE5ZWJjNDA1Y2U3MWUzNzZlYmY2YmI0ODFjMTEzY2FmYzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzcsMjkg
KzM3LDI5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIp
IG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlc092
ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QgIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1c2Vz
T3ZlcmxheVNjcm9sbGJhcnNDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopICBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJh
ciYpICBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRl
bGF5KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQg
YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYWludGVyKTsKLSAgICBTY3JvbGxiYXJQYWludGVyIHBh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHNldE5l
d1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFpbnRlcik7CisgICAg
U2Nyb2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYpOwogCi0gICAg
dm9pZCBzZXRQYWludENoYXJhY3RlcmlzdGljc0ZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCopOworICAgIHZvaWQgc2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoU2Ny
b2xsYmFyJik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIo
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7
CkBAIC03MywxOSArNzMsMTkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGludCBtYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkgb3ZlcnJpZGUgeyByZXR1cm4g
NDA7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKSBvdmVycmlkZTsKICAgICBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2Vk
U3RhdGUoU2Nyb2xsYmFyUGFydCk7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXgg
NjZkNjJmNDMzMzY2NmFjYWE3OTVjNWJmNGU3MjkxOTRkMjY3MWU5Zi4uMjY5N2UxYmJjNTI2Y2Ni
NDczZDk0MjdkNzIyNjg4OGM3OTkwYmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4+IFNjcm9s
bGJhclBhaW50ZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U2Nyb2xsYmFyKiwgUmV0YWluUHRyPFNj
cm9sbGJhclBhaW50ZXI+PiBTY3JvbGxiYXJQYWludGVyTWFwOwogCiBzdGF0aWMgU2Nyb2xsYmFy
UGFpbnRlck1hcCogc2Nyb2xsYmFyTWFwKCkKIHsKQEAgLTE1NCwzMyArMTU0LDMzIEBAIHN0YXRp
YyBOU0NvbnRyb2xTaXplIHNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKFNjcm9s
bGJhckNvbnRyb2xTaXplIGNvCiAgICAgcmV0dXJuIE5TUmVndWxhckNvbnRyb2xTaXplOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNDdXN0
b21TY3JvbGxiYXIoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBz
Y3JvbGxiYXJQYWludGVyID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcCIpIHNj
cm9sbGVySW1wV2l0aFN0eWxlOnJlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSgpIGNvbnRyb2xTaXpl
OnNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKHNjcm9sbGJhci0+Y29udHJvbFNp
emUoKSkgaG9yaXpvbnRhbDppc0hvcml6b250YWwgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6bmlsXTsK
LSAgICBzY3JvbGxiYXJNYXAoKS0+YWRkKHNjcm9sbGJhciwgc2Nyb2xsYmFyUGFpbnRlcik7Cisg
ICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyOworICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciA9IFtO
U0NsYXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXAiKSBzY3JvbGxlckltcFdpdGhTdHlsZTpy
ZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUoKSBjb250cm9sU2l6ZTpzY3JvbGxiYXJDb250cm9sU2l6
ZVRvTlNDb250cm9sU2l6ZShzY3JvbGxiYXIuY29udHJvbFNpemUoKSkgaG9yaXpvbnRhbDppc0hv
cml6b250YWwgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6bmlsXTsKKyAgICBzY3JvbGxiYXJNYXAoKS0+
YWRkKCZzY3JvbGxiYXIsIHNjcm9sbGJhclBhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0
ZShzY3JvbGxiYXIpOwogICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIp
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHNjcm9sbGJhck1h
cCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsKKyAgICBzY3JvbGxiYXJNYXAoKS0+cmVtb3ZlKCZzY3Jv
bGxiYXIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Ny
b2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIg
bmV3UGFpbnRlcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1BhaW50ZXJGb3JTY3Jv
bGxiYXIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikK
IHsKLSAgICBzY3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7CisgICAg
c2Nyb2xsYmFyTWFwKCktPnNldCgmc2Nyb2xsYmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVF
bmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsKICAgICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUo
c2Nyb2xsYmFyKTsKIH0KIAotU2Nyb2xsYmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFp
bnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQorU2Nyb2xs
YmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxi
YXImIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxi
YXIpLmdldCgpOworICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3JvbGxiYXIpLmdl
dCgpOwogfQogCiBzdGF0aWMgYm9vbCBnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllcjsKQEAg
LTI0MCwxMSArMjQwLDExIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVzZXNPdmVybGF5U2Ny
b2xsYmFyc0NoYW5nZWQoKQogICAgIGdVc2VzT3ZlcmxheVNjcm9sbGJhcnMgPSByZWNvbW1lbmRl
ZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5bGVPdmVybGF5OwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gcGFpbnRl
ckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwotICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSkgeworICAgIHN3aXRjaCAoc2Nyb2xsYmFyLnNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpKSB7CiAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OgogICAg
ICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6TlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwog
ICAgICAgICBicmVhazsKQEAgLTI3MywyNSArMjczLDI1IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFj
ZW1lbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogICAgIHJl
dHVybiBnQnV0dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNC
dXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBz
Y3JvbGxiYXItPmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Nyb2xsYmFyQnV0
dG9uc05vbmUKLSAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIKLSAgICAgICAgICAgICA/IHNjcm9sbGJhci0+d2lkdGgoKQotICAg
ICAgICAgICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0
aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0pOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIGJ1dHRv
bnNQbGFjZW1lbnQoKSAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZQorICAgICAgICAgICAgICYmIChz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCisgICAgICAgICAg
ICAgPyBzY3JvbGxiYXIud2lkdGgoKQorICAgICAgICAgICAgIDogc2Nyb2xsYmFyLmhlaWdodCgp
KSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSAtIGNC
dXR0b25IaXRJbnNldFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0pOwogfQogCi1ib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQor
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7
CiAgICAgaW50IG1pbkxlbmd0aEZvclRodW1iOwogCi0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWlu
dGVyID0gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOworICAgIFNjcm9sbGJh
clBhaW50ZXIgcGFpbnRlciA9IHNjcm9sbGJhck1hcCgpLT5nZXQoJnNjcm9sbGJhcikuZ2V0KCk7
CiAgICAgbWluTGVuZ3RoRm9yVGh1bWIgPSBbcGFpbnRlciBrbm9iTWluTGVuZ3RoXSArIFtwYWlu
dGVyIHRyYWNrT3ZlcmxhcEVuZEluc2V0XSArIFtwYWludGVyIGtub2JPdmVybGFwRW5kSW5zZXRd
CiAgICAgICAgICsgMiAqIChbcGFpbnRlciB0cmFja0VuZEluc2V0XSArIFtwYWludGVyIGtub2JF
bmRJbnNldF0pOwogCi0gICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAotICAgICAgICAgICAg
IHNjcm9sbGJhci0+d2lkdGgoKSA6IAotICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkp
ID49IG1pbkxlbmd0aEZvclRodW1iOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8KKyAgICAg
ICAgICAgICBzY3JvbGxiYXIud2lkdGgoKSA6CisgICAgICAgICAgICAgc2Nyb2xsYmFyLmhlaWdo
dCgpKSA+PSBtaW5MZW5ndGhGb3JUaHVtYjsKIH0KIAogc3RhdGljIEludFJlY3QgYnV0dG9uUmVw
YWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHN0YXJ0
KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNv
bnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJu
IHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTMyMiwzMSArMzIyLDMxIEBAIEludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIFNjcm9sCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQgJiYg
KGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9uZSB8fCBidXR0b25zUGxh
Y2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0IHx8IGJ1dHRvbnNQbGFjZW1l
bnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgCi0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCkpOworICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25l
c3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0
ID09IEJhY2tCdXR0b25TdGFydFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxi
YXJCdXR0b25zRG91YmxlU3RhcnQgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1
dHRvbnNEb3VibGVCb3RoKTsKICAgICBpZiAob3V0ZXJCdXR0b24pIHsKLSAgICAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICAg
ICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIGNPdXRl
ckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgKHBhaW50aW5nID8gY091
dGVyQnV0dG9uT3ZlcmxhcCA6IDApLCB0aGlja25lc3MpOworICAgICAgICBpZiAoc2Nyb2xsYmFy
Lm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIHJlc3Vs
dCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc2Nyb2xsYmFyLnkoKSwgY091dGVyQnV0dG9uTGVu
Z3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSArIChwYWludGluZyA/IGNPdXRlckJ1dHRvbk92
ZXJsYXAgOiAwKSwgdGhpY2tuZXNzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0
ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHRoaWNrbmVzcywgY091
dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAocGFpbnRpbmcgPyBj
T3V0ZXJCdXR0b25PdmVybGFwIDogMCkpOworICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChz
Y3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLCB0aGlja25lc3MsIGNPdXRlckJ1dHRvbkxlbmd0
aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0gKyAocGFpbnRpbmcgPyBjT3V0ZXJCdXR0b25PdmVy
bGFwIDogMCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICAvLyBP
dXIgcmVwYWludCByZWN0IGlzIHNsaWdodGx5IGxhcmdlciwgc2luY2Ugd2UgYXJlIGEgYnV0dG9u
IHRoYXQgaXMgYWRqYWNlbnQgdG8gdGhlIHRyYWNrLgotICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBpbnQgc3RhcnQgPSBw
YXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQgPyBzY3JvbGxiYXItPngoKSA6IHNjcm9sbGJhci0+
eCgpICsgc2Nyb2xsYmFyLT53aWR0aCgpIC0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07
Ci0gICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci0+eSgpLCBjQnV0dG9u
TGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CisgICAgaWYgKHNj
cm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAg
aW50IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLngoKSA6
IHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgoKSAtIGNPdXRlckJ1dHRvbkxlbmd0aFtz
Y3JvbGxiYXIuY29udHJvbFNpemUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9s
U2l6ZSgpXTsKKyAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLnkoKSwg
Y0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0
ID8gc2Nyb2xsYmFyLT55KCkgOiBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkg
LSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25M
ZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKLSAgICAgICAgcmVzdWx0ID0gSW50UmVj
dChzY3JvbGxiYXItPngoKSwgc3RhcnQsIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCldKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0
dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLnkoKSA6IHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIu
aGVpZ2h0KCkgLSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldIC0g
Y0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV07CisgICAgICAgIHJlc3VsdCA9
IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc3RhcnQsIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtz
Y3JvbGxiYXIuY29udHJvbFNpemUoKV0pOwogICAgIH0KICAgICAKICAgICBpZiAocGFpbnRpbmcp
Ci0gICAgICAgIHJldHVybiBidXR0b25SZXBhaW50UmVjdChyZXN1bHQsIHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSwgc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCBwYXJ0ID09IEJhY2tCdXR0b25T
dGFydFBhcnQpOworICAgICAgICByZXR1cm4gYnV0dG9uUmVwYWludFJlY3QocmVzdWx0LCBzY3Jv
bGxiYXIub3JpZW50YXRpb24oKSwgc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCksIHBhcnQgPT0gQmFj
a0J1dHRvblN0YXJ0UGFydCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsK
ICAgICAKQEAgLTM1Niw0NyArMzU2LDQ3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjCiAgICAg
aWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgp
ID09IFNjcm9sbGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxi
YXJCdXR0b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0
b25zU2luZ2xlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCi0gICAgaW50IHRo
aWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwot
ICAgIGludCBvdXRlckJ1dHRvbkxlbmd0aCA9IGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCldOwotICAgIGludCBidXR0b25MZW5ndGggPSBjQnV0dG9uTGVuZ3RoW3Nj
cm9sbGJhci0+Y29udHJvbFNpemUoKV07CisgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRo
aWNrbmVzcyhzY3JvbGxiYXIuY29udHJvbFNpemUoKSk7CisgICAgaW50IG91dGVyQnV0dG9uTGVu
Z3RoID0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXTsKKyAgICBp
bnQgYnV0dG9uTGVuZ3RoID0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV07
CiAgICAgCiAgICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBh
cnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kIHx8
IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlQm90aCk7CiAgICAg
aWYgKG91dGVyQnV0dG9uKSB7Ci0gICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChz
Y3JvbGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIG91dGVyQnV0dG9uTGVuZ3RoLCBz
Y3JvbGxiYXItPnkoKSwgb3V0ZXJCdXR0b25MZW5ndGgsIHRoaWNrbmVzcyk7CisgICAgICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci54KCkgKyBzY3JvbGxiYXIud2lkdGgo
KSAtIG91dGVyQnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXIueSgpLCBvdXRlckJ1dHRvbkxlbmd0aCwg
dGhpY2tuZXNzKTsKICAgICAgICAgICAgIGlmIChwYWludGluZykKICAgICAgICAgICAgICAgICBy
ZXN1bHQuaW5mbGF0ZVgoY091dGVyQnV0dG9uT3ZlcmxhcCk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnko
KSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBvdXRlckJ1dHRvbkxlbmd0aCwgdGhpY2tuZXNzLCBv
dXRlckJ1dHRvbkxlbmd0aCk7CisgICAgICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJh
ci54KCksIHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVpZ2h0KCkgLSBvdXRlckJ1dHRvbkxl
bmd0aCwgdGhpY2tuZXNzLCBvdXRlckJ1dHRvbkxlbmd0aCk7CiAgICAgICAgICAgICBpZiAocGFp
bnRpbmcpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmluZmxhdGVZKGNPdXRlckJ1dHRvbk92ZXJs
YXApOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewot
ICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ID8gc2Nyb2xs
YmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIt
PngoKSArIG91dGVyQnV0dG9uTGVuZ3RoOwotICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHN0YXJ0
LCBzY3JvbGxiYXItPnkoKSwgYnV0dG9uTGVuZ3RoLCB0aGlja25lc3MpOworICAgIGlmIChzY3Jv
bGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlu
dCBzdGFydCA9IHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXIueCgpICsg
c2Nyb2xsYmFyLndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIueCgpICsgb3V0ZXJC
dXR0b25MZW5ndGg7CisgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci55
KCksIGJ1dHRvbkxlbmd0aCwgdGhpY2tuZXNzKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnQg
c3RhcnQgPSBwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ID8gc2Nyb2xsYmFyLT55KCkgKyBz
Y3JvbGxiYXItPmhlaWdodCgpIC0gYnV0dG9uTGVuZ3RoIDogc2Nyb2xsYmFyLT55KCkgKyBvdXRl
ckJ1dHRvbkxlbmd0aDsKLSAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c3RhcnQsIHRoaWNrbmVzcywgYnV0dG9uTGVuZ3RoKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gcGFy
dCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCA/IHNjcm9sbGJhci55KCkgKyBzY3JvbGxiYXIuaGVp
Z2h0KCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXIueSgpICsgb3V0ZXJCdXR0b25MZW5ndGg7
CisgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLngoKSwgc3RhcnQsIHRoaWNrbmVz
cywgYnV0dG9uTGVuZ3RoKTsKICAgICB9CiAgICAgaWYgKHBhaW50aW5nKQotICAgICAgICByZXR1
cm4gYnV0dG9uUmVwYWludFJlY3QocmVzdWx0LCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCksIHNj
cm9sbGJhci0+Y29udHJvbFNpemUoKSwgcGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsK
KyAgICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLm9yaWVu
dGF0aW9uKCksIHNjcm9sbGJhci5jb250cm9sU2l6ZSgpLCBwYXJ0ID09IEZvcndhcmRCdXR0b25T
dGFydFBhcnQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBh
aW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogewogICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0
dG9ucyhzY3JvbGxiYXIpKQotICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsK
KyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci5mcmFtZVJlY3QoKTsKICAgICAKICAgICBJbnRSZWN0
IHJlc3VsdDsKLSAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJh
ci0+Y29udHJvbFNpemUoKSk7CisgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXIuY29udHJvbFNpemUoKSk7CiAgICAgaW50IHN0YXJ0V2lkdGggPSAwOwogICAg
IGludCBlbmRXaWR0aCA9IDA7Ci0gICAgaW50IG91dGVyQnV0dG9uTGVuZ3RoID0gY091dGVyQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07Ci0gICAgaW50IGJ1dHRvbkxlbmd0
aCA9IGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKKyAgICBpbnQgb3V0
ZXJCdXR0b25MZW5ndGggPSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXpl
KCldOworICAgIGludCBidXR0b25MZW5ndGggPSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250
cm9sU2l6ZSgpXTsKICAgICBpbnQgZG91YmxlQnV0dG9uTGVuZ3RoID0gb3V0ZXJCdXR0b25MZW5n
dGggKyBidXR0b25MZW5ndGg7CiAgICAgc3dpdGNoIChidXR0b25zUGxhY2VtZW50KCkpIHsKICAg
ICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlOgpAQCAtNDE4LDE5ICs0MTgsMTkgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnQKICAgICB9CiAgICAgCiAgICAgaW50IHRvdGFsV2lkdGgg
PSBzdGFydFdpZHRoICsgZW5kV2lkdGg7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxi
YXItPngoKSArIHN0YXJ0V2lkdGgsIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxiYXItPndpZHRoKCkg
LSB0b3RhbFdpZHRoLCB0aGlja25lc3MpOwotICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+
eCgpLCBzY3JvbGxiYXItPnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5o
ZWlnaHQoKSAtIHRvdGFsV2lkdGgpOworICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIu
eCgpICsgc3RhcnRXaWR0aCwgc2Nyb2xsYmFyLnkoKSwgc2Nyb2xsYmFyLndpZHRoKCkgLSB0b3Rh
bFdpZHRoLCB0aGlja25lc3MpOworICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNj
cm9sbGJhci55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWlnaHQoKSAt
IHRvdGFsV2lkdGgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1l
TWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdl
dChzY3JvbGxiYXIpIGtub2JNaW5MZW5ndGhdOworICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCkt
PmdldCgmc2Nyb2xsYmFyKSBrbm9iTWluTGVuZ3RoXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiti
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0g
TGVmdEJ1dHRvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM5LDcgKzQzOSw3IEBAIGJv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9yCiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Ny
b2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4g
ZXZlbnQuYWx0S2V5KCk7CiB9CkBAIC00NjIsMjUgKzQ2MiwyNSBAQCBpbnQgU2Nyb2xsYmFyVGhl
bWVNYWM6OnNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkK
ICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6
dXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIp
IHNldEVuYWJsZWQ6c2Nyb2xsYmFyLT5lbmFibGVkKCldOworICAgIFtzY3JvbGxiYXJNYXAoKS0+
Z2V0KCZzY3JvbGxiYXIpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLmVuYWJsZWQoKV07CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0
UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFBhaW50Q2hhcmFjdGVyaXN0aWNz
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBwYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcik7CiAKICAgICBmbG9hdCB2YWx1ZTsKICAgICBmbG9hdCBvdmVy
aGFuZzsKLSAgICBTY3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3Zlcmhh
bmcoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCksIHNjcm9sbGJhci0+dG90YWxTaXplKCksIHNjcm9s
bGJhci0+dmlzaWJsZVNpemUoKSwgdmFsdWUsIG92ZXJoYW5nKTsKLSAgICBmbG9hdCBwcm9wb3J0
aW9uID0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSA+IDAgPyAoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
c2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKSAtIG92ZXJoYW5nKSAvIHNjcm9sbGJhci0+dG90YWxT
aXplKCkgOiAxOworICAgIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRP
dmVyaGFuZyhzY3JvbGxiYXIuY3VycmVudFBvcygpLCBzY3JvbGxiYXIudG90YWxTaXplKCksIHNj
cm9sbGJhci52aXNpYmxlU2l6ZSgpLCB2YWx1ZSwgb3ZlcmhhbmcpOworICAgIGZsb2F0IHByb3Bv
cnRpb24gPSBzY3JvbGxiYXIudG90YWxTaXplKCkgPiAwID8gKHN0YXRpY19jYXN0PENHRmxvYXQ+
KHNjcm9sbGJhci52aXNpYmxlU2l6ZSgpKSAtIG92ZXJoYW5nKSAvIHNjcm9sbGJhci50b3RhbFNp
emUoKSA6IDE7CiAKLSAgICBbcGFpbnRlciBzZXRFbmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgp
XTsKLSAgICBbcGFpbnRlciBzZXRCb3VuZHNTaXplOnNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6
ZSgpXTsKKyAgICBbcGFpbnRlciBzZXRFbmFibGVkOnNjcm9sbGJhci5lbmFibGVkKCldOworICAg
IFtwYWludGVyIHNldEJvdW5kc1NpemU6c2Nyb2xsYmFyLmZyYW1lUmVjdCgpLnNpemUoKV07CiAg
ICAgW3BhaW50ZXIgc2V0RG91YmxlVmFsdWU6dmFsdWVdOwogI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpICYmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEwMDAKICAgICBbcGFpbnRlciBzZXRQcmVzZW50YXRpb25WYWx1ZTp2YWx1ZV07CkBA
IC01MDMsMTggKzUwMywxOCBAQCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnQoU2Ny
b2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQYWludGVyLCBib29sIGVuYWJsZQogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50
KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgc2V0UGFpbnRDaGFyYWN0ZXJpc3RpY3NGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKIAotICAgIGlmICghc2Nyb2xsYmFyLT5zdXBwb3J0c1VwZGF0ZU9u
U2Vjb25kYXJ5VGhyZWFkKCkpIHsKLSAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzQ3Vy
cmVudGx5RHJhd2luZ0ludG9MYXllcihnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllciwgY29u
dGV4dC0+aXNDQUxheWVyQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjcm9sbGJhci5zdXBwb3J0c1Vw
ZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkpIHsKKyAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+
IGlzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllcihnX2lzQ3VycmVudGx5RHJhd2luZ0ludG9MYXll
ciwgY29udGV4dC5pc0NBTGF5ZXJDb250ZXh0KCkpOwogICAgIAotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgICAgICBjb250ZXh0LT5j
bGlwKGRhbWFnZVJlY3QpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKS54KCksIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkueSgpKTsKLSAgICAgICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKLSAgICAgICAg
c2Nyb2xsYmFyUGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQo
KSwgc2Nyb2xsYmFyLT5lbmFibGVkKCkpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY2xpcChkYW1hZ2VSZWN0
KTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLngoKSwg
c2Nyb2xsYmFyLmZyYW1lUmVjdCgpLnkoKSk7CisgICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoJmNvbnRleHQpOworICAgICAgICBzY3JvbGxiYXJQYWludGVy
UGFpbnQoc2Nyb2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFyLmVu
YWJsZWQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggYjJmNjBhMWNj
NDA1YzY3YWZkOGE1Zjc4NDM3Yjg5ZWEzYzgyNjQ1Yi4uOTk1NDQ3YjU2ODAxMDM4Y2ZmZTMzMTU4
OWM3NzY0MGJjZmZjODE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgY1Njcm9sbGJhclRoaWNrbmVzc1tdID0geyAxNSwg
MTEgfTsKIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6
OnRyYWNrUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgYm9vbCkKIHsKLSAgICByZXR1cm4gc2Ny
b2xsYmFyLT5mcmFtZVJlY3QoKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLmZyYW1lUmVjdCgpOwog
fQogCiBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbFNpemUpCkBAIC00MiwxNSArNDIsMTUgQEAgaW50IFNjcm9sbGJh
clRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRy
b2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVjdCh0cmFj
a1JlY3QsIHNjcm9sbGJhci0+ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4
RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRy
YWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigw
eEZGRTBFMEUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3Jv
bGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3Jv
bGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewotICAgIGlmIChz
Y3JvbGxiYXItPmVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0
LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGlmIChzY3JvbGxi
YXIuZW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6
OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggYTUwMDQ0NGQ5
NDg2ZTg0ZTgxMmE5MTQ5OWIxNzgwN2E5ZWQxOTAyMC4uYzAwZmNhMzMxODRjYTY1Y2U2ZmE2NDI5
NzRhOWM0OTBmOGFiYzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5oCkBAIC0zMywyMiArMzMsMjIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gU2Nyb2xsYmFyIHRoZW1lIHVzZWQgaW4gaW1hZ2Ugc25hcHNob3RzLCB0byBlbGlt
aW5hdGUgYXBwZWFyYW5jZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHBsYXRmb3Jtcy4KIGNsYXNzIFNj
cm9sbGJhclRoZW1lTW9jayA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplID0gUmVndWxhclNjcm9sbGJhcik7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgb3ZlcnJpZGU7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNs
aWVudCopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciYpIG92ZXJyaWRlICB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7
IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBh
aW50aW5nKi8gPSBmYWxzZSkgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmly
dHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQs
IGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsg
fQorICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyJiwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBpbnQg
bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIG92ZXJyaWRlIHsgcmV0dXJuIDQwOyB9
CiAgICAgCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCAxY2M1Mzg1ZTE4N2Ey
MmVhZjFiMDU1ZTM0YmUwZmY2NDM4OTI5YjNkLi42YzkwYTljMmRkYjBhYzUwYzM3ODAyYTUzNDA0
MDMxMzc5ZDgyY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEwNCwxOCArMTA0LDE4IEBAIGludCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNv
bnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9u
cyhTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVk
KCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
Ci0gICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCi0gICAgICAgICAgICAgc2Nyb2xs
YmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwor
ICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxiYXIub3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICAgc2Nyb2xsYmFyLndpZHRo
KCkgOiAKKyAgICAgICAgICAgICBzY3JvbGxiYXIuaGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9s
bGJhci5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4g
c2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gCi0gICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCi0g
ICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIGNCdXR0b25JbnNldFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV0gKyAxOworICAgIHJldHVybiBzY3JvbGxiYXIuZW5hYmxlZCgpICYmIChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICAg
c2Nyb2xsYmFyLndpZHRoKCkgOiAKKyAgICAgICAgICAgICBzY3JvbGxiYXIuaGVpZ2h0KCkpID49
IDIgKiBjQnV0dG9uSW5zZXRbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldICsgY1RodW1iTWluTGVu
Z3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSArIDE7CiB9CiAKIHN0YXRpYyBJbnRSZWN0IGJ1
dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9v
bCBzdGFydCkKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50
UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAg
IHJldHVybiBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJh
Y2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJh
Y2tCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAKQEAgLTE0MiwxNyArMTQyLDE3
IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVu
ZFBhcnQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpbnQgdGhpY2tuZXNzID0gc2Ny
b2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7Ci0gICAgaWYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICByZXN1
bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgY0J1dHRvbkxlbmd0
aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MpOworICAgIGludCB0aGlja25l
c3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOworICAgIGlm
IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAg
ICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksIGNCdXR0b25M
ZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MpOwogICAgIGVsc2UKLSAg
ICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHRo
aWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKKyAgICAg
ICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLCB0aGlja25l
c3MsIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldKTsKICAgICBpZiAocGFp
bnRpbmcpCi0gICAgICAgIHJldHVybiBidXR0b25SZXBhaW50UmVjdChyZXN1bHQsIHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSwgc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLm9yaWVudGF0aW9u
KCksIHNjcm9sbGJhci5jb250cm9sU2l6ZSgpLCB0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFp
bnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQog
ewogICAgIEludFJlY3QgcmVzdWx0OwogICAgIApAQCAtMTYwLDEzICsxNjAsMTMgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwKICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJh
clRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgIGlmIChzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgcmVzdWx0ID0g
SW50UmVjdChzY3JvbGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIGNCdXR0b25MZW5n
dGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgc2Nyb2xsYmFyLT55KCksIGNCdXR0b25MZW5n
dGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKKyAgICBpbnQgdGhpY2tu
ZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgpKTsKKyAgICBp
ZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAg
ICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpICsgc2Nyb2xsYmFyLndpZHRoKCkgLSBj
QnV0dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSwgc2Nyb2xsYmFyLnkoKSwgY0J1
dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUoKV0sIHRoaWNrbmVzcyk7CiAgICAgZWxz
ZQotICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnko
KSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV0sIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCldKTsKKyAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIu
eSgpICsgc2Nyb2xsYmFyLmhlaWdodCgpIC0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJv
bFNpemUoKV0sIHRoaWNrbmVzcywgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIuY29udHJvbFNpemUo
KV0pOwogICAgIGlmIChwYWludGluZykKLSAgICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0
KHJlc3VsdCwgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpLCBzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCksIHNjcm9sbGJhci5jb250cm9sU2l6ZSgpLCBmYWxzZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTgxLDc0ICsxODEsNzQgQEAgc3RhdGljIEludFJl
Y3QgdHJhY2tSZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QsIFNjcm9sbGJhck9y
aWVudGF0aW9uIG8KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJh
clRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Ym9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChT
Y3JvbGxiYXImIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcg
fHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKLSAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJh
bWVSZWN0KCk7CisgICAgICAgIHJldHVybiBzY3JvbGxiYXIuZnJhbWVSZWN0KCk7CiAgICAgCiAg
ICAgSW50UmVjdCByZXN1bHQ7Ci0gICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgCi0gICAgICAgIHJldHVybiBJbnRSZWN0KHNj
cm9sbGJhci0+eCgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCBz
Y3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpIC0gMiAqIGNCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKLSAgICByZXR1cm4gSW50UmVjdChz
Y3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0sIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBjQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOworICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkpOworICAgIGlmIChz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSAKKyAgICAgICAg
cmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngoKSArIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNv
bnRyb2xTaXplKCldLCBzY3JvbGxiYXIueSgpLCBzY3JvbGxiYXIud2lkdGgoKSAtIDIgKiBjQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhci5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzKTsKKyAgICByZXR1
cm4gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpICsgY0J1dHRvbkxlbmd0aFtz
Y3JvbGxiYXIuY29udHJvbFNpemUoKV0sIHRoaWNrbmVzcywgc2Nyb2xsYmFyLmhlaWdodCgpIC0g
MiAqIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCldKTsKIH0KIAotaW50IFNj
cm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVu
Z3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhb
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKKyAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Nj
cm9sbGJhci5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAg
ICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJp
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBp
ZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47Ci0gICAgTlNDb250cm9s
U2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8g
TlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CisgICAgTlNDb250cm9s
U2l6ZSBzaXplID0gc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBO
U1NtYWxsQ29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRy
b2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFj
dGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXIuaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAg
ICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIp
KQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7Ci0gICAgcGFpbnRUaGVtZVBhcnQoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNr
UGFydCA6IEhTY3JvbGxUcmFja1BhcnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHRyYWNrUmVjdCwgc2l6ZSwgc3RhdGUpOyAKKyAgICBwYWludFRoZW1lUGFydChzY3JvbGxi
YXIub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IFZTY3JvbGxUcmFja1BhcnQg
OiBIU2Nyb2xsVHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHRy
YWNrUmVjdCwgc2l6ZSwgc3RhdGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2Fm
YXJpVGhlbWVMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBOU0NvbnRyb2xTaXplIHNp
emUgPSBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxs
Q29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKKyAgICBOU0NvbnRyb2xTaXplIHNp
emUgPSBzY3JvbGxiYXIuY29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxD
b250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRl
IHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkp
CisgICAgaWYgKHNjcm9sbGJhci5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0
YXRlIHw9IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAg
ICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKLSAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IHBhcnQpCisgICAgaWYgKHNjcm9sbGJhci5wcmVzc2VkUGFydCgpID09IHBhcnQpCiAg
ICAgICAgIHN0YXRlIHw9IFByZXNzZWRTdGF0ZTsKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
U3RhcnRQYXJ0KQotICAgICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBTY3JvbGxVcEFycm93UGFydCA6IFNjcm9sbExlZnRB
cnJvd1BhcnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCisgICAgICAgIHBh
aW50VGhlbWVQYXJ0KHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFy
ID8gU2Nyb2xsVXBBcnJvd1BhcnQgOiBTY3JvbGxMZWZ0QXJyb3dQYXJ0LCBncmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3Qs
IHNpemUsIHN0YXRlKTsKICAgICBlbHNlIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0
KQotICAgICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVy
dGljYWxTY3JvbGxiYXIgPyBTY3JvbGxEb3duQXJyb3dQYXJ0IDogU2Nyb2xsUmlnaHRBcnJvd1Bh
cnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCisgICAgICAgIHBhaW50VGhl
bWVQYXJ0KHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gU2Ny
b2xsRG93bkFycm93UGFydCA6IFNjcm9sbFJpZ2h0QXJyb3dQYXJ0LCBncmFwaGljc0NvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNp
emUsIHN0YXRlKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xs
YmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoIVNh
ZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47Ci0gICAgTlNDb250cm9sU2l6ZSBz
aXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFs
bENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CisgICAgTlNDb250cm9sU2l6ZSBz
aXplID0gc2Nyb2xsYmFyLmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxs
Q29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0
ZSBzdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgp
KQorICAgIGlmIChzY3JvbGxiYXIuaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBz
dGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAg
ICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwotICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0
KCkgPT0gVGh1bWJQYXJ0KQorICAgIGlmIChzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSA9PSBUaHVt
YlBhcnQpCiAgICAgICAgIHN0YXRlIHw9IFByZXNzZWRTdGF0ZTsKLSAgICBwYWludFRoZW1lUGFy
dChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xs
VGh1bWJQYXJ0IDogSFNjcm9sbFRodW1iUGFydCwgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSwgCisgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xsVGh1bWJQYXJ0IDogSFNjcm9sbFRodW1iUGFydCwg
Z3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAKICAgICAgICAgICAgICAgICAgICB0
aHVtYlJlY3QsIHNpemUsIHN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmNDI3YjE5MGZkNjc2NjUyMTU2
NzU2NmNiNmNiYzRkZmU0M2Q5OTI4Li4yMDkwNTMzNjQwMzQ1MGE1ZDExMDMyZmQ4NDYyOTBkMDc4
ZmI4ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFy
VGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFy
VGhlbWVTYWZhcmkuaApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCop
OwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpOworICAgIHZpcnR1YWwgYm9vbCBo
YXNUaHVtYihTY3JvbGxiYXImKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIm
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiwgU2Ny
b2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3Qm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFy
VGhlbWVXaW4uY3BwCmluZGV4IDNlZTBiYjMzOWE0NWU3NDQ5MzcxNmQyOTU3MWFkZjQ5MjU1ZmNh
Y2IuLjM4OTkwZDZkYzM4OGYyZWIwZmI1ODRhNTA3ZGIxNmFhYmRmYTQxYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMTI5
LDEyICsxMjksMTIgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9uTW91c2VF
bnRlckV4aXQoKQogICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Nyb2xsYmFy
VGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29s
IFNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICAg
ICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlm
IChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgU2Nyb2wKICAgICAvLyB3ZSBoYXZlIDwgMzQgcGl4ZWxzIGxlZnQuICBUaGlz
IGFsbG93cyB0aGUgc2Nyb2xsYmFyCiAgICAgLy8gdG8gc2NhbGUgZG93biBhbmQgZnVuY3Rpb24g
ZXZlbiBhdCB0aW55IHNpemVzLgogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25l
c3MoKTsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXIt
PnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHRo
aWNrbmVzcyA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiB0aGlja25lc3MsIHRoaWNrbmVzcyk7
Ci0gICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLAotICAg
ICAgICAgICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlj
a25lc3MgPyBzY3JvbGxiYXItPmhlaWdodCgpIC8gMiA6IHRoaWNrbmVzcyk7CisgICAgaWYgKHNj
cm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIHJl
dHVybiBJbnRSZWN0KHNjcm9sbGJhci54KCksIHNjcm9sbGJhci55KCksCisgICAgICAgICAgICAg
ICAgICAgICAgIHNjcm9sbGJhci53aWR0aCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci53
aWR0aCgpIC8gMiA6IHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKKyAgICByZXR1cm4gSW50UmVjdChz
Y3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpLAorICAgICAgICAgICAgICAgICAgIHRoaWNrbmVz
cywgc2Nyb2xsYmFyLmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci5oZWlnaHQo
KSAvIDIgOiB0aGlja25lc3MpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXImIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewog
ICAgIC8vIFdpbmRvd3MganVzdCBoYXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBG
b3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpAQCAtMTY1LDc1ICsxNjUsNzUgQEAgSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2MKICAgICAvLyB3ZSBoYXZlIDwgMzQgcGl4ZWxzIGxlZnQuICBUaGlzIGFsbG93
cyB0aGUgc2Nyb2xsYmFyCiAgICAgLy8gdG8gc2NhbGUgZG93biBhbmQgZnVuY3Rpb24gZXZlbiBh
dCB0aW55IHNpemVzLgogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsK
LSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIp
IHsKLSAgICAgICAgaW50IHcgPSBzY3JvbGxiYXItPndpZHRoKCkgPCAyICogdGhpY2tuZXNzID8g
c2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHRoaWNrbmVzczsKLSAgICAgICAgcmV0dXJuIEludFJl
Y3Qoc2Nyb2xsYmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSB3LCBzY3JvbGxiYXItPnko
KSwgdywgdGhpY2tuZXNzKTsKKyAgICBpZiAoc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICBpbnQgdyA9IHNjcm9sbGJhci53aWR0aCgpIDwg
MiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci53aWR0aCgpIC8gMiA6IHRoaWNrbmVzczsKKyAgICAg
ICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngoKSArIHNjcm9sbGJhci53aWR0aCgpIC0gdywg
c2Nyb2xsYmFyLnkoKSwgdywgdGhpY2tuZXNzKTsKICAgICB9CiAgICAgCi0gICAgaW50IGggPSBz
Y3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkg
LyAyIDogdGhpY2tuZXNzOwotICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3Jv
bGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBoLCB0aGlja25lc3MsIGgpOworICAg
IGludCBoID0gc2Nyb2xsYmFyLmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci5o
ZWlnaHQoKSAvIDIgOiB0aGlja25lc3M7CisgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngo
KSwgc2Nyb2xsYmFyLnkoKSArIHNjcm9sbGJhci5oZWlnaHQoKSAtIGgsIHRoaWNrbmVzcywgaCk7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJh
Y2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29sKQogewogICAgIGludCB0aGlja25lc3Mg
PSBzY3JvbGxiYXJUaGlja25lc3MoKTsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhci0+d2lkdGgo
KSA8IDIgKiB0aGlja25lc3MpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGJhci53aWR0aCgpIDwgMiAq
IHRoaWNrbmVzcykKICAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgICAgIHJldHVy
biBJbnRSZWN0KHNjcm9sbGJhci0+eCgpICsgdGhpY2tuZXNzLCBzY3JvbGxiYXItPnkoKSwgc2Ny
b2xsYmFyLT53aWR0aCgpIC0gMiAqIHRoaWNrbmVzcywgdGhpY2tuZXNzKTsKKyAgICAgICAgcmV0
dXJuIEludFJlY3Qoc2Nyb2xsYmFyLngoKSArIHRoaWNrbmVzcywgc2Nyb2xsYmFyLnkoKSwgc2Ny
b2xsYmFyLndpZHRoKCkgLSAyICogdGhpY2tuZXNzLCB0aGlja25lc3MpOwogICAgIH0KLSAgICBp
ZiAoc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MpCisgICAgaWYgKHNjcm9sbGJh
ci5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0g
ICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdGhpY2tu
ZXNzLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogdGhpY2tuZXNzKTsKKyAg
ICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpICsgdGhpY2tuZXNz
LCB0aGlja25lc3MsIHNjcm9sbGJhci5oZWlnaHQoKSAtIDIgKiB0aGlja25lc3MpOwogfQogCi1i
b29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRo
ZW1lV2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9u
KCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRT
bmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCiB7CiAgICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ug
c2hvdWxkbid0IHNuYXAsIGJ5IGV4cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJv
dGggZGltZW5zaW9ucy4KICAgICBJbnRSZWN0IHJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyKTsK
LSAgICBjb25zdCBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcjsKLSAgICBjb25zdCBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tu
ZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CisgICAgY29uc3QgYm9vbCBob3J6ID0gc2Ny
b2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBjb25zdCBp
bnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci5jb250cm9sU2l6ZSgp
KTsKICAgICByZWN0LmluZmxhdGVYKChob3J6ID8ga09mZkVuZE11bHRpcGxpZXIgOiBrT2ZmU2lk
ZU11bHRpcGxpZXIpICogdGhpY2tuZXNzKTsKICAgICByZWN0LmluZmxhdGVZKChob3J6ID8ga09m
ZlNpZGVNdWx0aXBsaWVyIDoga09mZkVuZE11bHRpcGxpZXIpICogdGhpY2tuZXNzKTsKIAogICAg
IC8vIENvbnZlcnQgdGhlIGV2ZW50IHRvIGxvY2FsIGNvb3JkaW5hdGVzLgotICAgIEludFBvaW50
IG1vdXNlUG9zaXRpb24gPSBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhl
dnQucG9zaXRpb24oKSk7Ci0gICAgbW91c2VQb3NpdGlvbi5tb3ZlKHNjcm9sbGJhci0+eCgpLCBz
Y3JvbGxiYXItPnkoKSk7CisgICAgSW50UG9pbnQgbW91c2VQb3NpdGlvbiA9IHNjcm9sbGJhci5j
b252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOworICAgIG1vdXNlUG9z
aXRpb24ubW92ZShzY3JvbGxiYXIueCgpLCBzY3JvbGxiYXIueSgpKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBzbmFwIGlmZiB0aGUgZXZlbnQgaXMgb3V0c2lkZSBvdXIgY2FsY3VsYXRlZCByZWN0Lgog
ICAgIHJldHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3Jv
bGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkg
cGFpbnQgdGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIu
CiAgICAgaWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2Uo
Y29udGV4dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNoZWNr
QW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKICAgICBib29sIHN0YXJ0ID0gcGFydFR5cGUgPT0g
QmFja1RyYWNrUGFydDsKICAgICBpbnQgcGFydDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCisgICAgaWYgKHNjcm9sbGJhci5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIHBhcnQgPSBzdGFydCA/IFNQ
X1RSQUNLU1RBUlRIT1IgOiBTUF9UUkFDS0VOREhPUjsKICAgICBlbHNlCiAgICAgICAgIHBhcnQg
PSBzdGFydCA/IFNQX1RSQUNLU1RBUlRWRVJUIDogU1BfVFJBQ0tFTkRWRVJUOwogCiAgICAgaW50
IHN0YXRlOwotICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCisgICAgaWYgKCFzY3JvbGxi
YXIuZW5hYmxlZCgpKQogICAgICAgICBzdGF0ZSA9IFRTX0RJU0FCTEVEOwotICAgIGVsc2UgaWYg
KChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gQmFja1RyYWNrUGFydCAmJiBzdGFydCkgfHwK
LSAgICAgICAgICAgICAoc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IEZvcndhcmRUcmFja1Bh
cnQgJiYgIXN0YXJ0KSkKLSAgICAgICAgc3RhdGUgPSAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgp
ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA/IFRTX0FDVElWRSA6IFRTX0hPVkVSKTsKKyAg
ICBlbHNlIGlmICgoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gQmFja1RyYWNrUGFydCAmJiBz
dGFydCkgfHwKKyAgICAgICAgICAgICAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gRm9yd2Fy
ZFRyYWNrUGFydCAmJiAhc3RhcnQpKQorICAgICAgICBzdGF0ZSA9IChzY3JvbGxiYXIucHJlc3Nl
ZFBhcnQoKSA9PSBzY3JvbGxiYXIuaG92ZXJlZFBhcnQoKSA/IFRTX0FDVElWRSA6IFRTX0hPVkVS
KTsKICAgICBlbHNlCiAgICAgICAgIHN0YXRlID0gVFNfTk9STUFMOwogCkBAIC0yNDEsNyArMjQx
LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWUKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAg
ICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50
KHNjcm9sbGJhclRoZW1lLCBwYXJ0LCBzdGF0ZSk7CiAKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0
IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOworICAgIExvY2FsV2lu
ZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwog
ICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogCiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQpAQCAt
MjY3LDM5ICsyNjcsMzkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWUKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmICghYWxwaGFCbGVuZCAmJiAhY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxh
eWVyKCkpCisgICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lM
YXllcigpKQogICAgICAgICBESUJQaXhlbERhdGE6OnNldFJHQkFCaXRtYXBBbHBoYSh3aW5kb3dz
Q29udGV4dC5oZGMoKSwgcmVjdCwgMjU1KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2
b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQ
YXJ0IHBhcnQpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIAogICAgIGJv
b2wgc3RhcnQgPSAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBpbnQgeHBTdGF0
ZSA9IDA7CiAgICAgaW50IGNsYXNzaWNTdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICB4cFN0YXRlID0gc3Rh
cnQgPyBUU19MRUZUX0JVVFRPTiA6IFRTX1JJR0hUX0JVVFRPTjsKICAgICBlbHNlCiAgICAgICAg
IHhwU3RhdGUgPSBzdGFydCA/IFRTX1VQX0JVVFRPTiA6IFRTX0RPV05fQlVUVE9OOwogICAgIGNs
YXNzaWNTdGF0ZSA9IHhwU3RhdGUgLyA0OwogCi0gICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQo
KSkgeworICAgIGlmICghc2Nyb2xsYmFyLmVuYWJsZWQoKSkgewogICAgICAgICB4cFN0YXRlICs9
IFRTX0RJU0FCTEVEOwogICAgICAgICBjbGFzc2ljU3RhdGUgfD0gREZDU19JTkFDVElWRTsKLSAg
ICB9IGVsc2UgaWYgKChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gQmFja0J1dHRvblN0YXJ0
UGFydCAmJiBzdGFydCkgfHwKLSAgICAgICAgICAgICAgIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0
KCkgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgIXN0YXJ0KSkgewotICAgICAgICBpZiAoc2Ny
b2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkgeworICAg
IH0gZWxzZSBpZiAoKHNjcm9sbGJhci5ob3ZlcmVkUGFydCgpID09IEJhY2tCdXR0b25TdGFydFBh
cnQgJiYgc3RhcnQpIHx8CisgICAgICAgICAgICAgICAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkg
PT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgIXN0YXJ0KSkgeworICAgICAgICBpZiAoc2Nyb2xs
YmFyLnByZXNzZWRQYXJ0KCkgPT0gc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkpIHsKICAgICAgICAg
ICAgIHhwU3RhdGUgKz0gVFNfQUNUSVZFOwogICAgICAgICAgICAgY2xhc3NpY1N0YXRlIHw9IERG
Q1NfUFVTSEVEOwogICAgICAgICAgICAgY2xhc3NpY1N0YXRlIHw9IERGQ1NfRkxBVDsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICB4cFN0YXRlICs9IFRTX0hPVkVSOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gTm9QYXJ0IHx8ICFydW5u
aW5nVmlzdGEpCisgICAgICAgIGlmIChzY3JvbGxiYXIuaG92ZXJlZFBhcnQoKSA9PSBOb1BhcnQg
fHwgIXJ1bm5pbmdWaXN0YSkKICAgICAgICAgICAgIHhwU3RhdGUgKz0gVFNfTk9STUFMOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIGlmIChzY3JvbGxiYXIub3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICAgICAgICAgIHhwU3RhdGUgPSBz
dGFydCA/IFRTX0xFRlRfQlVUVE9OX0hPVkVSIDogVFNfUklHSFRfQlVUVE9OX0hPVkVSOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHhwU3RhdGUgPSBzdGFydCA/IFRTX1VQX0JV
VFRPTl9IT1ZFUiA6IFRTX0RPV05fQlVUVE9OX0hPVkVSOwpAQCAtMzEwLDE0ICszMTAsMTQgQEAg
dm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWUKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAg
IGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9s
bGJhclRoZW1lLCBTUF9CVVRUT04sIHhwU3RhdGUpOwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4
dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBMb2NhbFdp
bmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsK
ICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAg
ICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xsYmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0Lmhk
YygpLCBTUF9CVVRUT04sIHhwU3RhdGUsICZ0aGVtZVJlY3QsIDApOwogICAgIGVsc2UKICAgICAg
ICAgOjpEcmF3RnJhbWVDb250cm9sKHdpbmRvd3NDb250ZXh0LmhkYygpLCAmdGhlbWVSZWN0LCBE
RkNfU0NST0xMLCBjbGFzc2ljU3RhdGUpOwogCi0gICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250
ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhhQmxlbmQgJiYgIWNv
bnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBpeGVsRGF0YTo6c2V0
UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCByZWN0LCAyNTUpOwogfQogCkBA
IC0zMzAsNTEgKzMzMCw1MSBAQCBzdGF0aWMgSW50UmVjdCBncmlwcGVyUmVjdChpbnQgdGhpY2tu
ZXNzLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAgICAgICAgICAgICAgICAgICAgZ3JpcHBl
clRoaWNrbmVzcywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50R3Jp
cHBlcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciYgc2Nyb2xsYmFy
LCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghc2Nyb2xsYmFyVGhl
bWUpCiAgICAgICAgIHJldHVybjsgIC8vIENsYXNzaWMgbG9vayBoYXMgbm8gZ3JpcHBlci4KICAg
IAogICAgIGludCBzdGF0ZTsKLSAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQorICAgIGlm
ICghc2Nyb2xsYmFyLmVuYWJsZWQoKSkKICAgICAgICAgc3RhdGUgPSBUU19ESVNBQkxFRDsKLSAg
ICBlbHNlIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgIGVs
c2UgaWYgKHNjcm9sbGJhci5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKICAgICAgICAgc3Rh
dGUgPSBUU19BQ1RJVkU7IC8vIFRodW1iIGFsd2F5cyBzdGF5cyBhY3RpdmUgb25jZSBwcmVzc2Vk
LgotICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisg
ICAgZWxzZSBpZiAoc2Nyb2xsYmFyLmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAg
ICBzdGF0ZSA9IFRTX0hPVkVSOwogICAgIGVsc2UKICAgICAgICAgc3RhdGUgPSBUU19OT1JNQUw7
CiAKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKLSAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNj
cm9sbGJhclRoZW1lLCBoZGMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1l
UmVjdCwgMCk7CisgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBz
Y3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBF
UkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGNoZWNr
QW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKICAgICBpbnQgc3RhdGU7Ci0gICAgaWYgKCFzY3Jv
bGxiYXItPmVuYWJsZWQoKSkKKyAgICBpZiAoIXNjcm9sbGJhci5lbmFibGVkKCkpCiAgICAgICAg
IHN0YXRlID0gVFNfRElTQUJMRUQ7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IFRodW1iUGFydCkKKyAgICBlbHNlIGlmIChzY3JvbGxiYXIucHJlc3NlZFBhcnQoKSA9
PSBUaHVtYlBhcnQpCiAgICAgICAgIHN0YXRlID0gVFNfQUNUSVZFOyAvLyBUaHVtYiBhbHdheXMg
c3RheXMgYWN0aXZlIG9uY2UgcHJlc3NlZC4KLSAgICBlbHNlIGlmIChzY3JvbGxiYXItPmhvdmVy
ZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgIGVsc2UgaWYgKHNjcm9sbGJhci5ob3ZlcmVkUGFy
dCgpID09IFRodW1iUGFydCkKICAgICAgICAgc3RhdGUgPSBUU19IT1ZFUjsKICAgICBlbHNlCiAg
ICAgICAgIHN0YXRlID0gVFNfTk9STUFMOwogCiAgICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7
CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQotICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJh
Y2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RI
VU1CVkVSVCwgc3RhdGUpOwotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQo
Y29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7CisgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1l
QmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBzY3JvbGxiYXIu
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9U
SFVNQlZFUlQsIHN0YXRlKTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0
KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsK
ICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpIHsKLSAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChz
Y3JvbGxiYXJUaGVtZSwgd2luZG93c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQs
IHN0YXRlLCAmdGhlbWVSZWN0LCAwKTsKKyAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3Jv
bGxiYXJUaGVtZSwgd2luZG93c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3Rh
dGUsICZ0aGVtZVJlY3QsIDApOwogICAgICAgICBwYWludEdyaXBwZXIoc2Nyb2xsYmFyLCB3aW5k
b3dzQ29udGV4dC5oZGMoKSwgZ3JpcHBlclJlY3Qoc2Nyb2xsYmFyVGhpY2tuZXNzKCksIHJlY3Qp
KTsKICAgICB9IGVsc2UKICAgICAgICAgOjpEcmF3RWRnZSh3aW5kb3dzQ29udGV4dC5oZGMoKSwg
JnRoZW1lUmVjdCwgRURHRV9SQUlTRUQsIEJGX1JFQ1QgfCBCRl9NSURETEUpOwogCi0gICAgaWYg
KCFhbHBoYUJsZW5kICYmICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBp
ZiAoIWFscGhhQmxlbmQgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAg
ICAgIERJQlBpeGVsRGF0YTo6c2V0UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygp
LCByZWN0LCAyNTUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5oCmluZGV4IGY0NGU5MmJjYjk2NDRiZDhjZjdkMDMxNDBhYTZlMjhlZmEw
M2Q0YjAuLjU3NTIzZTExZjNhZWYxM2Q3ZTJlMjI4YWZhNzY4MDUxNjg5MTA4MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00MSwy
MSArNDEsMjEgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRl
ckV4aXQoKSBvdmVycmlkZTsKIAotICAgIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJy
aWRlOwotICAgIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIElu
dFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNj
cm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29s
IGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwor
ICAgIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBvdmVycmlk
ZTsKKyAgICBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09y
aWdpbihTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQp
IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xs
YmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKaW5kZXggYjM3Yzk5NTMwOGI3MjJiODU0YjVmMGFlZWNhOTk4YmIyMmIyMGMxMS4uZjZj
ODVjOTc3YzBiNGJmZDNlZmI2OThhZGJiYWNkZDAwMDc5N2Q0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlJlbmRlclNjcm9sbGJhcikKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQmIHNjcm9sbGJhcikgeyByZXR1cm4gc2Nyb2xsYmFy
LmlzQ3VzdG9tU2Nyb2xsYmFyKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6U2Nyb2xsYmFyJiBzY3JvbGxiYXIpIHsgcmV0dXJuIHNjcm9sbGJhci5pc0N1c3RvbVNj
cm9sbGJhcigpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBS
ZW5kZXJTY3JvbGxiYXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwCmluZGV4IDU4ZTI0Y2JiZDU4ZjEzMTkwMzU2ZDI5NmY4NmQ1YWI1NTdl
MjFiNjIuLjg5NjNjYjg3MDRmOWNkZGQ3NGY4ZDAyMDZlNTdmNGMxZTVmZjMyYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTEz
OCwxMyArMTM4LDEzIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6c3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgc2V0RmxvYXRpbmco
ZmFsc2UpOwogICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiAgICAgaWYgKG9sZFN0eWxl
ICYmIG1fc2Nyb2xsYmFyICYmIG1fcGFydCAhPSBOb1BhcnQgJiYgZGlmZiA+PSBTdHlsZURpZmZl
cmVuY2VSZXBhaW50KQotICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBh
cnQobV9zY3JvbGxiYXIsIG1fcGFydCk7CisgICAgICAgIG1fc2Nyb2xsYmFyLT50aGVtZSgpLT5p
bnZhbGlkYXRlUGFydCgqbV9zY3JvbGxiYXIsIG1fcGFydCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyUGFydDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50
UmVjdCogcmVjdCkKIHsKICAgICBpZiAobV9zY3JvbGxiYXIgJiYgbV9wYXJ0ICE9IE5vUGFydCkK
LSAgICAgICAgbV9zY3JvbGxiYXItPnRoZW1lKCktPmludmFsaWRhdGVQYXJ0KG1fc2Nyb2xsYmFy
LCBtX3BhcnQpOworICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQo
Km1fc2Nyb2xsYmFyLCBtX3BhcnQpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodmlldygpLmZy
YW1lVmlldygpLmlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKHRoaXMpKSB7CiAgICAgICAgICAgICB2
aWV3KCkuZnJhbWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbENvcm5lcih2aWV3KCkuZnJhbWVWaWV3
KCkuc2Nyb2xsQ29ybmVyUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGI2N2IxOGIyOGU5ZmI4M2QzZGJlYzQ4MWY4
N2M4Yzc5NTIyZGQ3MTMuLmNiN2MzNzM2MGNkZWI3MmFkMmI5M2Y2ZDQzMDU3YmEwOGViOTVkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogICAgIHJldHVybiAmdGhlbWU7CiB9
CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFj
a0F4aXMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNp
emUpCiB7CiAgICAgSW50UmVjdCBmaXJzdEJ1dHRvbiA9IGJhY2tCdXR0b25SZWN0KHNjcm9sbGJh
ciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CiAgICAgSW50UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3
YXJkQnV0dG9uUmVjdChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25TdGFydFBhcnQpOwogICAgIElu
dFJlY3QgdGhpcmRCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJhY2tCdXR0b25F
bmRQYXJ0KTsKICAgICBJbnRSZWN0IGZvdXJ0aEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNj
cm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChzY3JvbGxiYXIub3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGJlZm9yZVNpemUg
PSBmaXJzdEJ1dHRvbi53aWR0aCgpICsgc2Vjb25kQnV0dG9uLndpZHRoKCk7CiAgICAgICAgIGFm
dGVyU2l6ZSA9IHRoaXJkQnV0dG9uLndpZHRoKCkgKyBmb3VydGhCdXR0b24ud2lkdGgoKTsKICAg
ICB9IGVsc2UgewpAQCAtNTIsNTIgKzUyLDUyIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sCiAg
ICAgfQogfQogCi1ib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNC
dXR0b25zKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewogICAgIGludCBzdGFydFNpemU7CiAgICAg
aW50IGVuZFNpemU7CiAgICAgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhzY3JvbGxiYXIsIHN0
YXJ0U2l6ZSwgZW5kU2l6ZSk7Ci0gICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxi
YXItPndpZHRoKCkgOiBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICByZXR1cm4gKHN0YXJ0U2l6
ZSArIGVuZFNpemUpIDw9IChzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gc2Nyb2xsYmFyLndpZHRoKCkgOiBzY3JvbGxiYXIuaGVpZ2h0KCkpOwogfQogCi1i
b29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVt
Ykxlbmd0aChzY3JvbGxiYXIpID49IDA7CiB9CiAKLWludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitpbnQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImIHNjcm9s
bGJhcikKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPigqc2Nyb2xsYmFy
KS5taW5pbXVtVGh1bWJMZW5ndGgoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU2Nyb2xs
YmFyPihzY3JvbGxiYXIpLm1pbmltdW1UaHVtYkxlbmd0aCgpOwogfQogCi1JbnRSZWN0IFJlbmRl
clNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNjcm9s
bGJhcj4oKnNjcm9sbGJhcikuYnV0dG9uUmVjdChwYXJ0VHlwZSk7CisgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkK
K0ludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewotICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLmJ1dHRvblJlY3QocGFydFR5
cGUpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikuYnV0
dG9uUmVjdChwYXJ0VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBib29s
KQogewogICAgIGlmICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQotICAgICAgICByZXR1cm4gc2Ny
b2xsYmFyLT5mcmFtZVJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci5mcmFtZVJlY3Qo
KTsKICAgICAKICAgICBpbnQgc3RhcnRMZW5ndGg7CiAgICAgaW50IGVuZExlbmd0aDsKICAgICBi
dXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKHNjcm9sbGJhciwgc3RhcnRMZW5ndGgsIGVuZExlbmd0
aCk7CiAgICAgCi0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJh
cikudHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOworICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikudHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRM
ZW5ndGgpOwogfQogCi1JbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFj
a1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5U
cmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogeyAKLSAgICBJbnRSZWN0IGJhY2tSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU2Nyb2xs
YmFyPigqc2Nyb2xsYmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQs
IHJlY3QpOwotICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxi
YXI+KCpzY3JvbGxiYXIpLnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFy
dCwgcmVjdCk7CisgICAgSW50UmVjdCBiYWNrUmVjdCA9IGRvd25jYXN0PFJlbmRlclNjcm9sbGJh
cj4oc2Nyb2xsYmFyKS50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJl
Y3QpOworICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+
KHNjcm9sbGJhcikudHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhGb3J3YXJkVHJhY2tQYXJ0LCBy
ZWN0KTsKICAgICBJbnRSZWN0IHJlc3VsdCA9IHJlY3Q7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgaWYgKHNjcm9sbGJhci5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgcmVzdWx0LnNl
dFgoYmFja1JlY3QueCgpKTsKICAgICAgICAgcmVzdWx0LnNldFdpZHRoKGZvcndhcmRSZWN0Lm1h
eFgoKSAtIGJhY2tSZWN0LngoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTEwNywyMiArMTA3LDIyIEBA
IEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQ
aWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6d2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3ZvaWQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OndpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG9wYWNpdHkgPSBkb3duY2FzdDxS
ZW5kZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLm9wYWNpdHkoKTsKKyAgICBmbG9hdCBvcGFjaXR5
ID0gZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLm9wYWNpdHkoKTsKICAgICBp
ZiAob3BhY2l0eSAhPSAxKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgY29u
dGV4dC0+Y2xpcChzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKLSAgICAgICAgY29udGV4dC0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7Cisg
ICAgICAgIGNvbnRleHQuY2xpcChzY3JvbGxiYXIuZnJhbWVSZWN0KCkpOworICAgICAgICBjb250
ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgfQogfQogCi12b2lkIFJl
bmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit2b2lkIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGZsb2F0IG9wYWNpdHkgPSBkb3duY2FzdDxSZW5k
ZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLm9wYWNpdHkoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0g
ZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLm9wYWNpdHkoKTsKICAgICBpZiAo
b3BhY2l0eSAhPSAxKSB7Ci0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
Ci0gICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiB9CiAKQEAg
LTEzMiwzMiArMTMyLDMyIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xs
Q29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRlCiAgICAgY29udGV4dC0+
ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGRv
d25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFNj
cm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgU2Nyb2xsYmFyQkdQ
YXJ0LCBzY3JvbGxiYXIuZnJhbWVSZWN0KCkpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRo
ZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRl
eHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNj
cm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93
bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPigqc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFy
dCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50
UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oKnNjcm9s
bGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRl
clNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KCpzY3JvbGxiYXIpLnBhaW50UGFy
dChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJh
cj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCmluZGV4IDUyZTAxNmY3M2JlNTIyMDUyYjA2M2YwY2I0
OTBlZTRkMWE2ZjkzNTkuLjQ3ZjBmODAzM2ViMDk0YzA0ZDE5NDNhZWY2Nzg0MWVmOTY0MTgyMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5o
CkBAIC00NiwzOSArNDYsMzkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5z
aG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCiAgICAg
dmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxh
eSgpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlk
ZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+YXV0b3Njcm9sbFRpbWVyRGVsYXko
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgb3ZlcnJp
ZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQog
Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
ciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAg
dm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciYsIGludCYgYmVmb3JlU2l6
ZSwgaW50JiBhZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVt
ZSogcmVuZGVyU2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGhhc1RodW1iKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyJiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFpbnRTY3JvbGxiYXIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmLCBTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJh
ciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a1BpZWNlKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmLCBTY3Jv
bGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNj
cm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworCisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="280647"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>