<?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>226748</bug_id>
          
          <creation_ts>2021-06-07 17:45:38 -0700</creation_ts>
          <short_desc>Drop legacy EventLoopEventQueue class</short_desc>
          <delta_ts>2021-06-08 21:34:19 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767614</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 17:45:38 -0700</bug_when>
    <thetext>Drop legacy EventLoopEventQueue class and have HTMLMediaElement use the HTML event loop directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767803</commentid>
    <comment_count>1</comment_count>
      <attachid>430852</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 09:49:46 -0700</bug_when>
    <thetext>Created attachment 430852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767809</commentid>
    <comment_count>2</comment_count>
      <attachid>430854</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 09:59:16 -0700</bug_when>
    <thetext>Created attachment 430854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767818</commentid>
    <comment_count>3</comment_count>
      <attachid>430858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 10:28:41 -0700</bug_when>
    <thetext>Created attachment 430858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767825</commentid>
    <comment_count>4</comment_count>
      <attachid>430861</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 10:40:59 -0700</bug_when>
    <thetext>Created attachment 430861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767830</commentid>
    <comment_count>5</comment_count>
      <attachid>430864</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 11:01:42 -0700</bug_when>
    <thetext>Created attachment 430864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767835</commentid>
    <comment_count>6</comment_count>
      <attachid>430865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 11:08:24 -0700</bug_when>
    <thetext>Created attachment 430865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767841</commentid>
    <comment_count>7</comment_count>
      <attachid>430869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 11:35:20 -0700</bug_when>
    <thetext>Created attachment 430869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768014</commentid>
    <comment_count>8</comment_count>
      <attachid>430869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-08 18:19:51 -0700</bug_when>
    <thetext>Comment on attachment 430869
Patch

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

&gt; Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:48
&gt; -            *reason = &quot;TextTrackCue is firing event listeners&quot;;
&gt; +            *reason = &quot;ActiveDOMObject with pending activity&quot;;

Why is it better to have this message be vague?

Can we share this constant string &quot;ActiveDOMObject with pending activity&quot; with uses elsewhere?

&gt; Source/WebCore/html/track/DataCue.cpp:75
&gt; +    dataCue-&gt;suspendIfNeeded();

A little frustrating to have to add so much boilerplate with all these calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768015</commentid>
    <comment_count>9</comment_count>
      <attachid>430869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 18:21:53 -0700</bug_when>
    <thetext>Comment on attachment 430869
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:48
&gt;&gt; +            *reason = &quot;ActiveDOMObject with pending activity&quot;;
&gt; 
&gt; Why is it better to have this message be vague?
&gt; 
&gt; Can we share this constant string &quot;ActiveDOMObject with pending activity&quot; with uses elsewhere?

I copied the code from the generated bindings code for [ActiveDOMObject]. I don&apos;t have to keep the message so generic though, I&apos;ll replace ActiveDOMObject with TextTrackCue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768016</commentid>
    <comment_count>10</comment_count>
      <attachid>430931</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 18:29:23 -0700</bug_when>
    <thetext>Created attachment 430931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768044</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 21:33:12 -0700</bug_when>
    <thetext>Committed r278645 (238627@main): &lt;https://commits.webkit.org/238627@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768045</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-08 21:34:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/79054988&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430852</attachid>
            <date>2021-06-08 09:49:46 -0700</date>
            <delta_ts>2021-06-08 09:57:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608094945.patch</filename>
            <type>text/plain</type>
            <size>38404</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApp
bmRleCA4OWQ4OTgyMGE3NjQ3N2QwMThmM2NmZTM0MTljNzE2ZGM2NDU1MGE4Li4xNmRmZDU2ODg5
N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4YWVkZGVhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTM4LDExICsxMzgsMTAgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgp
PiYKIAogY2xhc3MgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZl
bnRMb29wVGFzayB7CiBwdWJsaWM6Ci0gICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRh
c2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURP
TU9iamVjdCYgb2JqZWN0LCBFdmVudFRhcmdldCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQp
CisgICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBGdW5j
dGlvbjx2b2lkKCk+JiYgZGlzcGF0Y2hFdmVudCkKICAgICAgICAgOiBFdmVudExvb3BUYXNrKHNv
dXJjZSwgZ3JvdXApCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fdGFy
Z2V0KHRhcmdldCkKLSAgICAgICAgLCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQorICAgICAgICAs
IG1fZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGRpc3BhdGNoRXZlbnQpKQogICAgIHsKICAgICAgICAg
KyttX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQ7CiAgICAgfQpAQCAtMTU4
LDEzICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBJZiB0aGlzIHRhc2sgZXhlY3V0ZXMg
YWZ0ZXIgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBoYXMgYmVlbiBzdG9wcGVkLCBkb24n
dAogICAgICAgICAvLyBhY3R1YWxseSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgICAgIGlmICht
X29iamVjdC5pc0FsbG93ZWRUb1J1blNjcmlwdCgpKQotICAgICAgICAgICAgbV90YXJnZXQtPmRp
c3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Rpc3BhdGNoRXZlbnQo
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQWN0aXZlRE9NT2JqZWN0JiBtX29iamVjdDsKLSAg
ICBSZWY8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OwotICAgIFJlZjxFdmVudD4gbV9ldmVudDsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fZGlzcGF0Y2hFdmVudDsKIH07CiAKIHZvaWQgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQpAQCAtMTc0LDcgKzE3
MiwyMiBAQCB2b2lkIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50
ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFzawogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8mIGV2ZW50TG9vcFRhc2tHcm91cCA9IGNvbnRleHQtPmV2ZW50
TG9vcCgpOwotICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnRE
aXNwYXRjaFRhc2s+KHNvdXJjZSwgZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgdGFyZ2V0LCBX
VEZNb3ZlKGV2ZW50KSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmpl
Y3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBb
dGFyZ2V0ID0gbWFrZVJlZih0YXJnZXQpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAg
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgfSk7CisgICAgZXZlbnRMb29w
VGFza0dyb3VwLnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBBY3RpdmVET01P
YmplY3Q6OnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRU
YXJnZXQmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYg
Y2FuY2VsbGF0aW9uR3JvdXAsIFJlZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBBU1NFUlQoIWV2
ZW50LT50YXJnZXQoKSB8fCAmdGFyZ2V0ID09IGV2ZW50LT50YXJnZXQoKSk7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5l
dmVudExvb3AoKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2
ZW50RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNl
bGxhYmxlVGFzayhjYW5jZWxsYXRpb25Hcm91cCwgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwg
ZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworICAgIH0pKTsKICAgICBldmVudExvb3BUYXNrR3JvdXAucXVldWVUYXNrKFdURk1v
dmUodGFzaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTEw
NzRiMDE4NTdmNjRmZmU5YmIyZjgyODBmZDYzY2U2ZjhjNGRkYi4uZDc1N2E1NWNiMzQzNDNiODJl
MjhhZTg1NmRmY2JkZGQzYzI5YzE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
aApAQCAtMjcsNiArMjcsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJUYXNrU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVUYXNrLmg+CkBAIC0xMjAsMTIgKzEyMiwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEV2ZW50VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBlPgotICAgIHN0YXRpYyB2b2lkIHF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5cGUmIHRhcmdldCwgVGFza1NvdXJj
ZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXZlbnRUYXJnZXRUeXBlPgorICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dChFdmVudFRhcmdldFR5cGUmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudD4m
JiBldmVudCkKICAgICB7CiAgICAgICAgIHRhcmdldC5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJ
bnRlcm5hbCh0YXJnZXQsIHNvdXJjZSwgV1RGTW92ZShldmVudCkpOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZT4KKyAgICBzdGF0aWMgdm9pZCBxdWV1ZUNh
bmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5cGUmIHRhcmdldCwgVGFz
a1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYgY2FuY2VsbGF0aW9uR3JvdXAs
IFJlZjxFdmVudD4mJiBldmVudCkKKyAgICB7CisgICAgICAgIHRhcmdldC5xdWV1ZUNhbmNlbGxh
YmxlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKHRhcmdldCwgc291cmNlLCBjYW5jZWxsYXRp
b25Hcm91cCwgV1RGTW92ZShldmVudCkpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgZXhwbGlj
aXQgQWN0aXZlRE9NT2JqZWN0KERvY3VtZW50Kik7CkBAIC0xNDIsNiArMTUwLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcXVldWVUYXNrSW5FdmVudExvb3AoVGFza1NvdXJjZSwgRnVuY3Rpb248
dm9pZCAoKT4mJik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChF
dmVudFRhcmdldCYsIFRhc2tTb3VyY2UsIFJlZjxFdmVudD4mJik7CisgICAgdm9pZCBxdWV1ZUNh
bmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1Nv
dXJjZSwgVGFza0NhbmNlbGxhdGlvbkdyb3VwJiwgUmVmPEV2ZW50PiYmKTsKIAogICAgIHVpbnQ2
NF90IG1fcGVuZGluZ0FjdGl2aXR5SW5zdGFuY2VDb3VudCB7IDAgfTsKICNpZiBBU1NFUlRfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGMxNjIxNzJhMzdhYmQ1MmU0NmUyYzZiMzA4ZjkxZWEz
MDI5OWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDExOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFZpY3RvciBDYXJidW5l
ICh2aWN0b3JAcm9zZWR1Lm9yZykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1
ZXVlLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5j
bHVkZSAiRXZlbnRMb29wLmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJO
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUV2ZW50TG9vcEV2ZW50UXVldWU6OkV2ZW50TG9vcEV2ZW50UXVldWUoRXZlbnRUYXJn
ZXQmIG93bmVyKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KG93bmVyLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAsIG1fb3duZXIob3duZXIpCi17Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZl
bnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4mJiBldmVudCkKLXsKLSAgICBpZiAo
bV9pc0Nsb3NlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZXZlbnQtPnRhcmdldCgpID09ICZtX293bmVyKQotICAgICAgICBldmVudC0+
c2V0VGFyZ2V0KG51bGxwdHIpOwotCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChXVEZNb3Zl
KGV2ZW50KSk7Ci0KLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0gewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+
ZGlzcGF0Y2hPbmVFdmVudCgpOwotICAgIH0pOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50UXVl
dWU6OmRpc3BhdGNoT25lRXZlbnQoKQotewotICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRzLmlz
RW1wdHkoKSk7Ci0KLSAgICBSZWY8RXZlbnRUYXJnZXQ+IHByb3RlY3RlZE93bmVyKG1fb3duZXIp
OwotICAgIFNldEZvclNjb3BlPGJvb2w+IGV2ZW50RmlyaW5nU2NvcGUobV9pc0ZpcmluZ0V2ZW50
LCB0cnVlKTsKLQotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBtX3BlbmRpbmdFdmVudHMudGFr
ZUZpcnN0KCk7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCkg
PyAqZXZlbnQtPnRhcmdldCgpIDogbV9vd25lcjsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF0
YXJnZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKSwKLSAgICAgICAgIkFuIGF0dGVtcHQgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgb24gYSBzdG9w
cGVkIHRhcmdldCBieSBFdmVudFRhcmdldEludGVyZmFjZT0lZCAobm9kZU5hbWU9JXMgdGFyZ2V0
PSVwIG93bmVyPSVwKSIsCi0gICAgICAgIG1fb3duZXIuZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSwg
bV9vd25lci5pc05vZGUoKSA/IHN0YXRpY19jYXN0PE5vZGUmPihtX293bmVyKS5ub2RlTmFtZSgp
LmFzY2lpKCkuZGF0YSgpIDogIiIsIHRhcmdldC5wdHIoKSwgJm1fb3duZXIpOwotICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudCgqZXZlbnQpOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6
OmNsb3NlKCkKLXsKLSAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBjYW5jZWxBbGxFdmVudHMo
KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjpjYW5jZWxBbGxFdmVudHMoKQotewot
ICAgIHdlYWtQdHJGYWN0b3J5KCkucmV2b2tlQWxsKCk7Ci0gICAgbV9wZW5kaW5nRXZlbnRzLmNs
ZWFyKCk7Ci19Ci0KLWJvb2wgRXZlbnRMb29wRXZlbnRRdWV1ZTo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkgfHwgbV9p
c0ZpcmluZ0V2ZW50OwotfQotCi1ib29sIEV2ZW50TG9vcEV2ZW50UXVldWU6Omhhc1BlbmRpbmdF
dmVudHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4g
V1RGOjphbnlPZihtX3BlbmRpbmdFdmVudHMsIFsmXShhdXRvJiBldmVudCkgeyByZXR1cm4gZXZl
bnQtPnR5cGUoKSA9PSB0eXBlOyB9KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjpz
dG9wKCkKLXsKLSAgICBjbG9zZSgpOwotfQotCi1jb25zdCBjaGFyKiBFdmVudExvb3BFdmVudFF1
ZXVlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIkV2ZW50TG9v
cEV2ZW50UXVldWUiOwotfQotCi1VbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gRXZlbnRM
b29wRXZlbnRRdWV1ZTo6Y3JlYXRlKEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCkKLXsKLSAgICBh
dXRvIGV2ZW50UXVldWUgPSBtYWtlVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+KGV2ZW50
VGFyZ2V0KTsKLSAgICBldmVudFF1ZXVlLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4g
ZXZlbnRRdWV1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TG9vcEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NmZmNzQ3NjJlN2QzMTVkNDU0MzFh
MWM0MmQxOTg5YzE2ODRjMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVmljdG9y
IENhcmJ1bmUgKHZpY3RvckByb3NlZHUub3JnKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFdmVu
dDsKLWNsYXNzIEV2ZW50VGFyZ2V0OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
Ly8gRklYTUU6IFdlIHNob3VsZCBwb3J0IGNhbGwgc2l0ZXMgdG8gdGhlIEhUTUwgZXZlbnQgbG9v
cCBhbmQgcmVtb3ZlIHRoaXMgY2xhc3MuCi1jbGFzcyBFdmVudExvb3BFdmVudFF1ZXVlIDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENhbk1ha2VXZWFrUHRyPEV2ZW50TG9vcEV2ZW50
UXVldWU+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IGNyZWF0ZShFdmVudFRhcmdldCYpOwot
Ci0gICAgdm9pZCBlbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmKTsKLSAgICB2b2lkIGNsb3Nl
KCk7Ci0KLSAgICB2b2lkIGNhbmNlbEFsbEV2ZW50cygpOwotICAgIGJvb2wgaGFzUGVuZGluZ0V2
ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7Ci0KLSAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBVbmlxdWVSZWY8RXZl
bnRMb29wRXZlbnRRdWV1ZT4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxFdmVudExvb3BFdmVudFF1ZXVlLCBXZWJDb3JlOjpFdmVudFRhcmdldCY+KFdlYkNvcmU6OkV2
ZW50VGFyZ2V0Jik7Ci0gICAgZXhwbGljaXQgRXZlbnRMb29wRXZlbnRRdWV1ZShFdmVudFRhcmdl
dCYpOwotCi0gICAgdm9pZCBkaXNwYXRjaE9uZUV2ZW50KCk7Ci0KLSAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7
Ci0KLSAgICBFdmVudFRhcmdldCYgbV9vd25lcjsKLSAgICBEZXF1ZTxSZWZQdHI8RXZlbnQ+PiBt
X3BlbmRpbmdFdmVudHM7Ci0gICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNGaXJpbmdFdmVudCB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2ZDcwMzNiMWUw
YTg2OWFkMDM3OWI1YWNkNjk2MGZiYTVlYzQ4MzM1Li5kZmE0MjY1YjY0M2RlNDFjZDIyNmJhNWVl
NjVkNWRlNzg2MWY2YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTM5NCw3ICszOTQsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9z
Y2FuVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpzY2FuVGltZXJGaXJlZCkKICAgICAs
IG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyKCp0aGlz
LCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3Ry
aWN0aW9uc1RpbWVyRmlyZWQpCiAgICAgLCBtX3NlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVk
VGltZXJGaXJlZCkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKEV2ZW50TG9vcEV2ZW50UXVldWU6
OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUoTWVk
aWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRpbWVQbGF5aW5n
KHRydWUpCiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC01MTcsOCArNTE2LDYgQEAgSFRNTE1l
ZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGJlZ2luSWdub3JpbmdUcmFja0Rp
c3BsYXlVcGRhdGVSZXF1ZXN0cygpOwogICAgIGFsbE1lZGlhRWxlbWVudHMoKS5yZW1vdmUodGhp
cyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2xvc2UoKTsKLQogICAgIHNldFNob3VsZERl
bGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50
KCkpOwogCkBAIC04OTcsMjAgKzg5NCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogewotICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7Ci0KLSAgICAvLyBEb24ndCBzZXQgdGhlIGV2ZW50
IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVlIHdpbGwgc2V0IGl0IGluIEdlbmVyaWNFdmVudFF1ZXVl
Ojp0aW1lckZpcmVkIGFuZCBzZXR0aW5nIGl0IGhlcmUKLSAgICAvLyB3aWxsIHRyaWdnZXIgYW4g
QVNTRVJUIGlmIHRoaXMgZWxlbWVudCBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLgotCi0g
ICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAg
c2NoZWR1bGVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCi0jaWYgRU5BQkxFKFBJQ1RVUkVf
SU5fUElDVFVSRV9BUEkpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoUmVm
PEV2ZW50PiYmIGV2ZW50KQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRp
b25Hcm91cCwgV1RGTW92ZShldmVudCkpOwogfQotI2VuZGlmCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCiB7CkBAIC0xNzc3LDIw
ICsxNzY3LDE3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAgLy8gbGVzcyB0aGFuIHRo
ZSBlbmRUaW1lIGluIHRoZSBjdWUuCiAgICAgICAgIGlmIChldmVudFRhc2suc2Vjb25kLT5zdGFy
dFRpbWUoKSA+PSBldmVudFRhc2suc2Vjb25kLT5lbmRUaW1lKCkpIHsKICAgICAgICAgICAgIGF1
dG8gZW50ZXJFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7Ci0gICAgICAgICAg
ICBlbnRlckV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZW50ZXJFdmVudCkpOworICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudE9uKCpldmVudFRhc2suc2Vjb25kLCBXVEZNb3ZlKGVudGVy
RXZlbnQpKTsKIAogICAgICAgICAgICAgYXV0byBleGl0RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObyk7Ci0gICAgICAgICAgICBleGl0RXZlbnQtPnNldFRhcmdldChldmVudFRhc2su
c2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShleGl0RXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNr
LnNlY29uZCwgV1RGTW92ZShleGl0RXZlbnQpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CiAgICAgICAgICAgICBpZiAoZXZlbnRUYXNrLmZpcnN0
ID09IGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0TWVkaWFUaW1lKCkpCiAgICAgICAgICAgICAgICAg
ZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAg
ICAgICAgICAgZXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAg
ICAgICAgc2NoZWR1bGVFdmVudE9uKCpldmVudFRhc2suc2Vjb25kLCBldmVudC5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTgwMiw4ICsxNzg5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGlt
ZSYgbW92aWVUaW1lKQogICAgIC8vIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBj
dWVjaGFuZ2UgYXQgdGhlIFRleHRUcmFjayBvYmplY3QsIGFuZCwgLi4uCiAgICAgZm9yIChhdXRv
JiBhZmZlY3RlZFRyYWNrIDogYWZmZWN0ZWRUcmFja3MpIHsKICAgICAgICAgYXV0byBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAgICBldmVudC0+c2V0VGFy
Z2V0KGFmZmVjdGVkVHJhY2spOwotICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudE9uKCphZmZlY3RlZFRy
YWNrLCBXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICAgICAgLy8gLi4uIGlmIHRoZSB0ZXh0IHRyYWNr
IGhhcyBhIGNvcnJlc3BvbmRpbmcgdHJhY2sgZWxlbWVudCwgdG8gdGhlbiBmaXJlIGEKICAgICAg
ICAgLy8gc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgdHJhY2sgZWxlbWVudCBh
cyB3ZWxsLgpAQCAtMTgxMSw4ICsxNzk3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAg
ICAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAg
ICAgICAgICAgYXV0byB0cmFja0VsZW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PExvYWRhYmxl
VGV4dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykudHJhY2tFbGVtZW50KCkpOwogICAgICAgICAgICAg
QVNTRVJUKHRyYWNrRWxlbWVudCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRyYWNr
RWxlbWVudCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqdHJhY2tFbGVtZW50
LCBXVEZNb3ZlKGV2ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxMzcsNyArMjEyMiw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNl
bFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKKyAgICBtX2Fz
eW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAKICAgICBmb3IgKGF1dG8mIHNv
dXJjZSA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxTb3VyY2VFbGVtZW50PigqdGhpcykpCiAgICAgICAg
IHNvdXJjZS5jYW5jZWxQZW5kaW5nRXJyb3JFdmVudCgpOwpAQCAtMjUwMSw4ICsyNDg2LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSkKICAgICB9CiAKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsK
LSAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIHNjaGVkdWxlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwogfQogCiBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKQEAgLTI2NTEsNyArMjYzNSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25z
dCBTdHJpbmcmIGluCiAgICAgLy8gICAgICBpbml0RGF0YVR5cGUgPSBpbml0RGF0YVR5cGUKICAg
ICAvLyAgICAgIGluaXREYXRhID0gaW5pdERhdGEKICAgICBNZWRpYUVuY3J5cHRlZEV2ZW50SW5p
dCBpbml0aWFsaXplciB7IGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkgfTsKLSAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE1lZGlhRW5jcnlwdGVkRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZW5jcnlwdGVkRXZlbnQsIGluaXRpYWxpemVyLCBFdmVudDo6SXNUcnVz
dGVkOjpZZXMpKTsKKyAgICBzY2hlZHVsZUV2ZW50KE1lZGlhRW5jcnlwdGVkRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZW5jcnlwdGVkRXZlbnQsIGluaXRpYWxpemVyLCBFdmVudDo6SXNUcnVz
dGVkOjpZZXMpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcldhaXRp
bmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTU2MTcsNyArNTYwMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2xvc2VUYXNrUXVldWVzKCkKIHsKICAgICBjYW5jZWxQZW5kaW5nVGFza3MoKTsKICAg
ICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwotICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOworICAgIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRp
b25Hcm91cC5jYW5jZWwoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb250ZXh0RGVz
dHJveWVkKCkKQEAgLTU3MDUsNyArNTY4OSw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFz
TGl2ZVNvdXJjZSgpIGNvbnN0CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2NyZWF0aW5nQ29udHJvbHMKLSAg
ICAgICAgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpCiAgICAgICAg
IHx8IChoYXNBdWRpbygpICYmIGlzUGxheWluZygpKQogICAgICAgICB8fCAoaGFzTGl2ZVNvdXJj
ZSgpICYmIGhhc0V2ZW50TGlzdGVuZXJzKCkpOwogfQpAQCAtNTg5Myw4ICs1ODc2LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFu
Z2VkRXZlbnQoKQogICAgIGJvb2wgaGFzVGFyZ2V0cyA9IG1fbWVkaWFTZXNzaW9uICYmIG1lZGlh
U2Vzc2lvbigpLmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCk7CiAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAiaGFzVGFyZ2V0cyA9ICIsIGhhc1RhcmdldHMpOwogICAgIGF1dG8gZXZl
bnQgPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50LCBoYXNU
YXJnZXRzKTsKLSAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIHNjaGVkdWxlRXZlbnQoV1RG
TW92ZShldmVudCkpOwogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwogfQogCkBAIC04
MTQ4LDYgKzgxMzAsMTEgQEAgTWVkaWFFbGVtZW50U2Vzc2lvbiYgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gKm1fbWVkaWFTZXNzaW9uOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRP
bihUJiB0YXJnZXQsIFJlZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICB0YXJnZXQucXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQodGFyZ2V0LCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRpb25Hcm91cCwgV1RGTW92ZShldmVudCkpOworfQor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBk
OGVlNzAyNDgyMGM4ZTJhODBjMDliMWU3MWRlMjVmMDg5MWM1MGU3Li41MDlmOGJkZjA1NzcxM2Y3
N2E2ZmQyZmNkZTkwNjYzMDc0OTQ0YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNs
dWRlICJBdXRvcGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5o
IgotI2luY2x1ZGUgIkV2ZW50TG9vcEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIk1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNTQ5LDkgKzU0OCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKIAotI2lmIEVOQUJM
RShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgIHZvaWQgc2NoZWR1bGVFdmVudChSZWY8RXZl
bnQ+JiYpOwotI2VuZGlmCiAKICAgICBlbnVtIGNsYXNzIEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlIHsgTm9uZSwgUHJldmVudGVkQXV0b3BsYXksIFN0YXJ0ZWRXaXRoVXNlckdlc3R1cmUsIFN0
YXJ0ZWRXaXRob3V0VXNlckdlc3R1cmUgfTsKIApAQCAtNTc0LDYgKzU3MSwxMSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Jikgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2
ZW50OworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOworI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFF
bGVtZW50KCk7CkBAIC02MDIsNiArNjA0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRl
TWVkaWFDb250cm9sc0FmdGVyUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpOwogCiAgICAgdm9pZCBz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIHNjaGVkdWxlRXZlbnRPbihUJiB0YXJnZXQsIFJlZjxFdmVudD4mJik7CiAKICAgICBi
b29sIHNob3dQb3N0ZXJGbGFnKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UG9zdGVyOyB9CiAgICAg
dm9pZCBzZXRTaG93UG9zdGVyRmxhZyhib29sKTsKQEAgLTY5MCwxMyArNjkzLDEwIEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgdm9pZCB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOwog
I2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAg
IHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChi
b29sKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNo
YW5nZWRFdmVudCgpOwotCi0gICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7Ci0g
ICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFN0
cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC05NTEsNyArOTUx
LDcgQEAgcHJpdmF0ZToKICAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9idWZmZXJlZFRpbWVS
YW5nZXNDaGFuZ2VkVGFza0NhbmNlbGxhdGlvbkdyb3VwOwogICAgIFRhc2tDYW5jZWxsYXRpb25H
cm91cCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlvbkdyb3VwOwogICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7Ci0gICAgVW5pcXVlUmVmPEV2ZW50TG9v
cEV2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91
cCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV92b2x1bWVSZXZlcnRUYXNrQ2FuY2VsbGF0
aW9uR3JvdXA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcAppbmRleCBhNjBlOTllYWJmYjg5Yzg5MmE1MWQyZTg1ODVkZTlkYmM2NjBhMTRk
Li45Y2ZhMTRkZjJhZTk1ODY2YzUzYjhiMTAzYjZkODU5ZDRiZmQ1ZDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC01MCw3ICs1MCw5IEBA
IFJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50CiAgICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0
VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6
Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgYXV0byB0ZXh0VHJh
Y2sgPSBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQ
cml2YXRlKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
ZXh0VHJhY2s7CiB9CiAKIEluYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50
JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAKaW5kZXggNzgwYmUzMmNlMzQ1YTc0Mjk5MWMzNDEyYzQzOWZjY2U0OGY3
MmM1Mi4uNzQ2MzIwZDdjMTRkMmM0NzViYTA0MzZiN2NiYjU3YTA0MTc2NWYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQ4LDcg
KzQ4LDkgQEAgTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQKIAogUmVmPExvYWRhYmxlVGV4dFRyYWNr
PiBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ss
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7Cisg
ICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwog
fQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggZDliNDdkMjBiODli
YjY3ODY4YjBkZmNlNzEyMjQyOTY3MTgwYTAwNS4uZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4
MWE1NzVkZDBmMThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9t
YXRpY0l0ZW0oKQogCiBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChjb250
ZXh0KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsK
QEAgLTExOCw3ICsxMTgsOSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogCiBSZWY8VGV4dFRy
YWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVu
dCogY2xpZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCBraW5k
LCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRyYWNrID0g
YWRvcHRSZWYoKm5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVs
LCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBA
IC01OTAsNiArNTkyLDExIEBAIGJvb2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAogICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCitj
b25zdCBjaGFyKiBUZXh0VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiVGV4dFRyYWNrIjsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lk
IFRleHRUcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA5YTUzMzQ4NDIyZWJkYTkxOGJm
YTNmYjVjMTBlNjM5NTFmYTgxNDQ3Li43NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTlj
MTUzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGlj
IFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tC
YXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGll
bnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKQEAgLTE1OSw2
ICsxNTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNr
IjsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXgg
MDliNmQxYzE5N2IyZTk5ZGE3NmNiOWQzYzRlZjBkMmU1NWJjMzA0Mi4uZWRhNTliYzQzZTE1Mjgy
ZWFiY2QwYmNhODNiODMxZmQyOGU5OTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmlkbApAQCAtMjcsNiArMjcsNyBAQCBlbnVtIFRleHRUcmFja01vZGUgeyAiZGlzYWJs
ZWQiLCAiaGlkZGVuIiwgInNob3dpbmciIH07CiBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0
bGVzIiwgImNhcHRpb25zIiwgImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZGF0YSIs
ICJmb3JjZWQiIH07CiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
VklERU8sCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRWxlbWVudFJvb3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKaW5kZXggZDRiNmJlYjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIxODc1ZWNmZGVhNy4u
M2NjMTQwYzM0OGY3NDQxOTA3NjdjZjY2NWQ2MzlhMDUwMzg4ZTEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMjIyLDIxICsyMjIsMjUgQEAgRXhj
ZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRleHRUcmFja0N1ZTo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgZG91YmxlIHMKICAgICBpZiAoIW5vZGVUeXBlcy5jb250YWlucyhSZXF1aXJl
ZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZTogIiwg
Y3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRvU3RyaW5nKCkpIH07CiAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3Zl
KGZyYWdtZW50KSkpOworICAgIGF1dG8gdGV4dFRyYWNrQ3VlID0gYWRvcHRSZWYoKm5ldyBUZXh0
VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAg
IHRleHRUcmFja0N1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRleHRUcmFja0N1
ZTsKIH0KIAogVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPERvY3VtZW50
RnJhZ21lbnQ+JiYgY3VlRnJhZ21lbnQpCi0gICAgOiBtX3N0YXJ0VGltZShzdGFydCkKKyAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAg
ICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2N1
ZU5vZGUoV1RGTW92ZShjdWVGcmFnbWVudCkpCiB7CiB9CiAKLVRleHRUcmFja0N1ZTo6VGV4dFRy
YWNrQ3VlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCkKLSAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQorVGV4dFRyYWNrQ3VlOjpU
ZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAg
ICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKLSAgICAsIG1fZG9j
dW1lbnQoY29udGV4dCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTUz
MSw2ICs1MzUsMTEgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSgpCiAg
ICAgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlID0gZmFsc2U7CiB9CiAKK2NvbnN0IGNoYXIqIFRl
eHRUcmFja0N1ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJU
ZXh0VHJhY2tDdWUiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggYjUwMzgxYzVhZGZjZjZm
NTBmZWQzNWQ0YTg5ZDFlNzgxNzUzZDM1Mi4uZjcyYjk2ZjhmMzYxODE0NTg4NDhlNDkwMzhlZTU3
YmI4NGM0ZGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxUZXh0VHJhY2tDdWU+IG1fY3Vl
OwogfTsKIAotY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNr
Q3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgVGV4dFRyYWNr
Q3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoVGV4dFRyYWNrQ3VlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgY3VlU2hhZG93UHNldWRvSWQoKTsKQEAgLTE0Niw2ICsxNDYsOSBAQCBwcml2YXRl
OgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVGV4dFRyYWNrQ3VlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCByZWJ1aWxkRGlzcGxheVRy
ZWUoKTsKIAogICAgIFN0cmluZyBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaWRsCmluZGV4IDc1ZDYwMGEwNzZmOGRjNmI0M2UzM2Q2M2Q5MGE5YmUxNjBmZTMx
NjQuLmYwZjA1OWRmMmU5ZGZkMThlY2QzMDc2MTAxZjhiZjIxNzE2NmNiYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKICAq
LwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAg
IEN1c3RvbUlzUmVhY2hhYmxlLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430854</attachid>
            <date>2021-06-08 09:59:16 -0700</date>
            <delta_ts>2021-06-08 10:28:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608095915.patch</filename>
            <type>text/plain</type>
            <size>39322</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApp
bmRleCA4OWQ4OTgyMGE3NjQ3N2QwMThmM2NmZTM0MTljNzE2ZGM2NDU1MGE4Li4xNmRmZDU2ODg5
N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4YWVkZGVhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTM4LDExICsxMzgsMTAgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgp
PiYKIAogY2xhc3MgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZl
bnRMb29wVGFzayB7CiBwdWJsaWM6Ci0gICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRh
c2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURP
TU9iamVjdCYgb2JqZWN0LCBFdmVudFRhcmdldCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQp
CisgICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBGdW5j
dGlvbjx2b2lkKCk+JiYgZGlzcGF0Y2hFdmVudCkKICAgICAgICAgOiBFdmVudExvb3BUYXNrKHNv
dXJjZSwgZ3JvdXApCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fdGFy
Z2V0KHRhcmdldCkKLSAgICAgICAgLCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQorICAgICAgICAs
IG1fZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGRpc3BhdGNoRXZlbnQpKQogICAgIHsKICAgICAgICAg
KyttX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQ7CiAgICAgfQpAQCAtMTU4
LDEzICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBJZiB0aGlzIHRhc2sgZXhlY3V0ZXMg
YWZ0ZXIgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBoYXMgYmVlbiBzdG9wcGVkLCBkb24n
dAogICAgICAgICAvLyBhY3R1YWxseSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgICAgIGlmICht
X29iamVjdC5pc0FsbG93ZWRUb1J1blNjcmlwdCgpKQotICAgICAgICAgICAgbV90YXJnZXQtPmRp
c3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Rpc3BhdGNoRXZlbnQo
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQWN0aXZlRE9NT2JqZWN0JiBtX29iamVjdDsKLSAg
ICBSZWY8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OwotICAgIFJlZjxFdmVudD4gbV9ldmVudDsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fZGlzcGF0Y2hFdmVudDsKIH07CiAKIHZvaWQgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQpAQCAtMTc0LDcgKzE3
MiwyMiBAQCB2b2lkIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50
ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFzawogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8mIGV2ZW50TG9vcFRhc2tHcm91cCA9IGNvbnRleHQtPmV2ZW50
TG9vcCgpOwotICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnRE
aXNwYXRjaFRhc2s+KHNvdXJjZSwgZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgdGFyZ2V0LCBX
VEZNb3ZlKGV2ZW50KSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmpl
Y3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBb
dGFyZ2V0ID0gbWFrZVJlZih0YXJnZXQpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAg
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgfSk7CisgICAgZXZlbnRMb29w
VGFza0dyb3VwLnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBBY3RpdmVET01P
YmplY3Q6OnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRU
YXJnZXQmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYg
Y2FuY2VsbGF0aW9uR3JvdXAsIFJlZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBBU1NFUlQoIWV2
ZW50LT50YXJnZXQoKSB8fCAmdGFyZ2V0ID09IGV2ZW50LT50YXJnZXQoKSk7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5l
dmVudExvb3AoKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2
ZW50RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNl
bGxhYmxlVGFzayhjYW5jZWxsYXRpb25Hcm91cCwgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwg
ZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworICAgIH0pKTsKICAgICBldmVudExvb3BUYXNrR3JvdXAucXVldWVUYXNrKFdURk1v
dmUodGFzaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTEw
NzRiMDE4NTdmNjRmZmU5YmIyZjgyODBmZDYzY2U2ZjhjNGRkYi4uNjU3OGI2NDA5ZDM0OTczN2Y0
NmEyNzVhMmQ4OTU5Nzc3Zjk5NGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
aApAQCAtMTIwLDEyICsxMjAsMTggQEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4K
LSAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBl
JiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnRUeXBlPiYmIGV2ZW50KQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZT4KKyAgICBzdGF0aWMgdm9pZCBxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ug
c291cmNlLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgewogICAgICAgICB0YXJnZXQucXVldWVU
YXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIFdURk1vdmUoZXZlbnQp
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAg
c3RhdGljIHZvaWQgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJn
ZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAm
IGNhbmNlbGxhdGlvbkdyb3VwLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgeworICAgICAgICB0
YXJnZXQucXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbCh0YXJnZXQs
IHNvdXJjZSwgY2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCopOwpAQCAtMTQy
LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRh
c2tTb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmLCBUYXNrU291cmNlLCBSZWY8RXZlbnQ+JiYp
OworICAgIHZvaWQgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChF
dmVudFRhcmdldCYsIFRhc2tTb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYsIFJlZjxFdmVu
dD4mJik7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQgeyAw
IH07CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExvb3BFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVu
dFF1ZXVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjMTYyMTcyYTM3YWJk
NTJlNDZlMmM2YjMwOGY5MWVhMzAyOTllYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBWaWN0b3IgQ2FyYnVuZSAodmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRXZlbnRMb29wRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+Ci0j
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FdmVudExvb3BFdmVudFF1ZXVlOjpFdmVudExvb3BF
dmVudFF1ZXVlKEV2ZW50VGFyZ2V0JiBvd25lcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25l
ci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX293bmVyKG93bmVyKQotewotfQot
Ci12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYg
ZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGV2ZW50LT50YXJnZXQoKSA9PSAmbV9vd25l
cikKLSAgICAgICAgZXZlbnQtPnNldFRhcmdldChudWxscHRyKTsKLQotICAgIG1fcGVuZGluZ0V2
ZW50cy5hcHBlbmQoV1RGTW92ZShldmVudCkpOwotCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAg
ICAgICAgICAgd2Vha1RoaXMtPmRpc3BhdGNoT25lRXZlbnQoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBFdmVudExvb3BFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50KCkKLXsKLSAgICBBU1NFUlQo
IW1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkpOwotCi0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90
ZWN0ZWRPd25lcihtX293bmVyKTsKLSAgICBTZXRGb3JTY29wZTxib29sPiBldmVudEZpcmluZ1Nj
b3BlKG1faXNGaXJpbmdFdmVudCwgdHJ1ZSk7Ci0KLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0g
bV9wZW5kaW5nRXZlbnRzLnRha2VGaXJzdCgpOwotICAgIFJlZjxFdmVudFRhcmdldD4gdGFyZ2V0
ID0gZXZlbnQtPnRhcmdldCgpID8gKmV2ZW50LT50YXJnZXQoKSA6IG1fb3duZXI7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdGFyZ2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2
ZURPTU9iamVjdHNBcmVTdG9wcGVkKCksCi0gICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3BhdGNo
IGFuIGV2ZW50IG9uIGEgc3RvcHBlZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9JWQg
KG5vZGVOYW1lPSVzIHRhcmdldD0lcCBvd25lcj0lcCkiLAotICAgICAgICBtX293bmVyLmV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCksIG1fb3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2RlJj4o
bV9vd25lcikubm9kZU5hbWUoKS5hc2NpaSgpLmRhdGEoKSA6ICIiLCB0YXJnZXQucHRyKCksICZt
X293bmVyKTsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKLX0KLQotdm9pZCBF
dmVudExvb3BFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0g
ICAgY2FuY2VsQWxsRXZlbnRzKCk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2Fu
Y2VsQWxsRXZlbnRzKCkKLXsKLSAgICB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOwotICAg
IG1fcGVuZGluZ0V2ZW50cy5jbGVhcigpOwotfQotCi1ib29sIEV2ZW50TG9vcEV2ZW50UXVldWU6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3BlbmRpbmdFdmVu
dHMuaXNFbXB0eSgpIHx8IG1faXNGaXJpbmdFdmVudDsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVu
dFF1ZXVlOjpoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6YW55T2YobV9wZW5kaW5nRXZlbnRzLCBbJl0oYXV0byYg
ZXZlbnQpIHsgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0gdHlwZTsgfSk7Ci19Ci0KLXZvaWQgRXZl
bnRMb29wRXZlbnRRdWV1ZTo6c3RvcCgpCi17Ci0gICAgY2xvc2UoKTsKLX0KLQotY29uc3QgY2hh
ciogRXZlbnRMb29wRXZlbnRRdWV1ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICJFdmVudExvb3BFdmVudFF1ZXVlIjsKLX0KLQotVW5pcXVlUmVmPEV2ZW50TG9v
cEV2ZW50UXVldWU+IEV2ZW50TG9vcEV2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZl
bnRUYXJnZXQpCi17Ci0gICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxFdmVudExv
b3BFdmVudFF1ZXVlPihldmVudFRhcmdldCk7Ci0gICAgZXZlbnRRdWV1ZS0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0gICAgcmV0dXJuIGV2ZW50UXVldWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZm
Zjc0NzYyZTdkMzE1ZDQ1NDMxYTFjNDJkMTk4OWMxNjg0YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BF
dmVudFF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIFZpY3RvciBDYXJidW5lICh2aWN0b3JAcm9zZWR1Lm9yZykKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBjYWxsIHNpdGVzIHRv
IHRoZSBIVE1MIGV2ZW50IGxvb3AgYW5kIHJlbW92ZSB0aGlzIGNsYXNzLgotY2xhc3MgRXZlbnRM
b29wRXZlbnRRdWV1ZSA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxFdmVudExvb3BFdmVudFF1ZXVlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBjcmVh
dGUoRXZlbnRUYXJnZXQmKTsKLQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4m
Jik7Ci0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKLSAg
ICBib29sIGhhc1BlbmRpbmdFdmVudHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Owot
Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8RXZlbnRMb29wRXZlbnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRU
YXJnZXQmPihXZWJDb3JlOjpFdmVudFRhcmdldCYpOwotICAgIGV4cGxpY2l0IEV2ZW50TG9vcEV2
ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKLQotICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwot
Ci0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgc3RvcCgpIGZpbmFsOwotCi0gICAgRXZlbnRUYXJnZXQmIG1fb3duZXI7Ci0gICAgRGVx
dWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwotICAgIGJvb2wgbV9pc0Nsb3NlZCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRmlyaW5nRXZlbnQgeyBmYWxzZSB9OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggNmQ3MDMzYjFlMGE4NjlhZDAzNzliNWFjZDY5NjBmYmE1ZWM0ODMzNS4uZGZhNDI2
NWI2NDNkZTQxY2QyMjZiYTVlZTY1ZDVkZTc4NjFmNmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOTQsNyArMzk0LDYgQEAgSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW0KICAgICAsIG1fc2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2Nh
blRpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5
YmFja1Bvc2l0aW9uRW5kZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1Bs
YXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShF
dmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9sYXN0VGltZVVwZGF0
ZUV2ZW50TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fZmlyc3RUaW1lUGxheWluZyh0cnVlKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQpAQCAtNTE3
LDggKzUxNiw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBi
ZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICAgICBhbGxNZWRpYUVs
ZW1lbnRzKCkucmVtb3ZlKHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7
Ci0KICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3Rlcldp
dGhEb2N1bWVudChkb2N1bWVudCgpKTsKIApAQCAtODk3LDIwICs4OTQsMTMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50TmFtZSkKIHsKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwotCi0gICAgLy8g
RG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBp
biBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCi0gICAg
Ly8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2Vk
IGZvciBkZWxldGlvbi4KLQotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShldmVudCkpOworICAgIHNjaGVkdWxlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAot
I2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBtX2FzeW5jRXZlbnRR
dWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxl
VGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2Fz
eW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKIH0KLSNlbmRpZgog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlz
ZXMoKQogewpAQCAtMTc3NywyMCArMTc2NywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAg
ICAgIC8vIGxlc3MgdGhhbiB0aGUgZW5kVGltZSBpbiB0aGUgY3VlLgogICAgICAgICBpZiAoZXZl
bnRUYXNrLnNlY29uZC0+c3RhcnRUaW1lKCkgPj0gZXZlbnRUYXNrLnNlY29uZC0+ZW5kVGltZSgp
KSB7CiAgICAgICAgICAgICBhdXRvIGVudGVyRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbnRlckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwotICAgICAgICAgICAgZW50ZXJFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNv
bmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3Zl
KGVudGVyRXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNl
Y29uZCwgV1RGTW92ZShlbnRlckV2ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50
ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAgICAgICAgZXhpdEV2ZW50LT5z
ZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXhpdEV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIFdURk1vdmUoZXhpdEV2ZW50KSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAgICAgICAg
aWYgKGV2ZW50VGFzay5maXJzdCA9PSBldmVudFRhc2suc2Vjb25kLT5zdGFydE1lZGlhVGltZSgp
KQogICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50
ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29u
ZCwgZXZlbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MDIs
OCArMTc4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAvLyB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSBUZXh0VHJhY2sgb2JqZWN0LCBhbmQs
IC4uLgogICAgIGZvciAoYXV0byYgYWZmZWN0ZWRUcmFjayA6IGFmZmVjdGVkVHJhY2tzKSB7CiAg
ICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAg
ICAgICAgZXZlbnQtPnNldFRhcmdldChhZmZlY3RlZFRyYWNrKTsKLSAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnRPbigqYWZmZWN0ZWRUcmFjaywgV1RGTW92ZShldmVudCkpOwogCiAgICAgICAgIC8vIC4u
LiBpZiB0aGUgdGV4dCB0cmFjayBoYXMgYSBjb3JyZXNwb25kaW5nIHRyYWNrIGVsZW1lbnQsIHRv
IHRoZW4gZmlyZSBhCiAgICAgICAgIC8vIHNpbXBsZSBldmVudCBuYW1lZCBjdWVjaGFuZ2UgYXQg
dGhlIHRyYWNrIGVsZW1lbnQgYXMgd2VsbC4KQEAgLTE4MTEsOCArMTc5Nyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUm
IG1vdmllVGltZSkKICAgICAgICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGF1dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0
cihkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVu
dCgpKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgZXZl
bnQtPnNldFRhcmdldCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2
ZW50T24oKnRyYWNrRWxlbWVudCwgV1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0yMTM3LDcgKzIxMjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGlu
Z0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxs
RXZlbnRzKCk7CisgICAgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwog
CiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVu
dD4oKnRoaXMpKQogICAgICAgICBzb3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAg
LTI1MDEsOCArMjQ4Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdl
YktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtl
eUV2ZW50LCBpbml0RGF0YSk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVs
ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yNjUxLDcgKzI2
MzUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbgogICAgIC8vICAgICAgaW5pdERhdGFUeXBl
ID0gaW5pdERhdGFUeXBlCiAgICAgLy8gICAgICBpbml0RGF0YSA9IGluaXREYXRhCiAgICAgTWVk
aWFFbmNyeXB0ZWRFdmVudEluaXQgaW5pdGlhbGl6ZXIgeyBpbml0RGF0YVR5cGUsIFdURk1vdmUo
aW5pdERhdGEpIH07Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVu
Y3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFs
aXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CisgICAgc2NoZWR1bGVFdmVudChNZWRpYUVu
Y3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFs
aXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC01NjE3LDcgKzU2MDEsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2Vs
UGVuZGluZ1Rhc2tzKCk7CiAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25H
cm91cC5jYW5jZWwoKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2xvc2UoKTsKKyAgICBtX2Fz
eW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y29udGV4dERlc3Ryb3llZCgpCkBAIC01NzA1LDcgKzU2ODksNiBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Omhhc0xpdmVTb3VyY2UoKSBjb25zdAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
cmVhdGluZ0NvbnRyb2xzCi0gICAgICAgIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5n
QWN0aXZpdHkoKQogICAgICAgICB8fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAgICAg
ICAgfHwgKGhhc0xpdmVTb3VyY2UoKSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAgLTU4
OTMsOCArNTg3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21l
ZGlhU2Vzc2lvbiAmJiBtZWRpYVNlc3Npb24oKS5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygp
OwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJn
ZXRzKTsKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCwgaGFzVGFyZ2V0cyk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
LSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBzY2hlZHVsZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlh
U3RhdGUoKTsKIH0KIApAQCAtODE0OCw2ICs4MTMwLDExIEBAIE1lZGlhRWxlbWVudFNlc3Npb24m
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICptX21l
ZGlhU2Vzc2lvbjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7Cisg
ICAgdGFyZ2V0LnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KHRhcmdldCwgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdU
Rk1vdmUoZXZlbnQpKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZDhlZTcwMjQ4MjBjOGUyYTgwYzA5YjFlNzFkZTI1ZjA4OTFjNTBl
Ny4uNTA5ZjhiZGYwNTc3MTNmNzdhNmZkMmZjZGU5MDY2MzA3NDk0NGJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAgLTU0OSw5ICs1NDgsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkg
ZmluYWw7CiAKLSNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNj
aGVkdWxlRXZlbnQoUmVmPEV2ZW50PiYmKTsKLSNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZSB7IE5vbmUsIFByZXZlbnRlZEF1dG9wbGF5LCBTdGFydGVk
V2l0aFVzZXJHZXN0dXJlLCBTdGFydGVkV2l0aG91dFVzZXJHZXN0dXJlIH07CiAKQEAgLTU3NCw2
ICs1NzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRl
OwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB1c2luZyBFdmVu
dFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBv
dmVycmlkZTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAg
dmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtNjAyLDYgKzYwNCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHVwZGF0ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFu
Z2UoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8
RXZlbnQ+JiYpOwogCiAgICAgYm9vbCBzaG93UG9zdGVyRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvd1Bvc3RlcjsgfQogICAgIHZvaWQgc2V0U2hvd1Bvc3RlckZsYWcoYm9vbCk7CkBAIC02OTAs
MTMgKzY5MywxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGlu
dWVBZnRlck5lZWRLZXkoKTsKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsKLQotICAgIHVzaW5nIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50OwotICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtOTUxLDcgKzk1MSw3IEBAIHByaXZhdGU6CiAgICAgVGFza0NhbmNlbGxhdGlvbkdy
b3VwIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAg
ICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRp
b25Hcm91cDsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwotICAg
IFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBU
YXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fdm9sdW1l
UmV2ZXJ0VGFza0NhbmNlbGxhdGlvbkdyb3VwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKaW5kZXggYTYwZTk5ZWFiZmI4OWM4OTJhNTFk
MmU4NTg1ZGU5ZGJjNjYwYTE0ZC4uOWNmYTE0ZGYyYWU5NTg2NmM1M2I4YjEwM2I2ZDg1OWQ0YmZk
NWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNw
cApAQCAtNTAsNyArNTAsOSBAQCBSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudAogICAgICAgICByZXR1
cm4gSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQ
cml2YXRlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIElu
YmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUp
OworICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBJbmJhbmRUZXh0VHJhY2s6OkluYmFu
ZFRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDc4MGJlMzJjZTM0NWE3NDI5
OTFjMzQxMmM0MzlmY2NlNDhmNzJjNTIuLjc0NjMyMGQ3YzE0ZDJjNDc1YmEwNDM2YjdjYmI1N2Ew
NDE3NjVmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0
VHJhY2suY3BwCkBAIC00OCw3ICs0OCw5IEBAIExvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRl
eHRUcmFjayhIVE1MVHJhY2tFbGVtZW50JiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kCiAKIFJl
ZjxMb2FkYWJsZVRleHRUcmFjaz4gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZShIVE1MVHJhY2tF
bGVtZW50JiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvYWRh
YmxlVGV4dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAgICBhdXRvIHRl
eHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxh
YmVsLCBsYW5ndWFnZSkpOworICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAg
cmV0dXJuIHRleHRUcmFjazsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVM
b2FkKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
CmluZGV4IGQ5YjQ3ZDIwYjg5YmI2Nzg2OGIwZGZjZTcxMjI0Mjk2NzE4MGEwMDUuLmU1ZTUwYjQx
OTU2ZWIxNDE2MWIzYWY1MjgzODFhNTc1ZGQwZjE4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBUZXh0VHJhY2smIFRleHRUcmFj
azo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIAogVGV4dFRyYWNrOjpUZXh0VHJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNv
bnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlw
ZSkKICAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywgaWQsIGxhYmVsLCBsYW5n
dWFnZSkKLSAgICAsIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisgICAgLCBB
Y3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
dHJhY2tUeXBlKHR5cGUpCiB7CkBAIC0xMTgsNyArMTE4LDkgQEAgVGV4dFRyYWNrOjpUZXh0VHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGll
bnQsIGMKIAogUmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29u
c3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYW5ndWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2soZG9j
dW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKKyAg
ICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrKGRvY3VtZW50LCBjbGll
bnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CisgICAgdGV4dFRyYWNr
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBUZXh0VHJh
Y2s6On5UZXh0VHJhY2soKQpAQCAtNTkwLDYgKzU5MiwxMSBAQCBib29sIFRleHRUcmFjazo6Y29u
dGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9raW5kID09IEtp
bmQ6OkZvcmNlZDsKIH0KIAorY29uc3QgY2hhciogVGV4dFRyYWNrOjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlRleHRUcmFjayI7Cit9CisKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQogdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJp
bmcmIGxhbmd1YWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXgg
OWE1MzM0ODQyMmViZGE5MThiZmEzZmI1YzEwZTYzOTUxZmE4MTQ0Ny4uNzQ2MzJlYTRjMGQ5YTAz
N2E3YjY2MDExNzdkMzRjOWE5YzE1M2U2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKIH07CiAKLWNsYXNz
IFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgVGV4dFRy
YWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4
dFRyYWNrKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRlKERvY3Vt
ZW50KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSk7CkBAIC0xNTksNiArMTU5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlRleHRUcmFjayI7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsCmluZGV4IDA5YjZkMWMxOTdiMmU5OWRhNzZjYjlkM2M0ZWYwZDJlNTViYzMw
NDIuLmVkYTU5YmM0M2UxNTI4MmVhYmNkMGJjYTgzYjgzMWZkMjhlOTkyZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTI3LDYgKzI3LDcgQEAgZW51bSBUZXh0
VHJhY2tNb2RlIHsgImRpc2FibGVkIiwgImhpZGRlbiIsICJzaG93aW5nIiB9OwogZW51bSBUZXh0
VHJhY2tLaW5kIHsgInN1YnRpdGxlcyIsICJjYXB0aW9ucyIsICJkZXNjcmlwdGlvbnMiLCAiY2hh
cHRlcnMiLCAibWV0YWRhdGEiLCAiZm9yY2VkIiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGQ0YjZiZWIzZWE1YzM4NjU0MTFmM2Qz
NzIzMWUyMTg3NWVjZmRlYTcuLjNjYzE0MGMzNDhmNzQ0MTkwNzY3Y2Y2NjVkNjM5YTA1MDM4OGUx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTIy
MiwyMSArMjIyLDI1IEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2tDdWU+PiBUZXh0VHJhY2tD
dWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGRvdWJsZSBzCiAgICAgaWYgKCFub2RlVHlw
ZXMuY29udGFpbnMoUmVxdWlyZWROb2Rlczo6Q3VlQmFja2dyb3VuZCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgbWFrZVN0cmluZygiTWlzc2luZyByZXF1
aXJlZCBhdHRyaWJ1dGU6ICIsIGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKS50b1N0cmluZygp
KSB9OwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlKGRvY3VtZW50LCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoZW5kKSwgV1RGTW92ZShmcmFnbWVudCkpKTsKKyAgICBhdXRvIHRleHRUcmFja0N1ZSA9
IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92
ZShmcmFnbWVudCkpKTsKKyAgICB0ZXh0VHJhY2tDdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAg
IHJldHVybiB0ZXh0VHJhY2tDdWU7CiB9CiAKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGN1ZUZyYWdtZW50KQotICAgIDogbV9zdGFy
dFRpbWUoc3RhcnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgLCBtX3N0
YXJ0VGltZShzdGFydCkKICAgICAsIG1fZW5kVGltZShlbmQpCiAgICAgLCBtX2RvY3VtZW50KGRv
Y3VtZW50KQogICAgICwgbV9jdWVOb2RlKFdURk1vdmUoY3VlRnJhZ21lbnQpKQogewogfQogCi1U
ZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShEb2N1bWVudCYgY29udGV4dCwgY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQpCi0gICAgOiBtX3N0YXJ0VGltZShzdGFy
dCkKK1RleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQpCisgICAgOiBBY3RpdmVET01P
YmplY3QoZG9jdW1lbnQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKICAgICAsIG1fZW5kVGlt
ZShlbmQpCi0gICAgLCBtX2RvY3VtZW50KGNvbnRleHQpCisgICAgLCBtX2RvY3VtZW50KGRvY3Vt
ZW50KQogewogfQogCkBAIC01MzEsNiArNTM1LDExIEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1
aWxkRGlzcGxheVRyZWUoKQogICAgIG1fZGlzcGxheVRyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwog
fQogCitjb25zdCBjaGFyKiBUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiAiVGV4dFRyYWNrQ3VlIjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmlu
ZGV4IGI1MDM4MWM1YWRmY2Y2ZjUwZmVkMzVkNGE4OWQxZTc4MTc1M2QzNTIuLmY3MmI5NmY4ZjM2
MTgxNDU4ODQ4ZTQ5MDM4ZWU1N2JiODRjNGRkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
VGV4dFRyYWNrQ3VlPiBtX2N1ZTsKIH07CiAKLWNsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
IHsKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0N1ZSk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZVNoYWRvd1BzZXVkb0lkKCk7CkBAIC0xNDYs
NiArMTQ2LDkgQEAgcHJpdmF0ZToKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFRleHRUcmFja0N1ZUV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKwogICAgIHZv
aWQgcmVidWlsZERpc3BsYXlUcmVlKCk7CiAKICAgICBTdHJpbmcgbV9pZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAppbmRleCA3NWQ2MDBhMDc2ZjhkYzZiNDNl
MzNkNjNkOTBhOWJlMTYwZmUzMTY0Li5mMGYwNTlkZjJlOWRmZDE4ZWNkMzA3NjEwMWY4YmYyMTcx
NjZjYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCkBA
IC0yNSw2ICsyNSw3IEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1WSURFTywKICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICBDdXN0b21Ub0pTT2Jq
ZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2Vj
MWMzMGFlZjkxNDVlNjZhODljZWU4NWVmNWYuLmE1YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTcz
YWY5ODFhMGMyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwx
MiArMjY0LDE2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1
ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBT
dHJpbmcmJiBjb250ZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1
bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGVuZCksIFdURk1vdmUoY29udGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFk
b3B0UmVmKCpuZXcgVlRUQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
c3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50
KSkpOworICAgIGN1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAog
UmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJW
VFRDdWVEYXRhJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1
bWVudCwgZGF0YSkpOworICAgIGF1dG8gY3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1l
bnQsIGRhdGEpKTsKKyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7
CiB9CiAKIFZUVEN1ZTo6VlRUQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430858</attachid>
            <date>2021-06-08 10:28:41 -0700</date>
            <delta_ts>2021-06-08 10:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608102840.patch</filename>
            <type>text/plain</type>
            <size>44725</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApp
bmRleCA4OWQ4OTgyMGE3NjQ3N2QwMThmM2NmZTM0MTljNzE2ZGM2NDU1MGE4Li4xNmRmZDU2ODg5
N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4YWVkZGVhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTM4LDExICsxMzgsMTAgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgp
PiYKIAogY2xhc3MgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZl
bnRMb29wVGFzayB7CiBwdWJsaWM6Ci0gICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRh
c2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURP
TU9iamVjdCYgb2JqZWN0LCBFdmVudFRhcmdldCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQp
CisgICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBGdW5j
dGlvbjx2b2lkKCk+JiYgZGlzcGF0Y2hFdmVudCkKICAgICAgICAgOiBFdmVudExvb3BUYXNrKHNv
dXJjZSwgZ3JvdXApCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fdGFy
Z2V0KHRhcmdldCkKLSAgICAgICAgLCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQorICAgICAgICAs
IG1fZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGRpc3BhdGNoRXZlbnQpKQogICAgIHsKICAgICAgICAg
KyttX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQ7CiAgICAgfQpAQCAtMTU4
LDEzICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBJZiB0aGlzIHRhc2sgZXhlY3V0ZXMg
YWZ0ZXIgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBoYXMgYmVlbiBzdG9wcGVkLCBkb24n
dAogICAgICAgICAvLyBhY3R1YWxseSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgICAgIGlmICht
X29iamVjdC5pc0FsbG93ZWRUb1J1blNjcmlwdCgpKQotICAgICAgICAgICAgbV90YXJnZXQtPmRp
c3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Rpc3BhdGNoRXZlbnQo
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQWN0aXZlRE9NT2JqZWN0JiBtX29iamVjdDsKLSAg
ICBSZWY8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OwotICAgIFJlZjxFdmVudD4gbV9ldmVudDsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fZGlzcGF0Y2hFdmVudDsKIH07CiAKIHZvaWQgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQpAQCAtMTc0LDcgKzE3
MiwyMiBAQCB2b2lkIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50
ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFzawogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8mIGV2ZW50TG9vcFRhc2tHcm91cCA9IGNvbnRleHQtPmV2ZW50
TG9vcCgpOwotICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnRE
aXNwYXRjaFRhc2s+KHNvdXJjZSwgZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgdGFyZ2V0LCBX
VEZNb3ZlKGV2ZW50KSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmpl
Y3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBb
dGFyZ2V0ID0gbWFrZVJlZih0YXJnZXQpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAg
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgfSk7CisgICAgZXZlbnRMb29w
VGFza0dyb3VwLnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBBY3RpdmVET01P
YmplY3Q6OnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRU
YXJnZXQmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYg
Y2FuY2VsbGF0aW9uR3JvdXAsIFJlZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBBU1NFUlQoIWV2
ZW50LT50YXJnZXQoKSB8fCAmdGFyZ2V0ID09IGV2ZW50LT50YXJnZXQoKSk7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5l
dmVudExvb3AoKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2
ZW50RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNl
bGxhYmxlVGFzayhjYW5jZWxsYXRpb25Hcm91cCwgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwg
ZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworICAgIH0pKTsKICAgICBldmVudExvb3BUYXNrR3JvdXAucXVldWVUYXNrKFdURk1v
dmUodGFzaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTEw
NzRiMDE4NTdmNjRmZmU5YmIyZjgyODBmZDYzY2U2ZjhjNGRkYi4uNjU3OGI2NDA5ZDM0OTczN2Y0
NmEyNzVhMmQ4OTU5Nzc3Zjk5NGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
aApAQCAtMTIwLDEyICsxMjAsMTggQEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4K
LSAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBl
JiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnRUeXBlPiYmIGV2ZW50KQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZT4KKyAgICBzdGF0aWMgdm9pZCBxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ug
c291cmNlLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgewogICAgICAgICB0YXJnZXQucXVldWVU
YXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIFdURk1vdmUoZXZlbnQp
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAg
c3RhdGljIHZvaWQgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJn
ZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAm
IGNhbmNlbGxhdGlvbkdyb3VwLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgeworICAgICAgICB0
YXJnZXQucXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbCh0YXJnZXQs
IHNvdXJjZSwgY2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIGV4cGxpY2l0IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCopOwpAQCAtMTQy
LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRh
c2tTb3VyY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmLCBUYXNrU291cmNlLCBSZWY8RXZlbnQ+JiYp
OworICAgIHZvaWQgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChF
dmVudFRhcmdldCYsIFRhc2tTb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYsIFJlZjxFdmVu
dD4mJik7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQgeyAw
IH07CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExvb3BFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVu
dFF1ZXVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjMTYyMTcyYTM3YWJk
NTJlNDZlMmM2YjMwOGY5MWVhMzAyOTllYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBWaWN0b3IgQ2FyYnVuZSAodmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRXZlbnRMb29wRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+Ci0j
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FdmVudExvb3BFdmVudFF1ZXVlOjpFdmVudExvb3BF
dmVudFF1ZXVlKEV2ZW50VGFyZ2V0JiBvd25lcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25l
ci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX293bmVyKG93bmVyKQotewotfQot
Ci12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYg
ZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGV2ZW50LT50YXJnZXQoKSA9PSAmbV9vd25l
cikKLSAgICAgICAgZXZlbnQtPnNldFRhcmdldChudWxscHRyKTsKLQotICAgIG1fcGVuZGluZ0V2
ZW50cy5hcHBlbmQoV1RGTW92ZShldmVudCkpOwotCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAg
ICAgICAgICAgd2Vha1RoaXMtPmRpc3BhdGNoT25lRXZlbnQoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBFdmVudExvb3BFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50KCkKLXsKLSAgICBBU1NFUlQo
IW1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkpOwotCi0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90
ZWN0ZWRPd25lcihtX293bmVyKTsKLSAgICBTZXRGb3JTY29wZTxib29sPiBldmVudEZpcmluZ1Nj
b3BlKG1faXNGaXJpbmdFdmVudCwgdHJ1ZSk7Ci0KLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0g
bV9wZW5kaW5nRXZlbnRzLnRha2VGaXJzdCgpOwotICAgIFJlZjxFdmVudFRhcmdldD4gdGFyZ2V0
ID0gZXZlbnQtPnRhcmdldCgpID8gKmV2ZW50LT50YXJnZXQoKSA6IG1fb3duZXI7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdGFyZ2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2
ZURPTU9iamVjdHNBcmVTdG9wcGVkKCksCi0gICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3BhdGNo
IGFuIGV2ZW50IG9uIGEgc3RvcHBlZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9JWQg
KG5vZGVOYW1lPSVzIHRhcmdldD0lcCBvd25lcj0lcCkiLAotICAgICAgICBtX293bmVyLmV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCksIG1fb3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2RlJj4o
bV9vd25lcikubm9kZU5hbWUoKS5hc2NpaSgpLmRhdGEoKSA6ICIiLCB0YXJnZXQucHRyKCksICZt
X293bmVyKTsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKLX0KLQotdm9pZCBF
dmVudExvb3BFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0g
ICAgY2FuY2VsQWxsRXZlbnRzKCk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2Fu
Y2VsQWxsRXZlbnRzKCkKLXsKLSAgICB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOwotICAg
IG1fcGVuZGluZ0V2ZW50cy5jbGVhcigpOwotfQotCi1ib29sIEV2ZW50TG9vcEV2ZW50UXVldWU6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3BlbmRpbmdFdmVu
dHMuaXNFbXB0eSgpIHx8IG1faXNGaXJpbmdFdmVudDsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVu
dFF1ZXVlOjpoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6YW55T2YobV9wZW5kaW5nRXZlbnRzLCBbJl0oYXV0byYg
ZXZlbnQpIHsgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0gdHlwZTsgfSk7Ci19Ci0KLXZvaWQgRXZl
bnRMb29wRXZlbnRRdWV1ZTo6c3RvcCgpCi17Ci0gICAgY2xvc2UoKTsKLX0KLQotY29uc3QgY2hh
ciogRXZlbnRMb29wRXZlbnRRdWV1ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICJFdmVudExvb3BFdmVudFF1ZXVlIjsKLX0KLQotVW5pcXVlUmVmPEV2ZW50TG9v
cEV2ZW50UXVldWU+IEV2ZW50TG9vcEV2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZl
bnRUYXJnZXQpCi17Ci0gICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxFdmVudExv
b3BFdmVudFF1ZXVlPihldmVudFRhcmdldCk7Ci0gICAgZXZlbnRRdWV1ZS0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0gICAgcmV0dXJuIGV2ZW50UXVldWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZm
Zjc0NzYyZTdkMzE1ZDQ1NDMxYTFjNDJkMTk4OWMxNjg0YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BF
dmVudFF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIFZpY3RvciBDYXJidW5lICh2aWN0b3JAcm9zZWR1Lm9yZykKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBjYWxsIHNpdGVzIHRv
IHRoZSBIVE1MIGV2ZW50IGxvb3AgYW5kIHJlbW92ZSB0aGlzIGNsYXNzLgotY2xhc3MgRXZlbnRM
b29wRXZlbnRRdWV1ZSA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxFdmVudExvb3BFdmVudFF1ZXVlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBjcmVh
dGUoRXZlbnRUYXJnZXQmKTsKLQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4m
Jik7Ci0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKLSAg
ICBib29sIGhhc1BlbmRpbmdFdmVudHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Owot
Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8RXZlbnRMb29wRXZlbnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRU
YXJnZXQmPihXZWJDb3JlOjpFdmVudFRhcmdldCYpOwotICAgIGV4cGxpY2l0IEV2ZW50TG9vcEV2
ZW50UXVldWUoRXZlbnRUYXJnZXQmKTsKLQotICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwot
Ci0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgc3RvcCgpIGZpbmFsOwotCi0gICAgRXZlbnRUYXJnZXQmIG1fb3duZXI7Ci0gICAgRGVx
dWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwotICAgIGJvb2wgbV9pc0Nsb3NlZCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRmlyaW5nRXZlbnQgeyBmYWxzZSB9OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggNmQ3MDMzYjFlMGE4NjlhZDAzNzliNWFjZDY5NjBmYmE1ZWM0ODMzNS4uZGZhNDI2
NWI2NDNkZTQxY2QyMjZiYTVlZTY1ZDVkZTc4NjFmNmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOTQsNyArMzk0LDYgQEAgSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW0KICAgICAsIG1fc2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2Nh
blRpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5
YmFja1Bvc2l0aW9uRW5kZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1Bs
YXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShF
dmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9sYXN0VGltZVVwZGF0
ZUV2ZW50TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fZmlyc3RUaW1lUGxheWluZyh0cnVlKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQpAQCAtNTE3
LDggKzUxNiw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBi
ZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICAgICBhbGxNZWRpYUVs
ZW1lbnRzKCkucmVtb3ZlKHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7
Ci0KICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3Rlcldp
dGhEb2N1bWVudChkb2N1bWVudCgpKTsKIApAQCAtODk3LDIwICs4OTQsMTMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50TmFtZSkKIHsKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwotCi0gICAgLy8g
RG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBp
biBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCi0gICAg
Ly8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2Vk
IGZvciBkZWxldGlvbi4KLQotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShldmVudCkpOworICAgIHNjaGVkdWxlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAot
I2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBtX2FzeW5jRXZlbnRR
dWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxl
VGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2Fz
eW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKIH0KLSNlbmRpZgog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlz
ZXMoKQogewpAQCAtMTc3NywyMCArMTc2NywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAg
ICAgIC8vIGxlc3MgdGhhbiB0aGUgZW5kVGltZSBpbiB0aGUgY3VlLgogICAgICAgICBpZiAoZXZl
bnRUYXNrLnNlY29uZC0+c3RhcnRUaW1lKCkgPj0gZXZlbnRUYXNrLnNlY29uZC0+ZW5kVGltZSgp
KSB7CiAgICAgICAgICAgICBhdXRvIGVudGVyRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbnRlckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwotICAgICAgICAgICAgZW50ZXJFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNv
bmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3Zl
KGVudGVyRXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNl
Y29uZCwgV1RGTW92ZShlbnRlckV2ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50
ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAgICAgICAgZXhpdEV2ZW50LT5z
ZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXhpdEV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIFdURk1vdmUoZXhpdEV2ZW50KSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAgICAgICAg
aWYgKGV2ZW50VGFzay5maXJzdCA9PSBldmVudFRhc2suc2Vjb25kLT5zdGFydE1lZGlhVGltZSgp
KQogICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50
ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29u
ZCwgZXZlbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MDIs
OCArMTc4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAvLyB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSBUZXh0VHJhY2sgb2JqZWN0LCBhbmQs
IC4uLgogICAgIGZvciAoYXV0byYgYWZmZWN0ZWRUcmFjayA6IGFmZmVjdGVkVHJhY2tzKSB7CiAg
ICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAg
ICAgICAgZXZlbnQtPnNldFRhcmdldChhZmZlY3RlZFRyYWNrKTsKLSAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnRPbigqYWZmZWN0ZWRUcmFjaywgV1RGTW92ZShldmVudCkpOwogCiAgICAgICAgIC8vIC4u
LiBpZiB0aGUgdGV4dCB0cmFjayBoYXMgYSBjb3JyZXNwb25kaW5nIHRyYWNrIGVsZW1lbnQsIHRv
IHRoZW4gZmlyZSBhCiAgICAgICAgIC8vIHNpbXBsZSBldmVudCBuYW1lZCBjdWVjaGFuZ2UgYXQg
dGhlIHRyYWNrIGVsZW1lbnQgYXMgd2VsbC4KQEAgLTE4MTEsOCArMTc5Nyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUm
IG1vdmllVGltZSkKICAgICAgICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGF1dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0
cihkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVu
dCgpKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgZXZl
bnQtPnNldFRhcmdldCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2
ZW50T24oKnRyYWNrRWxlbWVudCwgV1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0yMTM3LDcgKzIxMjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGlu
Z0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxs
RXZlbnRzKCk7CisgICAgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwog
CiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVu
dD4oKnRoaXMpKQogICAgICAgICBzb3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAg
LTI1MDEsOCArMjQ4Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdl
YktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtl
eUV2ZW50LCBpbml0RGF0YSk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVs
ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yNjUxLDcgKzI2
MzUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbgogICAgIC8vICAgICAgaW5pdERhdGFUeXBl
ID0gaW5pdERhdGFUeXBlCiAgICAgLy8gICAgICBpbml0RGF0YSA9IGluaXREYXRhCiAgICAgTWVk
aWFFbmNyeXB0ZWRFdmVudEluaXQgaW5pdGlhbGl6ZXIgeyBpbml0RGF0YVR5cGUsIFdURk1vdmUo
aW5pdERhdGEpIH07Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVu
Y3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFs
aXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CisgICAgc2NoZWR1bGVFdmVudChNZWRpYUVu
Y3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFs
aXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC01NjE3LDcgKzU2MDEsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2Vs
UGVuZGluZ1Rhc2tzKCk7CiAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25H
cm91cC5jYW5jZWwoKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2xvc2UoKTsKKyAgICBtX2Fz
eW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y29udGV4dERlc3Ryb3llZCgpCkBAIC01NzA1LDcgKzU2ODksNiBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Omhhc0xpdmVTb3VyY2UoKSBjb25zdAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
cmVhdGluZ0NvbnRyb2xzCi0gICAgICAgIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5n
QWN0aXZpdHkoKQogICAgICAgICB8fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAgICAg
ICAgfHwgKGhhc0xpdmVTb3VyY2UoKSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAgLTU4
OTMsOCArNTg3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21l
ZGlhU2Vzc2lvbiAmJiBtZWRpYVNlc3Npb24oKS5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygp
OwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJn
ZXRzKTsKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCwgaGFzVGFyZ2V0cyk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
LSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBzY2hlZHVsZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlh
U3RhdGUoKTsKIH0KIApAQCAtODE0OCw2ICs4MTMwLDExIEBAIE1lZGlhRWxlbWVudFNlc3Npb24m
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICptX21l
ZGlhU2Vzc2lvbjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7Cisg
ICAgdGFyZ2V0LnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KHRhcmdldCwgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdU
Rk1vdmUoZXZlbnQpKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZDhlZTcwMjQ4MjBjOGUyYTgwYzA5YjFlNzFkZTI1ZjA4OTFjNTBl
Ny4uNTA5ZjhiZGYwNTc3MTNmNzdhNmZkMmZjZGU5MDY2MzA3NDk0NGJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAgLTU0OSw5ICs1NDgsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkg
ZmluYWw7CiAKLSNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNj
aGVkdWxlRXZlbnQoUmVmPEV2ZW50PiYmKTsKLSNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZSB7IE5vbmUsIFByZXZlbnRlZEF1dG9wbGF5LCBTdGFydGVk
V2l0aFVzZXJHZXN0dXJlLCBTdGFydGVkV2l0aG91dFVzZXJHZXN0dXJlIH07CiAKQEAgLTU3NCw2
ICs1NzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRl
OwogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB1c2luZyBFdmVu
dFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBv
dmVycmlkZTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAg
dmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtNjAyLDYgKzYwNCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHVwZGF0ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFu
Z2UoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8
RXZlbnQ+JiYpOwogCiAgICAgYm9vbCBzaG93UG9zdGVyRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvd1Bvc3RlcjsgfQogICAgIHZvaWQgc2V0U2hvd1Bvc3RlckZsYWcoYm9vbCk7CkBAIC02OTAs
MTMgKzY5MywxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGlu
dWVBZnRlck5lZWRLZXkoKTsKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsKLQotICAgIHVzaW5nIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50OwotICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtOTUxLDcgKzk1MSw3IEBAIHByaXZhdGU6CiAgICAgVGFza0NhbmNlbGxhdGlvbkdy
b3VwIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAg
ICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRp
b25Hcm91cDsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwotICAg
IFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBU
YXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fdm9sdW1l
UmV2ZXJ0VGFza0NhbmNlbGxhdGlvbkdyb3VwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAppbmRleCA5Y2NiOTkyOWM0ZjYz
ZjNhNjEwNTdiNjk2NjRlMTU1MzM3ODFmMWM2Li44MzgwMjMyYjc5MjhhMjdiOTMyMzY4MDZjMDI4
NTI5ZjA3YmJlYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgaW5saW5lIEluYmFuZERhdGFUZXh0
VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tD
bGkKIAogUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5iYW5kRGF0YVRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAg
ICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhkb2N1
bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZERhdGFUZXh0VHJhY2s6
On5JbmJhbmREYXRhVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggNjMxMjExNzZm
NzhlNDI2MTNlMmU1NWFiNTJlNTZhZTBlZmJiMDdkNi4uNTU2ZTQ0OWU4NzYyYWYxNTA1YzkxMDkw
MzY3ZWUxNThkZDNhMDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC03MCw3ICs3MCw5IEBAIGlubGluZSBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1
bWVudCwgVGV4dFRyCiAKIFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNs
aWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwg
dHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAg
dGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQog
CiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcApp
bmRleCBhNjBlOTllYWJmYjg5Yzg5MmE1MWQyZTg1ODVkZTlkYmM2NjBhMTRkLi45Y2ZhMTRkZjJh
ZTk1ODY2YzUzYjhiMTAzYjZkODU5ZDRiZmQ1ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC01MCw3ICs1MCw5IEBAIFJlZjxJbmJhbmRU
ZXh0VHJhY2s+IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4
dFRyYWNrQ2xpZW50CiAgICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0
ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmRE
YXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAg
ICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9
CiAKIEluYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
VGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRU
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmNwcAppbmRleCBhMjIyOGJjMTdlYTM1NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTky
Li4yYWE5ZjNiMDNhYjNhMTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC00
Niw3ICs0Niw5IEBAIGlubGluZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRl
eHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFjCiAKIFJlZjxJbmJhbmRUZXh0VHJh
Y2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4
dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9w
dFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1By
aXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
ZXh0VHJhY2s7CiB9CiAKIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRU
cmFjaygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAKaW5kZXggNzgwYmUzMmNlMzQ1YTc0Mjk5MWMzNDEyYzQzOWZjY2U0OGY3
MmM1Mi4uNzQ2MzIwZDdjMTRkMmM0NzViYTA0MzZiN2NiYjU3YTA0MTc2NWYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQ4LDcg
KzQ4LDkgQEAgTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQKIAogUmVmPExvYWRhYmxlVGV4dFRyYWNr
PiBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ss
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7Cisg
ICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwog
fQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggZDliNDdkMjBiODli
YjY3ODY4YjBkZmNlNzEyMjQyOTY3MTgwYTAwNS4uZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4
MWE1NzVkZDBmMThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9t
YXRpY0l0ZW0oKQogCiBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChjb250
ZXh0KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsK
QEAgLTExOCw3ICsxMTgsOSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogCiBSZWY8VGV4dFRy
YWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVu
dCogY2xpZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCBraW5k
LCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRyYWNrID0g
YWRvcHRSZWYoKm5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVs
LCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBA
IC01OTAsNiArNTkyLDExIEBAIGJvb2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAogICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCitj
b25zdCBjaGFyKiBUZXh0VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiVGV4dFRyYWNrIjsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lk
IFRleHRUcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA5YTUzMzQ4NDIyZWJkYTkxOGJm
YTNmYjVjMTBlNjM5NTFmYTgxNDQ3Li43NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTlj
MTUzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGlj
IFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tC
YXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGll
bnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKQEAgLTE1OSw2
ICsxNTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNr
IjsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXgg
MDliNmQxYzE5N2IyZTk5ZGE3NmNiOWQzYzRlZjBkMmU1NWJjMzA0Mi4uZWRhNTliYzQzZTE1Mjgy
ZWFiY2QwYmNhODNiODMxZmQyOGU5OTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmlkbApAQCAtMjcsNiArMjcsNyBAQCBlbnVtIFRleHRUcmFja01vZGUgeyAiZGlzYWJs
ZWQiLCAiaGlkZGVuIiwgInNob3dpbmciIH07CiBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0
bGVzIiwgImNhcHRpb25zIiwgImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZGF0YSIs
ICJmb3JjZWQiIH07CiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
VklERU8sCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRWxlbWVudFJvb3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKaW5kZXggZDRiNmJlYjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIxODc1ZWNmZGVhNy4u
OWY0MzBkMTA1YWRiYzNiNmM4OGExMGMxMWMzZjkxMDUxMWZjZjU2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgpAQCAtMjIyLDIxICsyMjMsMjUgQEAgRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRl
eHRUcmFja0N1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHMKICAgICBpZiAo
IW5vZGVUeXBlcy5jb250YWlucyhSZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNz
aW5nIHJlcXVpcmVkIGF0dHJpYnV0ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRv
U3RyaW5nKCkpIH07CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9j
dW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAgIGF1dG8gdGV4dFRy
YWNrQ3VlID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQp
LCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAgIHRleHRUcmFja0N1ZS0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIHRleHRUcmFja0N1ZTsKIH0KIAogVGV4dFRyYWNrQ3VlOjpUZXh0VHJh
Y2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgY3VlRnJhZ21lbnQpCi0gICAg
OiBtX3N0YXJ0VGltZShzdGFydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAg
ICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fZG9j
dW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2N1ZU5vZGUoV1RGTW92ZShjdWVGcmFnbWVudCkpCiB7
CiB9CiAKLVRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBjb250ZXh0LCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKLSAgICA6IG1fc3RhcnRU
aW1lKHN0YXJ0KQorVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwg
bV9lbmRUaW1lKGVuZCkKLSAgICAsIG1fZG9jdW1lbnQoY29udGV4dCkKKyAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTMzNSw3ICszNDAsNyBAQCB2b2lkIFRleHRUcmFja0N1
ZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoZXZlbnQpOwogfQogCi1ib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQorYm9vbCBU
ZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0FjdGl2ZSAm
JiB0cmFjaygpICYmIHRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVk
OwogfQpAQCAtNTMxLDYgKzUzNiwyMyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3Bs
YXlUcmVlKCkKICAgICBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIH0KIAordm9p
ZCBUZXh0VHJhY2tDdWU6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBoYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXJzID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmVudGVy
RXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQpOworfQor
Citjb25zdCBjaGFyKiBUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiAiVGV4dFRyYWNrQ3VlIjsKK30KKworYm9vbCBUZXh0VHJhY2tDdWU6OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIC8vIFdlIG5lZWQgdG8ga2Vl
cCB0aGUgSlMgd3JhcHBlciBhbGl2ZSBhcyBsb25nIGFzIGVudGVyIC8gZXhpdCBldmVudHMgbWF5
IGdldCBkaXNwYXRjaGVkLCB1bmxlc3MgdGhlcmUgYXJlIG5vdCBldmVudCBsaXN0ZW5lcnMgcmVn
aXN0ZXJlZAorICAgIC8vIGZvciB0aGVzZSBldmVudHMuCisgICAgcmV0dXJuIGhhc1JlbGV2YW50
RXZlbnRMaXN0ZW5lcnMgJiYgaXNBY3RpdmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4
IGI1MDM4MWM1YWRmY2Y2ZjUwZmVkMzVkNGE4OWQxZTc4MTc1M2QzNTIuLmNkMzY2NWQwYjVkZDFj
YTY5MjMyODY3ZGRjZWNkYWFiNDAwNjg4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8VGV4
dFRyYWNrQ3VlPiBtX2N1ZTsKIH07CiAKLWNsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
K2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0N1ZSk7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZVNoYWRvd1BzZXVkb0lkKCk7CkBAIC05Miw3ICs5
Miw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZW5kTWVkaWFUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9lbmRUaW1lOyB9CiAgICAgdm9pZCBzZXRFbmRUaW1lKGNvbnN0IE1lZGlhVGltZSYpOwog
Ci0gICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPcmRl
cmVkQmVmb3JlKGNvbnN0IFRleHRUcmFja0N1ZSopIGNvbnN0OwpAQCAtMTM3LDE1ICsxMzcsMTkg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWUoRG9jdW1lbnQmLCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPERvY3VtZW50RnJh
Z21lbnQ+JiYpOwogCisgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
ZGVyZWYoKTsgfQotCisgICAgdm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5nZSgpIGZpbmFsOwog
ICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQgZGlzcGF0Y2hF
dmVudChFdmVudCYpIGZpbmFsOwotCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tDdWVFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHJl
YnVpbGREaXNwbGF5VHJlZSgpOwogCiAgICAgU3RyaW5nIG1faWQ7CkBAIC0xNjYsNiArMTcwLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9w
YXVzZU9uRXhpdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUg
eyB0cnVlIH07CisgICAgc3RkOjphdG9taWM8Ym9vbD4gaGFzUmVsZXZhbnRFdmVudExpc3RlbmVy
cyB7IGZhbHNlIH07CiB9OwogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuaWRsCmluZGV4IDc1ZDYwMGEwNzZmOGRjNmI0M2UzM2Q2M2Q5MGE5
YmUxNjBmZTMxNjQuLmYwZjA1OWRmMmU5ZGZkMThlY2QzMDc2MTAxZjhiZjIxNzE2NmNiYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKQEAgLTI1LDYgKzI1
LDcgQEAKICAqLwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJ
REVPLAogICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAppbmRl
eCBmZmJlY2E5YTAzM2M1ZWQyYThmYzFiZDEwOTk5ODNhODMxNTI1ZmE0Li5mNDJkMDQ4MmNhN2Ni
OGNkYWQ5NjkxZjFlNjNkOGViY2Q0N2QzYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTE2MSw3ICsxNjEsOSBAQCB2b2lk
IFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3Qg
SW50U2l6ZSYgdmlkZW9TaXplKQogCiBSZWY8VGV4dFRyYWNrQ3VlR2VuZXJpYz4gVGV4dFRyYWNr
Q3VlR2VuZXJpYzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBh
dXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1
bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBjdWUtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFRleHRUcmFja0N1ZUdlbmVyaWM6OlRl
eHRUcmFja0N1ZUdlbmVyaWMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2VjMWMzMGFlZjkxNDVl
NjZhODljZWU4NWVmNWYuLmE1YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTczYWY5ODFhMGMyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwxMiArMjY0LDE2IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBTdHJpbmcmJiBjb250
ZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGVuZCksIFdURk1vdmUoY29udGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcg
VlRUQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50KSkpOworICAgIGN1
ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogUmVmPFZUVEN1ZT4g
VlRUQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJWVFRDdWVEYXRhJiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0YSkp
OworICAgIGF1dG8gY3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIGRhdGEpKTsK
KyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFZUVEN1
ZTo6VlRUQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430861</attachid>
            <date>2021-06-08 10:40:59 -0700</date>
            <delta_ts>2021-06-08 11:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608104059.patch</filename>
            <type>text/plain</type>
            <size>45001</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDAyNTg5MjNjZjZlM2E2YzYwMGY0OTM2Y2E2
YmQ5NzMxNDlhNDM4MTYuLjhhYmNiNTk0Yjc3NzQyMzRkNjBmOGIyMzQ5MjZhMjZiYTJmMDU0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKQEAgLTQzLDExICs0Myw5IEBAIGJvb2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoCiAgICAg
SlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3VlKj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAotICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKLSAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCi0gICAgaWYgKHRleHRUcmFja0N1ZS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkp
IHsKKyAgICBpZiAoIXRleHRUcmFja0N1ZS5pc0NvbnRleHRTdG9wcGVkKCkgJiYgdGV4dFRyYWNr
Q3VlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24p
KQotICAgICAgICAgICAgKnJlYXNvbiA9ICJUZXh0VHJhY2tDdWUgaXMgZmlyaW5nIGV2ZW50IGxp
c3RlbmVycyI7CisgICAgICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBl
bmRpbmcgYWN0aXZpdHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggODlkODk4MjBhNzY0NzdkMDE4ZjNjZmUz
NDE5YzcxNmRjNjQ1NTBhOC4uMTZkZmQ1Njg4OTdkNDBjZGM1YWQzNWViNjU5NTIwOGFlZGRlYWQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTEzOCwxMSArMTM4
LDEwIEBAIHZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291
cmNlIHNvdXJjZSwgRnVuY3Rpb248dm9pZCAoKT4mCiAKIGNsYXNzIEFjdGl2ZURPTU9iamVjdEV2
ZW50RGlzcGF0Y2hUYXNrIDogcHVibGljIEV2ZW50TG9vcFRhc2sgewogcHVibGljOgotICAgIEFj
dGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExv
b3BUYXNrR3JvdXAmIGdyb3VwLCBBY3RpdmVET01PYmplY3QmIG9iamVjdCwgRXZlbnRUYXJnZXQm
IHRhcmdldCwgUmVmPEV2ZW50PiYmIGV2ZW50KQorICAgIEFjdGl2ZURPTU9iamVjdEV2ZW50RGlz
cGF0Y2hUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwLCBB
Y3RpdmVET01PYmplY3QmIG9iamVjdCwgRnVuY3Rpb248dm9pZCgpPiYmIGRpc3BhdGNoRXZlbnQp
CiAgICAgICAgIDogRXZlbnRMb29wVGFzayhzb3VyY2UsIGdyb3VwKQogICAgICAgICAsIG1fb2Jq
ZWN0KG9iamVjdCkKLSAgICAgICAgLCBtX3RhcmdldCh0YXJnZXQpCi0gICAgICAgICwgbV9ldmVu
dChXVEZNb3ZlKGV2ZW50KSkKKyAgICAgICAgLCBtX2Rpc3BhdGNoRXZlbnQoV1RGTW92ZShkaXNw
YXRjaEV2ZW50KSkKICAgICB7CiAgICAgICAgICsrbV9vYmplY3QubV9wZW5kaW5nQWN0aXZpdHlJ
bnN0YW5jZUNvdW50OwogICAgIH0KQEAgLTE1OCwxMyArMTU3LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gSWYgdGhpcyB0YXNrIGV4ZWN1dGVzIGFmdGVyIHRoZSBzY3JpcHQgZXhlY3V0aW9uIGNv
bnRleHQgaGFzIGJlZW4gc3RvcHBlZCwgZG9uJ3QKICAgICAgICAgLy8gYWN0dWFsbHkgZGlzcGF0
Y2ggdGhlIGV2ZW50LgogICAgICAgICBpZiAobV9vYmplY3QuaXNBbGxvd2VkVG9SdW5TY3JpcHQo
KSkKLSAgICAgICAgICAgIG1fdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1fZXZlbnQuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9kaXNwYXRjaEV2ZW50KCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEFj
dGl2ZURPTU9iamVjdCYgbV9vYmplY3Q7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsK
LSAgICBSZWY8RXZlbnQ+IG1fZXZlbnQ7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Rpc3BhdGNo
RXZlbnQ7CiB9OwogCiB2b2lkIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2
ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxF
dmVudD4mJiBldmVudCkKQEAgLTE3NCw3ICsxNzIsMjIgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIFRh
c2sKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBldmVudExv
b3BUYXNrR3JvdXAgPSBjb250ZXh0LT5ldmVudExvb3AoKTsKLSAgICBhdXRvIHRhc2sgPSBtYWtl
VW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9v
cFRhc2tHcm91cCwgKnRoaXMsIHRhcmdldCwgV1RGTW92ZShldmVudCkpOworICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2s+KHNvdXJjZSwg
ZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgZXZl
bnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQpOworICAgIH0pOworICAgIGV2ZW50TG9vcFRhc2tHcm91cC5xdWV1ZVRhc2soV1RGTW92ZSh0
YXNrKSk7Cit9CisKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZUNhbmNlbGxhYmxlVGFza1Rv
RGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291
cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxhdGlvbkdyb3VwLCBSZWY8RXZlbnQ+
JiYgZXZlbnQpCit7CisgICAgQVNTRVJUKCFldmVudC0+dGFyZ2V0KCkgfHwgJnRhcmdldCA9PSBl
dmVudC0+dGFyZ2V0KCkpOworICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgZXZl
bnRMb29wVGFza0dyb3VwID0gY29udGV4dC0+ZXZlbnRMb29wKCk7CisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVu
dExvb3BUYXNrR3JvdXAsICp0aGlzLCBDYW5jZWxsYWJsZVRhc2soY2FuY2VsbGF0aW9uR3JvdXAs
IFt0YXJnZXQgPSBtYWtlUmVmKHRhcmdldCksIGV2ZW50ID0gV1RGTW92ZShldmVudCldIHsKKyAg
ICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICB9KSk7CiAgICAgZXZlbnRM
b29wVGFza0dyb3VwLnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IDExMDc0YjAxODU3ZjY0ZmZlOWJiMmY4MjgwZmQ2M2Nl
NmY4YzRkZGIuLjY1NzhiNjQwOWQzNDk3MzdmNDZhMjc1YTJkODk1OTc3N2Y5OTRjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTEyMCwxMiArMTIwLDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJn
ZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+Ci0gICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwg
UmVmPEV2ZW50VHlwZT4mJiBldmVudCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdl
dFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFy
Z2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGFyZ2V0LnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKHRh
cmdldCwgc291cmNlLCBXVEZNb3ZlKGV2ZW50KSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXZlbnRUYXJnZXRUeXBlPgorICAgIHN0YXRpYyB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVU
YXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNv
dXJjZSwgVGFza0NhbmNlbGxhdGlvbkdyb3VwJiBjYW5jZWxsYXRpb25Hcm91cCwgUmVmPEV2ZW50
PiYmIGV2ZW50KQorICAgIHsKKyAgICAgICAgdGFyZ2V0LnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9E
aXNwYXRjaEV2ZW50SW50ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIGNhbmNlbGxhdGlvbkdyb3VwLCBX
VEZNb3ZlKGV2ZW50KSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZl
RE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBleHBsaWNpdCBBY3RpdmVE
T01PYmplY3QoRG9jdW1lbnQqKTsKQEAgLTE0Miw2ICsxNDgsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYm
KTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0
JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsKKyAgICB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVU
YXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmLCBUYXNrU291cmNlLCBUYXNr
Q2FuY2VsbGF0aW9uR3JvdXAmLCBSZWY8RXZlbnQ+JiYpOwogCiAgICAgdWludDY0X3QgbV9wZW5k
aW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50IHsgMCB9OwogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM4YzE2MjE3MmEzN2FiZDUyZTQ2ZTJjNmIzMDhmOTFlYTMwMjk5ZWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVmljdG9yIENhcmJ1bmUgKHZpY3RvckBy
b3NlZHUub3JnKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV2ZW50TG9vcEV2ZW50UXVldWUuaCIKLQot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVu
dExvb3AuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNp
bmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRXZl
bnRMb29wRXZlbnRRdWV1ZTo6RXZlbnRMb29wRXZlbnRRdWV1ZShFdmVudFRhcmdldCYgb3duZXIp
Ci0gICAgOiBBY3RpdmVET01PYmplY3Qob3duZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ICAgICwgbV9vd25lcihvd25lcikKLXsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjpl
bnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQotewotICAgIGlmIChtX2lzQ2xvc2Vk
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChldmVudC0+dGFyZ2V0KCkgPT0gJm1fb3duZXIpCi0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQo
bnVsbHB0cik7Ci0KLSAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsK
LQotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7
Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5kaXNwYXRjaE9u
ZUV2ZW50KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6ZGlzcGF0
Y2hPbmVFdmVudCgpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpKTsK
LQotICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkT3duZXIobV9vd25lcik7Ci0gICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gZXZlbnRGaXJpbmdTY29wZShtX2lzRmlyaW5nRXZlbnQsIHRydWUpOwot
Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IG1fcGVuZGluZ0V2ZW50cy50YWtlRmlyc3QoKTsK
LSAgICBSZWY8RXZlbnRUYXJnZXQ+IHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKSA/ICpldmVudC0+
dGFyZ2V0KCkgOiBtX293bmVyOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXRhcmdldC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpLAotICAg
ICAgICAiQW4gYXR0ZW1wdCB0byBkaXNwYXRjaCBhbiBldmVudCBvbiBhIHN0b3BwZWQgdGFyZ2V0
IGJ5IEV2ZW50VGFyZ2V0SW50ZXJmYWNlPSVkIChub2RlTmFtZT0lcyB0YXJnZXQ9JXAgb3duZXI9
JXApIiwKLSAgICAgICAgbV9vd25lci5ldmVudFRhcmdldEludGVyZmFjZSgpLCBtX293bmVyLmlz
Tm9kZSgpID8gc3RhdGljX2Nhc3Q8Tm9kZSY+KG1fb3duZXIpLm5vZGVOYW1lKCkuYXNjaWkoKS5k
YXRhKCkgOiAiIiwgdGFyZ2V0LnB0cigpLCAmbV9vd25lcik7Ci0gICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KCpldmVudCk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2xvc2UoKQot
ewotICAgIG1faXNDbG9zZWQgPSB0cnVlOwotICAgIGNhbmNlbEFsbEV2ZW50cygpOwotfQotCi12
b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6OmNhbmNlbEFsbEV2ZW50cygpCi17Ci0gICAgd2Vha1B0
ckZhY3RvcnkoKS5yZXZva2VBbGwoKTsKLSAgICBtX3BlbmRpbmdFdmVudHMuY2xlYXIoKTsKLX0K
LQotYm9vbCBFdmVudExvb3BFdmVudFF1ZXVlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAot
ewotICAgIHJldHVybiAhbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHkoKSB8fCBtX2lzRmlyaW5nRXZl
bnQ7Ci19Ci0KLWJvb2wgRXZlbnRMb29wRXZlbnRRdWV1ZTo6aGFzUGVuZGluZ0V2ZW50c09mVHlw
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OmFueU9m
KG1fcGVuZGluZ0V2ZW50cywgWyZdKGF1dG8mIGV2ZW50KSB7IHJldHVybiBldmVudC0+dHlwZSgp
ID09IHR5cGU7IH0pOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6OnN0b3AoKQotewot
ICAgIGNsb3NlKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIEV2ZW50TG9vcEV2ZW50UXVldWU6OmFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdAotewotICAgIHJldHVybiAiRXZlbnRMb29wRXZlbnRRdWV1
ZSI7Ci19Ci0KLVVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBFdmVudExvb3BFdmVudFF1
ZXVlOjpjcmVhdGUoRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0KQotewotICAgIGF1dG8gZXZlbnRR
dWV1ZSA9IG1ha2VVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4oZXZlbnRUYXJnZXQpOwot
ICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBldmVudFF1ZXVl
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2ZmY3NDc2MmU3ZDMxNWQ0NTQzMWExYzQyZDE5ODlj
MTY4NGMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBWaWN0b3IgQ2FyYnVuZSAo
dmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEV2ZW50OwotY2xhc3Mg
RXZlbnRUYXJnZXQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBGSVhNRTog
V2Ugc2hvdWxkIHBvcnQgY2FsbCBzaXRlcyB0byB0aGUgSFRNTCBldmVudCBsb29wIGFuZCByZW1v
dmUgdGhpcyBjbGFzcy4KLWNsYXNzIEV2ZW50TG9vcEV2ZW50UXVldWUgOiBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RXZlbnRMb29wRXZlbnRRdWV1ZT4gewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBVbmlxdWVS
ZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFyZ2V0Jik7Ci0KLSAgICB2b2lk
IGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYpOwotICAgIHZvaWQgY2xvc2UoKTsKLQotICAg
IHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKLQotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIFVuaXF1ZVJlZjxFdmVudExvb3BFdmVu
dFF1ZXVlPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEV2ZW50TG9v
cEV2ZW50UXVldWUsIFdlYkNvcmU6OkV2ZW50VGFyZ2V0Jj4oV2ViQ29yZTo6RXZlbnRUYXJnZXQm
KTsKLSAgICBleHBsaWNpdCBFdmVudExvb3BFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0Jik7Ci0KLSAg
ICB2b2lkIGRpc3BhdGNoT25lRXZlbnQoKTsKLQotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLQotICAgIEV2
ZW50VGFyZ2V0JiBtX293bmVyOwotICAgIERlcXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2
ZW50czsKLSAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0Zpcmlu
Z0V2ZW50IHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDZkNzAzM2IxZTBhODY5YWQwMzc5
YjVhY2Q2OTYwZmJhNWVjNDgzMzUuLmRmYTQyNjViNjQzZGU0MWNkMjI2YmE1ZWU2NWQ1ZGU3ODYx
ZjZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzk0
LDcgKzM5NCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1lcigq
dGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFj
a0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1MTWVk
aWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGlt
ZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRoaXMs
ICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVk
KQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0
aGlzKSkKICAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShNZWRpYVRpbWU6OnBv
c2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2ZpcnN0VGltZVBsYXlpbmcodHJ1ZSkKICAg
ICAsIG1fcGxheWluZyhmYWxzZSkKQEAgLTUxNyw4ICs1MTYsNiBAQCBIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgYmVnaW5JZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0
ZVJlcXVlc3RzKCk7CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLnJlbW92ZSh0aGlzKTsKIAotICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQoZmFsc2UpOwogICAgIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAKQEAg
LTg5NywyMCArODk0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3Rp
dmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgYXV0byBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6WWVzKTsKLQotICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0
aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmly
ZWQgYW5kIHNldHRpbmcgaXQgaGVyZQotICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYg
dGhpcyBlbGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCi0KLSAgICBtX2FzeW5j
RXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKLSNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJF
X0FQSSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChSZWY8RXZlbnQ+JiYg
ZXZlbnQpCiB7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLCBX
VEZNb3ZlKGV2ZW50KSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hl
ZHVsZVJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKCkKIHsKQEAgLTE3NzcsMjAgKzE3NjcsMTcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0
IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIGVuZFRpbWUg
aW4gdGhlIGN1ZS4KICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0VGltZSgpID49
IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRpbWUoKSkgewogICAgICAgICAgICAgYXV0byBlbnRlckV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGVudGVyRXZl
bnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2ZW50KSk7CisgICAgICAgICAgICBz
Y2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIFdURk1vdmUoZW50ZXJFdmVudCkpOwog
CiAgICAgICAgICAgICBhdXRvIGV4aXRFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KTsKLSAgICAgICAgICAgIGV4aXRFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwot
ICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV4aXRF
dmVudCkpOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudE9uKCpldmVudFRhc2suc2Vjb25kLCBX
VEZNb3ZlKGV4aXRFdmVudCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRy
PEV2ZW50PiBldmVudDsKICAgICAgICAgICAgIGlmIChldmVudFRhc2suZmlyc3QgPT0gZXZlbnRU
YXNrLnNlY29uZC0+c3RhcnRNZWRpYVRpbWUoKSkKICAgICAgICAgICAgICAgICBldmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7Ci0gICAgICAgICAgICBl
dmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hl
ZHVsZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIGV2ZW50LnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xODAyLDggKzE3ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRp
bWUpCiAgICAgLy8gdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBh
dCB0aGUgVGV4dFRyYWNrIG9iamVjdCwgYW5kLCAuLi4KICAgICBmb3IgKGF1dG8mIGFmZmVjdGVk
VHJhY2sgOiBhZmZlY3RlZFRyYWNrcykgewogICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7Ci0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoYWZmZWN0
ZWRUcmFjayk7Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShldmVudCkpOworICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmFmZmVjdGVkVHJhY2ssIFdURk1v
dmUoZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEgY29y
cmVzcG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBzaW1w
bGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwuCkBA
IC0xODExLDggKzE3OTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBhdXRv
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBh
dXRvIHRyYWNrRWxlbWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+
KCphZmZlY3RlZFRyYWNrKS50cmFja0VsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJh
Y2tFbGVtZW50KTsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsK
LSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudE9uKCp0cmFja0VsZW1lbnQsIFdURk1vdmUo
ZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjEzNyw3ICsyMTIyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgZXJyb3IKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2
ZW50c0FuZENhbGxiYWNrcygpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0gICAg
bV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOworICAgIG1fYXN5bmNFdmVudHND
YW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKIAogICAgIGZvciAoYXV0byYgc291cmNlIDogY2hp
bGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAgc291cmNlLmNh
bmNlbFBlbmRpbmdFcnJvckV2ZW50KCk7CkBAIC0yNTAxLDggKzI0ODYsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQog
ICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOwotICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CisgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAK
IFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdApAQCAtMjY1MSw3ICsyNjM1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYg
aW4KICAgICAvLyAgICAgIGluaXREYXRhVHlwZSA9IGluaXREYXRhVHlwZQogICAgIC8vICAgICAg
aW5pdERhdGEgPSBpbml0RGF0YQogICAgIE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0IGluaXRpYWxp
emVyIHsgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9OwotICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6Olllcykp
OworICAgIHNjaGVkdWxlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6Olllcykp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNo
YW5nZWQoKQpAQCAtNTYxNyw3ICs1NjAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9z
ZVRhc2tRdWV1ZXMoKQogewogICAgIGNhbmNlbFBlbmRpbmdUYXNrcygpOwogICAgIG1fcmVzb3Vy
Y2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7Ci0gICAgbV9hc3luY0V2
ZW50UXVldWUtPmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNh
bmNlbCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRleHREZXN0cm95ZWQoKQpA
QCAtNTcwNSw3ICs1Njg5LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNMaXZlU291cmNl
KCkgY29uc3QKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY3JlYXRpbmdDb250cm9scwotICAgICAgICB8fCBt
X2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkKICAgICAgICAgfHwgKGhhc0F1
ZGlvKCkgJiYgaXNQbGF5aW5nKCkpCiAgICAgICAgIHx8IChoYXNMaXZlU291cmNlKCkgJiYgaGFz
RXZlbnRMaXN0ZW5lcnMoKSk7CiB9CkBAIC01ODkzLDggKzU4NzYsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgp
CiAgICAgYm9vbCBoYXNUYXJnZXRzID0gbV9tZWRpYVNlc3Npb24gJiYgbWVkaWFTZXNzaW9uKCku
aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMoKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJoYXNUYXJnZXRzID0gIiwgaGFzVGFyZ2V0cyk7CiAgICAgYXV0byBldmVudCA9IFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGhhc1RhcmdldHMpOwot
ICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVl
dWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiB9CiAKQEAgLTgxNDgsNiArODEz
MCwxMSBAQCBNZWRpYUVsZW1lbnRTZXNzaW9uJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVNlc3Np
b24oKSBjb25zdAogICAgIHJldHVybiAqbV9tZWRpYVNlc3Npb247CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudE9uKFQmIHRhcmdl
dCwgUmVmPEV2ZW50PiYmIGV2ZW50KQoreworICAgIHRhcmdldC5xdWV1ZUNhbmNlbGxhYmxlVGFz
a1RvRGlzcGF0Y2hFdmVudCh0YXJnZXQsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9hc3lu
Y0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50KSk7Cit9CisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQ4ZWU3MDI0ODIw
YzhlMmE4MGMwOWIxZTcxZGUyNWYwODkxYzUwZTcuLjUwOWY4YmRmMDU3NzEzZjc3YTZmZDJmY2Rl
OTA2NjMwNzQ5NDRiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkF1dG9w
bGF5RXZlbnQuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCi0jaW5jbHVk
ZSAiRXZlbnRMb29wRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExp
c3RlbmVyLmgiCkBAIC01NDksOSArNTQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwogCi0jaWYgRU5BQkxFKFBJQ1RVUkVf
SU5fUElDVFVSRV9BUEkpCiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KFJlZjxFdmVudD4mJik7Ci0j
ZW5kaWYKIAogICAgIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudFBsYXliYWNrU3RhdGUgeyBOb25l
LCBQcmV2ZW50ZWRBdXRvcGxheSwgU3RhcnRlZFdpdGhVc2VyR2VzdHVyZSwgU3RhcnRlZFdpdGhv
dXRVc2VyR2VzdHVyZSB9OwogCkBAIC01NzQsNiArNTcxLDExIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb21tYW5kQXJndW1lbnQmKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CisgICAg
dm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1lbnQoKTsK
QEAgLTYwMiw2ICs2MDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRy
b2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjaGVkdWxlRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2No
ZWR1bGVFdmVudE9uKFQmIHRhcmdldCwgUmVmPEV2ZW50PiYmKTsKIAogICAgIGJvb2wgc2hvd1Bv
c3RlckZsYWcoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQb3N0ZXI7IH0KICAgICB2b2lkIHNldFNo
b3dQb3N0ZXJGbGFnKGJvb2wpOwpAQCAtNjkwLDEzICs2OTMsMTAgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CiAjZW5kaWYKLSAg
ICAKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRp
YVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFs
OwogICAgIHZvaWQgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50
KCk7Ci0KLSAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKLSAgICB2b2lkIGRp
c3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1lZGlh
UGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBwcml2
YXRlOgogICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5n
ZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fcmVz
b3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IG1fcGxheWVkVGltZVJhbmdlczsKLSAgICBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1
ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fYXN5bmNF
dmVudHNDYW5jZWxsYXRpb25Hcm91cDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRh
c2tDYW5jZWxsYXRpb25Hcm91cCBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsYXRpb25Hcm91cDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRh
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRU
cmFjay5jcHAKaW5kZXggOWNjYjk5MjljNGY2M2YzYTYxMDU3YjY5NjY0ZTE1NTMzNzgxZjFjNi4u
ODM4MDIzMmI3OTI4YTI3YjkzMjM2ODA2YzAyODUyOWYwN2JiZWE4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCkBAIC00NSw3ICs0
NSw5IEBAIGlubGluZSBJbmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERv
Y3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpCiAKIFJlZjxJbmJhbmREYXRhVGV4dFRyYWNr
PiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJh
Y2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQs
IGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigq
bmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7
CisgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNr
OwogfQogCiBJbmJhbmREYXRhVGV4dFRyYWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNU
ZXh0VHJhY2suY3BwCmluZGV4IDYzMTIxMTc2Zjc4ZTQyNjEzZTJlNTVhYjUyZTU2YWUwZWZiYjA3
ZDYuLjU1NmU0NDllODc2MmFmMTUwNWM5MTA5MDM2N2VlMTU4ZGQzYTAyOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApA
QCAtNzAsNyArNzAsOSBAQCBpbmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcgogCiBSZWY8SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjaz4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRHZW5lcmljVGV4dFRyYWNrKGRvY3VtZW50LCBj
bGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAogSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6fklu
YmFuZEdlbmVyaWNUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKaW5kZXggYTYwZTk5ZWFiZmI4OWM4OTJhNTFkMmU4
NTg1ZGU5ZGJjNjYwYTE0ZC4uOWNmYTE0ZGYyYWU5NTg2NmM1M2I4YjEwM2I2ZDg1OWQ0YmZkNWQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcApA
QCAtNTAsNyArNTAsOSBAQCBSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudAogICAgICAgICByZXR1cm4g
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEluYmFu
ZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwor
ICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50
LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRl
eHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggYTIyMjhiYzE3ZWEz
NTZmNjA1MjI4YzU0ZWNlMzcwZGM0ZmNkNDk5Mi4uMmFhOWYzYjAzYWIzYTE0NGU5MjcxM2E2NWZh
ZjNmZmNkZjVhYTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNDYsNyArNDYsOSBAQCBpbmxpbmUgSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBU
ZXh0VHJhYwogCiBSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkp
OworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJh
Y2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgdGV4dFRyYWNrLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBJbmJhbmRXZWJWVFRU
ZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDc4MGJlMzJj
ZTM0NWE3NDI5OTFjMzQxMmM0MzlmY2NlNDhmNzJjNTIuLjc0NjMyMGQ3YzE0ZDJjNDc1YmEwNDM2
YjdjYmI1N2EwNDE3NjVmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwCkBAIC00OCw3ICs0OCw5IEBAIExvYWRhYmxlVGV4dFRyYWNrOjpM
b2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50JiB0cmFjaywgY29uc3QgU3RyaW5nJiBr
aW5kCiAKIFJlZjxMb2FkYWJsZVRleHRUcmFjaz4gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZShI
VE1MVHJhY2tFbGVtZW50JiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAg
ICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ss
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6
c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCmluZGV4IGQ5YjQ3ZDIwYjg5YmI2Nzg2OGIwZGZjZTcxMjI0Mjk2NzE4MGEwMDUu
LmU1ZTUwYjQxOTU2ZWIxNDE2MWIzYWY1MjgzODFhNTc1ZGQwZjE4YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBUZXh0VHJhY2sm
IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIAogVGV4dFRyYWNrOjpUZXh0
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25z
dCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFj
a1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywgaWQsIGxh
YmVsLCBsYW5ndWFnZSkKLSAgICAsIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQp
CisgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fdHJhY2tUeXBlKHR5cGUpCiB7CkBAIC0xMTgsNyArMTE4LDkgQEAgVGV4dFRyYWNr
OjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQsIGMKIAogUmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYg
a2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25z
dCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0
VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJh
Y2spKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrKGRvY3Vt
ZW50LCBjbGllbnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CisgICAg
dGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQog
CiBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQpAQCAtNTkwLDYgKzU5MiwxMSBAQCBib29sIFRleHRU
cmFjazo6Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9r
aW5kID09IEtpbmQ6OkZvcmNlZDsKIH0KIAorY29uc3QgY2hhciogVGV4dFRyYWNrOjphY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlRleHRUcmFjayI7Cit9CisKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQogdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmgKaW5kZXggOWE1MzM0ODQyMmViZGE5MThiZmEzZmI1YzEwZTYzOTUxZmE4MTQ0Ny4uNzQ2MzJl
YTRjMGQ5YTAzN2E3YjY2MDExNzdkMzRjOWE5YzE1M2U2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKIH07
CiAKLWNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xh
c3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoVGV4dFRyYWNrKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3Jl
YXRlKERvY3VtZW50KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwg
Y29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSk7CkBAIC0xNTksNiArMTU5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlRleHRUcmFjayI7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCmluZGV4IDA5YjZkMWMxOTdiMmU5OWRhNzZjYjlkM2M0ZWYw
ZDJlNTViYzMwNDIuLmVkYTU5YmM0M2UxNTI4MmVhYmNkMGJjYTgzYjgzMWZkMjhlOTkyZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTI3LDYgKzI3LDcgQEAg
ZW51bSBUZXh0VHJhY2tNb2RlIHsgImRpc2FibGVkIiwgImhpZGRlbiIsICJzaG93aW5nIiB9Owog
ZW51bSBUZXh0VHJhY2tLaW5kIHsgInN1YnRpdGxlcyIsICJjYXB0aW9ucyIsICJkZXNjcmlwdGlv
bnMiLCAiY2hhcHRlcnMiLCAibWV0YWRhdGEiLCAiZm9yY2VkIiB9OwogCiBbCisgICAgQWN0aXZl
RE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1
bmN0aW9uLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGQ0YjZiZWIzZWE1YzM4
NjU0MTFmM2QzNzIzMWUyMTg3NWVjZmRlYTcuLmE5ZmJlMTZiOTViMjIzYTE2NGYwNDkxNTYwN2E5
MDcyYTQ3YjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTIyMiwyMSArMjIzLDI1IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxUZXh0VHJhY2tDdWU+PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIGRvdWJsZSBzCiAgICAgaWYgKCFub2RlVHlwZXMuY29udGFpbnMoUmVxdWlyZWRO
b2Rlczo6Q3VlQmFja2dyb3VuZCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgbWFrZVN0cmluZygiTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGU6ICIsIGN1
ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKS50b1N0cmluZygpKSB9OwogCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShm
cmFnbWVudCkpKTsKKyAgICBhdXRvIHRleHRUcmFja0N1ZSA9IGFkb3B0UmVmKCpuZXcgVGV4dFRy
YWNrQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShmcmFnbWVudCkpKTsKKyAgICB0
ZXh0VHJhY2tDdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2tDdWU7
CiB9CiAKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIGN1ZUZyYWdtZW50KQotICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKICAgICAs
IG1fZW5kVGltZShlbmQpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9jdWVO
b2RlKFdURk1vdmUoY3VlRnJhZ21lbnQpKQogewogfQogCi1UZXh0VHJhY2tDdWU6OlRleHRUcmFj
a0N1ZShEb2N1bWVudCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQpCi0gICAgOiBtX3N0YXJ0VGltZShzdGFydCkKK1RleHRUcmFja0N1ZTo6VGV4
dFRyYWNrQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQpCisgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAg
LCBtX3N0YXJ0VGltZShzdGFydCkKICAgICAsIG1fZW5kVGltZShlbmQpCi0gICAgLCBtX2RvY3Vt
ZW50KGNvbnRleHQpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogewogfQogCkBAIC0zMzUs
NyArMzQwLDcgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50
KQogICAgIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotYm9vbCBUZXh0
VHJhY2tDdWU6OmlzQWN0aXZlKCkKK2Jvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faXNBY3RpdmUgJiYgdHJhY2soKSAmJiB0cmFjaygpLT5tb2RlKCkg
IT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZDsKIH0KQEAgLTUzMSw2ICs1MzYsMTEgQEAgdm9p
ZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSgpCiAgICAgbV9kaXNwbGF5VHJlZU5l
ZWRzVXBkYXRlID0gZmFsc2U7CiB9CiAKK2NvbnN0IGNoYXIqIFRleHRUcmFja0N1ZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJUZXh0VHJhY2tDdWUiOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggYjUwMzgxYzVhZGZjZjZmNTBmZWQzNWQ0YTg5ZDFlNzgx
NzUzZDM1Mi4uMTcyOWU3OWRmNGJlMTk1YTZlMjhjZDI3NjY2MTM0MzAyNGE0NmY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC02Miw3ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxUZXh0VHJhY2tDdWU+IG1fY3VlOwogfTsKIAotY2xhc3MgVGV4
dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNv
dW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFRy
YWNrQ3VlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY3VlU2hhZG93
UHNldWRvSWQoKTsKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBlbmRN
ZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2VuZFRpbWU7IH0KICAgICB2b2lkIHNldEVuZFRp
bWUoY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBib29sIGlzQWN0aXZlKCk7CisgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc09yZGVyZWRCZWZvcmUoY29uc3QgVGV4dFRyYWNrQ3VlKikgY29u
c3Q7CkBAIC0xMzcsMTUgKzEzNywxNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFRleHRU
cmFja0N1ZShEb2N1bWVudCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kLCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKKyAgICAvLyBFdmVudFRhcmdldAog
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KICAgICB1c2luZyBFdmVudFRhcmdl
dDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsK
LQogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVGV4dFRyYWNrQ3VlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCByZWJ1aWxkRGlzcGxheVRy
ZWUoKTsKIAogICAgIFN0cmluZyBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaWRsCmluZGV4IDc1ZDYwMGEwNzZmOGRjNmI0M2UzM2Q2M2Q5MGE5YmUxNjBmZTMx
NjQuLmYwZjA1OWRmMmU5ZGZkMThlY2QzMDc2MTAxZjhiZjIxNzE2NmNiYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKICAq
LwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAg
IEN1c3RvbUlzUmVhY2hhYmxlLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAppbmRleCBmZmJlY2E5
YTAzM2M1ZWQyYThmYzFiZDEwOTk5ODNhODMxNTI1ZmE0Li5mNDJkMDQ4MmNhN2NiOGNkYWQ5Njkx
ZjFlNjNkOGViY2Q0N2QzYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTE2MSw3ICsxNjEsOSBAQCB2b2lkIFRleHRUcmFj
a0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYg
dmlkZW9TaXplKQogCiBSZWY8VGV4dFRyYWNrQ3VlR2VuZXJpYz4gVGV4dFRyYWNrQ3VlR2VuZXJp
Yzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBhdXRvIGN1ZSA9
IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBjdWU7CiB9CiAKIFRleHRUcmFja0N1ZUdlbmVyaWM6OlRleHRUcmFja0N1
ZUdlbmVyaWMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2VjMWMzMGFlZjkxNDVlNjZhODljZWU4
NWVmNWYuLmE1YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTczYWY5ODFhMGMyMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwxMiArMjY0LDE2IEBAIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBTdHJpbmcmJiBjb250ZW50KQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdU
Rk1vdmUoY29udGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcgVlRUQ3VlKGRv
Y3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50KSkpOworICAgIGN1ZS0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogUmVmPFZUVEN1ZT4gVlRUQ3VlOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJWVFRDdWVEYXRhJiBkYXRhKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0YSkpOworICAgIGF1
dG8gY3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIGRhdGEpKTsKKyAgICBjdWUt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFZUVEN1ZTo6VlRUQ3Vl
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430864</attachid>
            <date>2021-06-08 11:01:42 -0700</date>
            <delta_ts>2021-06-08 11:08:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608110141.patch</filename>
            <type>text/plain</type>
            <size>45676</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDAyNTg5MjNjZjZlM2E2YzYwMGY0OTM2Y2E2
YmQ5NzMxNDlhNDM4MTYuLjhhYmNiNTk0Yjc3NzQyMzRkNjBmOGIyMzQ5MjZhMjZiYTJmMDU0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKQEAgLTQzLDExICs0Myw5IEBAIGJvb2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoCiAgICAg
SlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3VlKj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAotICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKLSAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCi0gICAgaWYgKHRleHRUcmFja0N1ZS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkp
IHsKKyAgICBpZiAoIXRleHRUcmFja0N1ZS5pc0NvbnRleHRTdG9wcGVkKCkgJiYgdGV4dFRyYWNr
Q3VlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24p
KQotICAgICAgICAgICAgKnJlYXNvbiA9ICJUZXh0VHJhY2tDdWUgaXMgZmlyaW5nIGV2ZW50IGxp
c3RlbmVycyI7CisgICAgICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBl
bmRpbmcgYWN0aXZpdHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZDBjOTI5ZjY1MzNmODJlZTQxN2ExNzAzNmM2ZjYxNGQyZjg3MmU2MC4uZDI1ZTNmZjQ0YjZiNjRj
OWY5MzkzZjk2YWI5MzhlNDg2OTg4ODdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NjEsNyArNDY2MSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJBY3Rp
dmVET01PYmplY3QuaCIpOwogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0
ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
ZjxBY3RpdmVET01PYmplY3QsICR7aW1wbFR5cGV9Pjo6dmFsdWUsIFwiSW50ZXJmYWNlIGlzIG1h
cmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBu
b3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LlwiKTtcblxuIik7Ci0gICAgICAgIH0gZWxzZSB7
CisgICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAiQ3VzdG9tSXNSZWFjaGFibGUiKSkgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2
ZURPTU9iamVjdCwgJHtpbXBsVHlwZX0+Ojp2YWx1ZSwgXCJJbnRlcmZhY2UgaXMgbm90IG1hcmtl
ZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBz
dWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC5cIik7XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA4OWQ4OTgyMGE3NjQ3N2Qw
MThmM2NmZTM0MTljNzE2ZGM2NDU1MGE4Li4xNmRmZDU2ODg5N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4
YWVkZGVhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTM4
LDExICsxMzgsMTAgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29w
KFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYKIAogY2xhc3MgQWN0aXZlRE9N
T2JqZWN0RXZlbnREaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZlbnRMb29wVGFzayB7CiBwdWJsaWM6
Ci0gICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBFdmVu
dFRhcmdldCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgQWN0aXZlRE9NT2JqZWN0
RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYg
Z3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBGdW5jdGlvbjx2b2lkKCk+JiYgZGlzcGF0
Y2hFdmVudCkKICAgICAgICAgOiBFdmVudExvb3BUYXNrKHNvdXJjZSwgZ3JvdXApCiAgICAgICAg
ICwgbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKLSAgICAgICAg
LCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQorICAgICAgICAsIG1fZGlzcGF0Y2hFdmVudChXVEZN
b3ZlKGRpc3BhdGNoRXZlbnQpKQogICAgIHsKICAgICAgICAgKyttX29iamVjdC5tX3BlbmRpbmdB
Y3Rpdml0eUluc3RhbmNlQ291bnQ7CiAgICAgfQpAQCAtMTU4LDEzICsxNTcsMTIgQEAgcHVibGlj
OgogICAgICAgICAvLyBJZiB0aGlzIHRhc2sgZXhlY3V0ZXMgYWZ0ZXIgdGhlIHNjcmlwdCBleGVj
dXRpb24gY29udGV4dCBoYXMgYmVlbiBzdG9wcGVkLCBkb24ndAogICAgICAgICAvLyBhY3R1YWxs
eSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgICAgIGlmIChtX29iamVjdC5pc0FsbG93ZWRUb1J1
blNjcmlwdCgpKQotICAgICAgICAgICAgbV90YXJnZXQtPmRpc3BhdGNoRXZlbnQobV9ldmVudC5n
ZXQoKSk7CisgICAgICAgICAgICBtX2Rpc3BhdGNoRXZlbnQoKTsKICAgICB9CiAKIHByaXZhdGU6
CiAgICAgQWN0aXZlRE9NT2JqZWN0JiBtX29iamVjdDsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IG1f
dGFyZ2V0OwotICAgIFJlZjxFdmVudD4gbV9ldmVudDsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1f
ZGlzcGF0Y2hFdmVudDsKIH07CiAKIHZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJj
ZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQpAQCAtMTc0LDcgKzE3MiwyMiBAQCB2b2lkIEFjdGl2ZURP
TU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRh
cmdldCwgVGFzawogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8m
IGV2ZW50TG9vcFRhc2tHcm91cCA9IGNvbnRleHQtPmV2ZW50TG9vcCgpOwotICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2s+KHNvdXJjZSwg
ZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgdGFyZ2V0LCBXVEZNb3ZlKGV2ZW50KSk7CisgICAg
YXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzaz4o
c291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBbdGFyZ2V0ID0gbWFrZVJlZih0YXJn
ZXQpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CisgICAgfSk7CisgICAgZXZlbnRMb29wVGFza0dyb3VwLnF1ZXVlVGFzayhX
VEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlQ2FuY2VsbGFi
bGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFza1Nv
dXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYgY2FuY2VsbGF0aW9uR3JvdXAsIFJl
ZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSB8fCAmdGFy
Z2V0ID09IGV2ZW50LT50YXJnZXQoKSk7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5ldmVudExvb3AoKTsKKyAgICBhdXRv
IHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrPihzb3Vy
Y2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNlbGxhYmxlVGFzayhjYW5jZWxsYXRp
b25Hcm91cCwgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgZXZlbnQgPSBXVEZNb3ZlKGV2ZW50
KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIH0pKTsKICAg
ICBldmVudExvb3BUYXNrR3JvdXAucXVldWVUYXNrKFdURk1vdmUodGFzaykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTEwNzRiMDE4NTdmNjRmZmU5YmIyZjgy
ODBmZDYzY2U2ZjhjNGRkYi4uNjU3OGI2NDA5ZDM0OTczN2Y0NmEyNzVhMmQ4OTU5Nzc3Zjk5NGMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMTIwLDEyICsxMjAsMTgg
QEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
dmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4KLSAgICBzdGF0aWMgdm9pZCBxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ug
c291cmNlLCBSZWY8RXZlbnRUeXBlPiYmIGV2ZW50KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV2
ZW50VGFyZ2V0VHlwZT4KKyAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
RXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnQ+JiYg
ZXZlbnQpCiAgICAgewogICAgICAgICB0YXJnZXQucXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50
ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIFdURk1vdmUoZXZlbnQpKTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tT
b3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxhdGlvbkdyb3VwLCBS
ZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgeworICAgICAgICB0YXJnZXQucXVldWVDYW5jZWxsYWJs
ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbCh0YXJnZXQsIHNvdXJjZSwgY2FuY2VsbGF0aW9u
R3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIGV4cGxpY2l0
IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCopOwpAQCAtMTQyLDYgKzE0OCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2UsIEZ1bmN0aW9uPHZv
aWQgKCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZl
bnRUYXJnZXQmLCBUYXNrU291cmNlLCBSZWY8RXZlbnQ+JiYpOworICAgIHZvaWQgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYsIFRhc2tTb3Vy
Y2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYsIFJlZjxFdmVudD4mJik7CiAKICAgICB1aW50NjRf
dCBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQgeyAwIH07CiAjaWYgQVNTRVJUX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjMTYyMTcyYTM3YWJkNTJlNDZlMmM2YjMwOGY5MWVhMzAy
OTllYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBWaWN0b3IgQ2FyYnVuZSAo
dmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wRXZlbnRRdWV1
ZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiTm9k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1FdmVudExvb3BFdmVudFF1ZXVlOjpFdmVudExvb3BFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0
JiBvd25lcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgLCBtX293bmVyKG93bmVyKQotewotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50
UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYgZXZlbnQpCi17Ci0gICAgaWYgKG1f
aXNDbG9zZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGV2ZW50LT50YXJnZXQoKSA9PSAmbV9vd25lcikKLSAgICAgICAgZXZlbnQtPnNl
dFRhcmdldChudWxscHRyKTsKLQotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoV1RGTW92ZShl
dmVudCkpOwotCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmRp
c3BhdGNoT25lRXZlbnQoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVl
OjpkaXNwYXRjaE9uZUV2ZW50KCkKLXsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50cy5pc0Vt
cHR5KCkpOwotCi0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0ZWRPd25lcihtX293bmVyKTsK
LSAgICBTZXRGb3JTY29wZTxib29sPiBldmVudEZpcmluZ1Njb3BlKG1faXNGaXJpbmdFdmVudCwg
dHJ1ZSk7Ci0KLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gbV9wZW5kaW5nRXZlbnRzLnRha2VG
aXJzdCgpOwotICAgIFJlZjxFdmVudFRhcmdldD4gdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpID8g
KmV2ZW50LT50YXJnZXQoKSA6IG1fb3duZXI7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdGFy
Z2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVk
KCksCi0gICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3BhdGNoIGFuIGV2ZW50IG9uIGEgc3RvcHBl
ZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9JWQgKG5vZGVOYW1lPSVzIHRhcmdldD0l
cCBvd25lcj0lcCkiLAotICAgICAgICBtX293bmVyLmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCksIG1f
b3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2RlJj4obV9vd25lcikubm9kZU5hbWUoKS5h
c2NpaSgpLmRhdGEoKSA6ICIiLCB0YXJnZXQucHRyKCksICZtX293bmVyKTsKLSAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjpj
bG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0gICAgY2FuY2VsQWxsRXZlbnRzKCk7
Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2FuY2VsQWxsRXZlbnRzKCkKLXsKLSAg
ICB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOwotICAgIG1fcGVuZGluZ0V2ZW50cy5jbGVh
cigpOwotfQotCi1ib29sIEV2ZW50TG9vcEV2ZW50UXVldWU6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpIHx8IG1faXNG
aXJpbmdFdmVudDsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVudFF1ZXVlOjpoYXNQZW5kaW5nRXZl
bnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdU
Rjo6YW55T2YobV9wZW5kaW5nRXZlbnRzLCBbJl0oYXV0byYgZXZlbnQpIHsgcmV0dXJuIGV2ZW50
LT50eXBlKCkgPT0gdHlwZTsgfSk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6c3Rv
cCgpCi17Ci0gICAgY2xvc2UoKTsKLX0KLQotY29uc3QgY2hhciogRXZlbnRMb29wRXZlbnRRdWV1
ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJFdmVudExvb3BF
dmVudFF1ZXVlIjsKLX0KLQotVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IEV2ZW50TG9v
cEV2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCi17Ci0gICAgYXV0
byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPihldmVudFRh
cmdldCk7Ci0gICAgZXZlbnRRdWV1ZS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGV2
ZW50UXVldWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExv
b3BFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZmZjc0NzYyZTdkMzE1ZDQ1NDMxYTFj
NDJkMTk4OWMxNjg0YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFZpY3RvciBD
YXJidW5lICh2aWN0b3JAcm9zZWR1Lm9yZykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRXZlbnQ7
Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8v
IEZJWE1FOiBXZSBzaG91bGQgcG9ydCBjYWxsIHNpdGVzIHRvIHRoZSBIVE1MIGV2ZW50IGxvb3Ag
YW5kIHJlbW92ZSB0aGlzIGNsYXNzLgotY2xhc3MgRXZlbnRMb29wRXZlbnRRdWV1ZSA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxFdmVudExvb3BFdmVudFF1
ZXVlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBjcmVhdGUoRXZlbnRUYXJnZXQmKTsKLQot
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4mJik7Ci0gICAgdm9pZCBjbG9zZSgp
OwotCi0gICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKLSAgICBib29sIGhhc1BlbmRpbmdFdmVu
dHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgVW5pcXVlUmVmPEV2ZW50
TG9vcEV2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
RXZlbnRMb29wRXZlbnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRUYXJnZXQmPihXZWJDb3JlOjpFdmVu
dFRhcmdldCYpOwotICAgIGV4cGxpY2l0IEV2ZW50TG9vcEV2ZW50UXVldWUoRXZlbnRUYXJnZXQm
KTsKLQotICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwotCi0gICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwot
Ci0gICAgRXZlbnRUYXJnZXQmIG1fb3duZXI7Ci0gICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9w
ZW5kaW5nRXZlbnRzOwotICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzRmlyaW5nRXZlbnQgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmQ3MDMzYjFlMGE4
NjlhZDAzNzliNWFjZDY5NjBmYmE1ZWM0ODMzNS4uZGZhNDI2NWI2NDNkZTQxY2QyMjZiYTVlZTY1
ZDVkZTc4NjFmNmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0zOTQsNyArMzk0LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2Nh
blRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywg
JkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpj
cmVhdGUoKnRoaXMpKQogICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAsIG1fZmlyc3RUaW1lUGxheWluZyh0
cnVlKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQpAQCAtNTE3LDggKzUxNiw2IEBAIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBiZWdpbklnbm9yaW5nVHJhY2tEaXNw
bGF5VXBkYXRlUmVxdWVzdHMoKTsKICAgICBhbGxNZWRpYUVsZW1lbnRzKCkucmVtb3ZlKHRoaXMp
OwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7Ci0KICAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCgp
KTsKIApAQCAtODk3LDIwICs4OTQsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBhdXRv
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwotCi0gICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0
YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6
dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCi0gICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFT
U0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KLQotICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIHNj
aGVkdWxlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAotI2lmIEVOQUJMRShQSUNUVVJFX0lO
X1BJQ1RVUkVfQVBJKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KFJlZjxF
dmVudD4mJiBldmVudCkKIHsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9u
R3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKIH0KLSNlbmRpZgogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQogewpAQCAtMTc3NywyMCAr
MTc2NywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIC8vIGxlc3MgdGhhbiB0aGUg
ZW5kVGltZSBpbiB0aGUgY3VlLgogICAgICAgICBpZiAoZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRU
aW1lKCkgPj0gZXZlbnRUYXNrLnNlY29uZC0+ZW5kVGltZSgpKSB7CiAgICAgICAgICAgICBhdXRv
IGVudGVyRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAgICAgICAg
ZW50ZXJFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9h
c3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGVudGVyRXZlbnQpKTsKKyAgICAg
ICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29uZCwgV1RGTW92ZShlbnRlckV2
ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pOwotICAgICAgICAgICAgZXhpdEV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXhpdEV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5z
ZWNvbmQsIFdURk1vdmUoZXhpdEV2ZW50KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAgICAgICAgaWYgKGV2ZW50VGFzay5maXJzdCA9
PSBldmVudFRhc2suc2Vjb25kLT5zdGFydE1lZGlhVGltZSgpKQogICAgICAgICAgICAgICAgIGV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAg
ICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29uZCwgZXZlbnQucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MDIsOCArMTc4OSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUm
IG1vdmllVGltZSkKICAgICAvLyB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY3Vl
Y2hhbmdlIGF0IHRoZSBUZXh0VHJhY2sgb2JqZWN0LCBhbmQsIC4uLgogICAgIGZvciAoYXV0byYg
YWZmZWN0ZWRUcmFjayA6IGFmZmVjdGVkVHJhY2tzKSB7CiAgICAgICAgIGF1dG8gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgZXZlbnQtPnNldFRhcmdl
dChhZmZlY3RlZFRyYWNrKTsKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqYWZmZWN0ZWRUcmFj
aywgV1RGTW92ZShldmVudCkpOwogCiAgICAgICAgIC8vIC4uLiBpZiB0aGUgdGV4dCB0cmFjayBo
YXMgYSBjb3JyZXNwb25kaW5nIHRyYWNrIGVsZW1lbnQsIHRvIHRoZW4gZmlyZSBhCiAgICAgICAg
IC8vIHNpbXBsZSBldmVudCBuYW1lZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMg
d2VsbC4KQEAgLTE4MTEsOCArMTc5Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAg
ICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAg
ICAgICAgIGF1dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxMb2FkYWJsZVRl
eHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVudCgpKTsKICAgICAgICAgICAgIEFT
U0VSVCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0cmFja0Vs
ZW1lbnQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKnRyYWNrRWxlbWVudCwg
V1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTM3LDcgKzIxMjIsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9hc3lu
Y0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogCiAgICAgZm9yIChhdXRvJiBzb3Vy
Y2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRoaXMpKQogICAgICAgICBz
b3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAgLTI1MDEsOCArMjQ4Niw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5p
dERhdGEpCiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7Ci0g
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yNjUxLDcgKzI2MzUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3Qg
U3RyaW5nJiBpbgogICAgIC8vICAgICAgaW5pdERhdGFUeXBlID0gaW5pdERhdGFUeXBlCiAgICAg
Ly8gICAgICBpbml0RGF0YSA9IGluaXREYXRhCiAgICAgTWVkaWFFbmNyeXB0ZWRFdmVudEluaXQg
aW5pdGlhbGl6ZXIgeyBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpIH07Ci0gICAgbV9h
c3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKSk7CisgICAgc2NoZWR1bGVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXYWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpCkBAIC01NjE3LDcgKzU2MDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2VsUGVuZGluZ1Rhc2tzKCk7CiAgICAg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKLSAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+Y2xvc2UoKTsKKyAgICBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29udGV4dERlc3Ry
b3llZCgpCkBAIC01NzA1LDcgKzU2ODksNiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0xp
dmVTb3VyY2UoKSBjb25zdAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jcmVhdGluZ0NvbnRyb2xzCi0gICAg
ICAgIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nQWN0aXZpdHkoKQogICAgICAgICB8
fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAgICAgICAgfHwgKGhhc0xpdmVTb3VyY2Uo
KSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAgLTU4OTMsOCArNTg3Niw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdl
ZEV2ZW50KCkKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21lZGlhU2Vzc2lvbiAmJiBtZWRpYVNl
c3Npb24oKS5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygpOwogICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJnZXRzKTsKICAgICBhdXRvIGV2ZW50
ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCwgaGFzVGFy
Z2V0cyk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKIH0KIApAQCAtODE0
OCw2ICs4MTMwLDExIEBAIE1lZGlhRWxlbWVudFNlc3Npb24mIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICptX21lZGlhU2Vzc2lvbjsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50T24o
VCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7CisgICAgdGFyZ2V0LnF1ZXVlQ2FuY2Vs
bGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KHRhcmdldCwgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50
LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKK30KKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDhl
ZTcwMjQ4MjBjOGUyYTgwYzA5YjFlNzFkZTI1ZjA4OTFjNTBlNy4uNTA5ZjhiZGYwNTc3MTNmNzdh
NmZkMmZjZGU5MDY2MzA3NDk0NGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVk
ZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIK
LSNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJNZWRpYUNh
blN0YXJ0TGlzdGVuZXIuaCIKQEAgLTU0OSw5ICs1NDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7CiAKLSNpZiBFTkFCTEUo
UElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoUmVmPEV2ZW50
PiYmKTsKLSNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0
ZSB7IE5vbmUsIFByZXZlbnRlZEF1dG9wbGF5LCBTdGFydGVkV2l0aFVzZXJHZXN0dXJlLCBTdGFy
dGVkV2l0aG91dFVzZXJHZXN0dXJlIH07CiAKQEAgLTU3NCw2ICs1NzEsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVu
dDsKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKKyNlbmRpZgorCiBw
cm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxl
bWVudCgpOwpAQCAtNjAyLDYgKzYwNCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZU1l
ZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2No
ZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYpOwogCiAgICAgYm9v
bCBzaG93UG9zdGVyRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1Bvc3RlcjsgfQogICAgIHZv
aWQgc2V0U2hvd1Bvc3RlckZsYWcoYm9vbCk7CkBAIC02OTAsMTMgKzY5MywxMCBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKICNl
bmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2
b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9v
bCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFu
Z2VkRXZlbnQoKTsKLQotICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwotICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBTdHJp
bmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtOTUxLDcgKzk1MSw3
IEBAIHByaXZhdGU6CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fYnVmZmVyZWRUaW1lUmFu
Z2VzQ2hhbmdlZFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAgICBUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwotICAgIFVuaXF1ZVJlZjxFdmVudExvb3BF
dmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAg
bV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNlbGxhdGlv
bkdyb3VwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZERhdGFUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRE
YXRhVGV4dFRyYWNrLmNwcAppbmRleCA5Y2NiOTkyOWM0ZjYzZjNhNjEwNTdiNjk2NjRlMTU1MzM3
ODFmMWM2Li44MzgwMjMyYjc5MjhhMjdiOTMyMzY4MDZjMDI4NTI5ZjA3YmJlYTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKQEAg
LTQ1LDcgKzQ1LDkgQEAgaW5saW5lIEluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0
VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGkKIAogUmVmPEluYmFuZERhdGFU
ZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhk
b2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFk
b3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1By
aXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
ZXh0VHJhY2s7CiB9CiAKIEluYmFuZERhdGFUZXh0VHJhY2s6On5JbmJhbmREYXRhVGV4dFRyYWNr
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggNjMxMjExNzZmNzhlNDI2MTNlMmU1NWFiNTJlNTZh
ZTBlZmJiMDdkNi4uNTU2ZTQ0OWU4NzYyYWYxNTA1YzkxMDkwMzY3ZWUxNThkZDNhMDI5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwCkBAIC03MCw3ICs3MCw5IEBAIGlubGluZSBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpJ
bmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyCiAKIFJlZjxJ
bmJhbmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAg
YXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjp+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCBhNjBlOTllYWJmYjg5Yzg5
MmE1MWQyZTg1ODVkZTlkYmM2NjBhMTRkLi45Y2ZhMTRkZjJhZTk1ODY2YzUzYjhiMTAzYjZkODU5
ZDRiZmQ1ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwCkBAIC01MCw3ICs1MCw5IEBAIFJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFRleHRU
cmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50CiAgICAgICAg
IHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0
cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJp
dmF0ZSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUo
ZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZFRleHRUcmFjazo6
SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGll
bnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCBhMjIy
OGJjMTdlYTM1NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyLi4yYWE5ZjNiMDNhYjNhMTQ0ZTky
NzEzYTY1ZmFmM2ZmY2RmNWFhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC00Niw3ICs0Niw5IEBAIGlubGluZSBJ
bmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYgZG9j
dW1lbnQsIFRleHRUcmFjCiAKIFJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZUVFRleHRU
cmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQs
IEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQ
cml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZU
VFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB0ZXh0VHJh
Y2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXgg
NzgwYmUzMmNlMzQ1YTc0Mjk5MWMzNDEyYzQzOWZjY2U0OGY3MmM1Mi4uNzQ2MzIwZDdjMTRkMmM0
NzViYTA0MzZiN2NiYjU3YTA0MTc2NWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgTG9hZGFibGVUZXh0
VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25zdCBT
dHJpbmcmIGtpbmQKIAogUmVmPExvYWRhYmxlVGV4dFRyYWNrPiBMb2FkYWJsZVRleHRUcmFjazo6
Y3JlYXRlKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxhYmVsLCBsYW5ndWFn
ZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBMb2FkYWJsZVRleHRUcmFj
ayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgdGV4dFRyYWNrLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKaW5kZXggZDliNDdkMjBiODliYjY3ODY4YjBkZmNlNzEyMjQyOTY3
MTgwYTAwNS4uZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVkZDBmMThjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFRl
eHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogCiBUZXh0VHJh
Y2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tD
bGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYg
aWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwg
VGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6VGV4dFRyYWNr
LCBpZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIo
Y29udGV4dCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9jbGllbnQo
Y2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsKQEAgLTExOCw3ICsxMTgsOSBAQCBU
ZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCwgYwogCiBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9t
U3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFi
ZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdl
LCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJh
Y2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2sp
KTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJh
Y2s7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBAIC01OTAsNiArNTkyLDExIEBAIGJv
b2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAogICAgIHJl
dHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCitjb25zdCBjaGFyKiBUZXh0VHJhY2s6
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVGV4dFRyYWNrIjsK
K30KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lkIFRleHRUcmFjazo6c2V0TGFuZ3Vh
Z2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaAppbmRleCA5YTUzMzQ4NDIyZWJkYTkxOGJmYTNmYjVjMTBlNjM5NTFmYTgxNDQ3
Li43NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTljMTUzZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
PSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dFRy
YWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9tU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKQEAgLTE1OSw2ICsxNTksOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNrIjsgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXggMDliNmQxYzE5N2IyZTk5ZGE3NmNi
OWQzYzRlZjBkMmU1NWJjMzA0Mi4uZWRhNTliYzQzZTE1MjgyZWFiY2QwYmNhODNiODMxZmQyOGU5
OTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtMjcsNiAr
MjcsNyBAQCBlbnVtIFRleHRUcmFja01vZGUgeyAiZGlzYWJsZWQiLCAiaGlkZGVuIiwgInNob3dp
bmciIH07CiBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpb25zIiwgImRl
c2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZGF0YSIsICJmb3JjZWQiIH07CiAKIFsKKyAg
ICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgRXhwb3J0VG9X
cmFwcGVkRnVuY3Rpb24sCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3Qs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggZDRiNmJl
YjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIxODc1ZWNmZGVhNy4uYTlmYmUxNmI5NWIyMjNhMTY0ZjA0
OTE1NjA3YTkwNzJhNDdiMDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
U3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMjIyLDIxICsyMjMsMjUg
QEAgRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRleHRUcmFja0N1ZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHMKICAgICBpZiAoIW5vZGVUeXBlcy5jb250YWlucyhS
ZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0
ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRvU3RyaW5nKCkpIH07CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBX
VEZNb3ZlKGZyYWdtZW50KSkpOworICAgIGF1dG8gdGV4dFRyYWNrQ3VlID0gYWRvcHRSZWYoKm5l
dyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFy
dCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdtZW50KSkp
OworICAgIHRleHRUcmFja0N1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRleHRU
cmFja0N1ZTsKIH0KIAogVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPERv
Y3VtZW50RnJhZ21lbnQ+JiYgY3VlRnJhZ21lbnQpCi0gICAgOiBtX3N0YXJ0VGltZShzdGFydCkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0
KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAg
LCBtX2N1ZU5vZGUoV1RGTW92ZShjdWVGcmFnbWVudCkpCiB7CiB9CiAKLVRleHRUcmFja0N1ZTo6
VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCkKLSAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQorVGV4dFRyYWNr
Q3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKLSAgICAs
IG1fZG9jdW1lbnQoY29udGV4dCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAK
QEAgLTMzNSw3ICszNDAsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6ZGlzcGF0Y2hFdmVudChFdmVu
dCYgZXZlbnQpCiAgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1i
b29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQorYm9vbCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRyYWNrKCkt
Pm1vZGUoKSAhPSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkOwogfQpAQCAtNTMxLDYgKzUzNiwx
MSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKICAgICBtX2Rpc3Bs
YXlUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIH0KIAorY29uc3QgY2hhciogVGV4dFRyYWNrQ3Vl
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlRleHRUcmFja0N1
ZSI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCBiNTAzODFjNWFkZmNmNmY1MGZlZDM1ZDRh
ODlkMWU3ODE3NTNkMzUyLi4xNzI5ZTc5ZGY0YmUxOTVhNmUyOGNkMjc2NjYxMzQzMDI0YTQ2Zjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTYyLDcgKzYy
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFRleHRUcmFja0N1ZT4gbV9jdWU7CiB9OwogCi1j
bGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CitjbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJs
aWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChUZXh0VHJhY2tDdWUpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBj
dWVTaGFkb3dQc2V1ZG9JZCgpOwpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFU
aW1lIGVuZE1lZGlhVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kVGltZTsgfQogICAgIHZvaWQg
c2V0RW5kVGltZShjb25zdCBNZWRpYVRpbWUmKTsKIAotICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAg
ICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldElzQWN0aXZlKGJv
b2wpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0VHJhY2tD
dWUqKSBjb25zdDsKQEAgLTEzNywxNSArMTM3LDE3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVGV4dFRyYWNrQ3VlKERvY3VtZW50JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmKTsKIAorICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KLQogICAgIHVzaW5nIEV2
ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYp
IGZpbmFsOwotCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tDdWVFdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHJlYnVpbGRE
aXNwbGF5VHJlZSgpOwogCiAgICAgU3RyaW5nIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAppbmRleCBmZmJlY2E5YTAzM2M1ZWQy
YThmYzFiZDEwOTk5ODNhODMxNTI1ZmE0Li5mNDJkMDQ4MmNhN2NiOGNkYWQ5NjkxZjFlNjNkOGVi
Y2Q0N2QzYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHAKQEAgLTE2MSw3ICsxNjEsOSBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVy
aWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXpl
KQogCiBSZWY8VGV4dFRyYWNrQ3VlR2VuZXJpYz4gVGV4dFRyYWNrQ3VlR2VuZXJpYzo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVm
KCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHN0
YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBjdWU7CiB9CiAKIFRleHRUcmFja0N1ZUdlbmVyaWM6OlRleHRUcmFja0N1ZUdlbmVyaWMo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2VjMWMzMGFlZjkxNDVlNjZhODljZWU4NWVmNWYuLmE1
YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTczYWY5ODFhMGMyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwxMiArMjY0LDE2IEBAIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBTdHJpbmcmJiBjb250ZW50KQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdURk1vdmUoY29u
dGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcgVlRUQ3VlKGRvY3VtZW50LCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50KSkpOworICAgIGN1ZS0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogUmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJWVFRDdWVEYXRhJiBkYXRhKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0YSkpOworICAgIGF1dG8gY3VlID0g
YWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIGRhdGEpKTsKKyAgICBjdWUtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFZUVEN1ZTo6VlRUQ3VlKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430865</attachid>
            <date>2021-06-08 11:08:24 -0700</date>
            <delta_ts>2021-06-08 11:35:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608110824.patch</filename>
            <type>text/plain</type>
            <size>47724</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDAyNTg5MjNjZjZlM2E2YzYwMGY0OTM2Y2E2
YmQ5NzMxNDlhNDM4MTYuLjhhYmNiNTk0Yjc3NzQyMzRkNjBmOGIyMzQ5MjZhMjZiYTJmMDU0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKQEAgLTQzLDExICs0Myw5IEBAIGJvb2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoCiAgICAg
SlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3VlKj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAotICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKLSAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCi0gICAgaWYgKHRleHRUcmFja0N1ZS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkp
IHsKKyAgICBpZiAoIXRleHRUcmFja0N1ZS5pc0NvbnRleHRTdG9wcGVkKCkgJiYgdGV4dFRyYWNr
Q3VlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24p
KQotICAgICAgICAgICAgKnJlYXNvbiA9ICJUZXh0VHJhY2tDdWUgaXMgZmlyaW5nIGV2ZW50IGxp
c3RlbmVycyI7CisgICAgICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBl
bmRpbmcgYWN0aXZpdHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZDBjOTI5ZjY1MzNmODJlZTQxN2ExNzAzNmM2ZjYxNGQyZjg3MmU2MC4uZDI1ZTNmZjQ0YjZiNjRj
OWY5MzkzZjk2YWI5MzhlNDg2OTg4ODdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NjEsNyArNDY2MSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJBY3Rp
dmVET01PYmplY3QuaCIpOwogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0
ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
ZjxBY3RpdmVET01PYmplY3QsICR7aW1wbFR5cGV9Pjo6dmFsdWUsIFwiSW50ZXJmYWNlIGlzIG1h
cmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBu
b3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LlwiKTtcblxuIik7Ci0gICAgICAgIH0gZWxzZSB7
CisgICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAiQ3VzdG9tSXNSZWFjaGFibGUiKSkgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2
ZURPTU9iamVjdCwgJHtpbXBsVHlwZX0+Ojp2YWx1ZSwgXCJJbnRlcmZhY2UgaXMgbm90IG1hcmtl
ZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBz
dWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC5cIik7XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA4OWQ4OTgyMGE3NjQ3N2Qw
MThmM2NmZTM0MTljNzE2ZGM2NDU1MGE4Li4xNmRmZDU2ODg5N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4
YWVkZGVhZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTM4
LDExICsxMzgsMTAgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0luRXZlbnRMb29w
KFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYKIAogY2xhc3MgQWN0aXZlRE9N
T2JqZWN0RXZlbnREaXNwYXRjaFRhc2sgOiBwdWJsaWMgRXZlbnRMb29wVGFzayB7CiBwdWJsaWM6
Ci0gICAgQWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2Us
IEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBFdmVu
dFRhcmdldCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgQWN0aXZlRE9NT2JqZWN0
RXZlbnREaXNwYXRjaFRhc2soVGFza1NvdXJjZSBzb3VyY2UsIEV2ZW50TG9vcFRhc2tHcm91cCYg
Z3JvdXAsIEFjdGl2ZURPTU9iamVjdCYgb2JqZWN0LCBGdW5jdGlvbjx2b2lkKCk+JiYgZGlzcGF0
Y2hFdmVudCkKICAgICAgICAgOiBFdmVudExvb3BUYXNrKHNvdXJjZSwgZ3JvdXApCiAgICAgICAg
ICwgbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKLSAgICAgICAg
LCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQorICAgICAgICAsIG1fZGlzcGF0Y2hFdmVudChXVEZN
b3ZlKGRpc3BhdGNoRXZlbnQpKQogICAgIHsKICAgICAgICAgKyttX29iamVjdC5tX3BlbmRpbmdB
Y3Rpdml0eUluc3RhbmNlQ291bnQ7CiAgICAgfQpAQCAtMTU4LDEzICsxNTcsMTIgQEAgcHVibGlj
OgogICAgICAgICAvLyBJZiB0aGlzIHRhc2sgZXhlY3V0ZXMgYWZ0ZXIgdGhlIHNjcmlwdCBleGVj
dXRpb24gY29udGV4dCBoYXMgYmVlbiBzdG9wcGVkLCBkb24ndAogICAgICAgICAvLyBhY3R1YWxs
eSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgICAgIGlmIChtX29iamVjdC5pc0FsbG93ZWRUb1J1
blNjcmlwdCgpKQotICAgICAgICAgICAgbV90YXJnZXQtPmRpc3BhdGNoRXZlbnQobV9ldmVudC5n
ZXQoKSk7CisgICAgICAgICAgICBtX2Rpc3BhdGNoRXZlbnQoKTsKICAgICB9CiAKIHByaXZhdGU6
CiAgICAgQWN0aXZlRE9NT2JqZWN0JiBtX29iamVjdDsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IG1f
dGFyZ2V0OwotICAgIFJlZjxFdmVudD4gbV9ldmVudDsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1f
ZGlzcGF0Y2hFdmVudDsKIH07CiAKIHZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJj
ZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQpAQCAtMTc0LDcgKzE3MiwyMiBAQCB2b2lkIEFjdGl2ZURP
TU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRh
cmdldCwgVGFzawogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8m
IGV2ZW50TG9vcFRhc2tHcm91cCA9IGNvbnRleHQtPmV2ZW50TG9vcCgpOwotICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnREaXNwYXRjaFRhc2s+KHNvdXJjZSwg
ZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgdGFyZ2V0LCBXVEZNb3ZlKGV2ZW50KSk7CisgICAg
YXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzaz4o
c291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBbdGFyZ2V0ID0gbWFrZVJlZih0YXJn
ZXQpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CisgICAgfSk7CisgICAgZXZlbnRMb29wVGFza0dyb3VwLnF1ZXVlVGFzayhX
VEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlQ2FuY2VsbGFi
bGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFza1Nv
dXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYgY2FuY2VsbGF0aW9uR3JvdXAsIFJl
ZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBBU1NFUlQoIWV2ZW50LT50YXJnZXQoKSB8fCAmdGFy
Z2V0ID09IGV2ZW50LT50YXJnZXQoKSk7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5ldmVudExvb3AoKTsKKyAgICBhdXRv
IHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrPihzb3Vy
Y2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNlbGxhYmxlVGFzayhjYW5jZWxsYXRp
b25Hcm91cCwgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgZXZlbnQgPSBXVEZNb3ZlKGV2ZW50
KV0geworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIH0pKTsKICAg
ICBldmVudExvb3BUYXNrR3JvdXAucXVldWVUYXNrKFdURk1vdmUodGFzaykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTEwNzRiMDE4NTdmNjRmZmU5YmIyZjgy
ODBmZDYzY2U2ZjhjNGRkYi4uNjU3OGI2NDA5ZDM0OTczN2Y0NmEyNzVhMmQ4OTU5Nzc3Zjk5NGMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMTIwLDEyICsxMjAsMTgg
QEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
dmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4KLSAgICBzdGF0aWMgdm9pZCBxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ug
c291cmNlLCBSZWY8RXZlbnRUeXBlPiYmIGV2ZW50KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV2
ZW50VGFyZ2V0VHlwZT4KKyAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
RXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnQ+JiYg
ZXZlbnQpCiAgICAgewogICAgICAgICB0YXJnZXQucXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50
ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIFdURk1vdmUoZXZlbnQpKTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoRXZlbnRUYXJnZXRUeXBlJiB0YXJnZXQsIFRhc2tT
b3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxhdGlvbkdyb3VwLCBS
ZWY8RXZlbnQ+JiYgZXZlbnQpCisgICAgeworICAgICAgICB0YXJnZXQucXVldWVDYW5jZWxsYWJs
ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbCh0YXJnZXQsIHNvdXJjZSwgY2FuY2VsbGF0aW9u
R3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIGV4cGxpY2l0
IEFjdGl2ZURPTU9iamVjdChEb2N1bWVudCopOwpAQCAtMTQyLDYgKzE0OCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHF1ZXVlVGFza0luRXZlbnRMb29wKFRhc2tTb3VyY2UsIEZ1bmN0aW9uPHZv
aWQgKCk+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZl
bnRUYXJnZXQmLCBUYXNrU291cmNlLCBSZWY8RXZlbnQ+JiYpOworICAgIHZvaWQgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYsIFRhc2tTb3Vy
Y2UsIFRhc2tDYW5jZWxsYXRpb25Hcm91cCYsIFJlZjxFdmVudD4mJik7CiAKICAgICB1aW50NjRf
dCBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQgeyAwIH07CiAjaWYgQVNTRVJUX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjMTYyMTcyYTM3YWJkNTJlNDZlMmM2YjMwOGY5MWVhMzAy
OTllYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBWaWN0b3IgQ2FyYnVuZSAo
dmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wRXZlbnRRdWV1
ZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiTm9k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1FdmVudExvb3BFdmVudFF1ZXVlOjpFdmVudExvb3BFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0
JiBvd25lcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgLCBtX293bmVyKG93bmVyKQotewotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50
UXVldWU6OmVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYgZXZlbnQpCi17Ci0gICAgaWYgKG1f
aXNDbG9zZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGV2ZW50LT50YXJnZXQoKSA9PSAmbV9vd25lcikKLSAgICAgICAgZXZlbnQtPnNl
dFRhcmdldChudWxscHRyKTsKLQotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoV1RGTW92ZShl
dmVudCkpOwotCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmRp
c3BhdGNoT25lRXZlbnQoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVl
OjpkaXNwYXRjaE9uZUV2ZW50KCkKLXsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50cy5pc0Vt
cHR5KCkpOwotCi0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0ZWRPd25lcihtX293bmVyKTsK
LSAgICBTZXRGb3JTY29wZTxib29sPiBldmVudEZpcmluZ1Njb3BlKG1faXNGaXJpbmdFdmVudCwg
dHJ1ZSk7Ci0KLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gbV9wZW5kaW5nRXZlbnRzLnRha2VG
aXJzdCgpOwotICAgIFJlZjxFdmVudFRhcmdldD4gdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpID8g
KmV2ZW50LT50YXJnZXQoKSA6IG1fb3duZXI7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdGFy
Z2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVk
KCksCi0gICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3BhdGNoIGFuIGV2ZW50IG9uIGEgc3RvcHBl
ZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9JWQgKG5vZGVOYW1lPSVzIHRhcmdldD0l
cCBvd25lcj0lcCkiLAotICAgICAgICBtX293bmVyLmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCksIG1f
b3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2RlJj4obV9vd25lcikubm9kZU5hbWUoKS5h
c2NpaSgpLmRhdGEoKSA6ICIiLCB0YXJnZXQucHRyKCksICZtX293bmVyKTsKLSAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKLX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjpj
bG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0gICAgY2FuY2VsQWxsRXZlbnRzKCk7
Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2FuY2VsQWxsRXZlbnRzKCkKLXsKLSAg
ICB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOwotICAgIG1fcGVuZGluZ0V2ZW50cy5jbGVh
cigpOwotfQotCi1ib29sIEV2ZW50TG9vcEV2ZW50UXVldWU6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpIHx8IG1faXNG
aXJpbmdFdmVudDsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVudFF1ZXVlOjpoYXNQZW5kaW5nRXZl
bnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdU
Rjo6YW55T2YobV9wZW5kaW5nRXZlbnRzLCBbJl0oYXV0byYgZXZlbnQpIHsgcmV0dXJuIGV2ZW50
LT50eXBlKCkgPT0gdHlwZTsgfSk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6c3Rv
cCgpCi17Ci0gICAgY2xvc2UoKTsKLX0KLQotY29uc3QgY2hhciogRXZlbnRMb29wRXZlbnRRdWV1
ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJFdmVudExvb3BF
dmVudFF1ZXVlIjsKLX0KLQotVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IEV2ZW50TG9v
cEV2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCi17Ci0gICAgYXV0
byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPihldmVudFRh
cmdldCk7Ci0gICAgZXZlbnRRdWV1ZS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGV2
ZW50UXVldWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExv
b3BFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZmZjc0NzYyZTdkMzE1ZDQ1NDMxYTFj
NDJkMTk4OWMxNjg0YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFZpY3RvciBD
YXJidW5lICh2aWN0b3JAcm9zZWR1Lm9yZykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRXZlbnQ7
Ci1jbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8v
IEZJWE1FOiBXZSBzaG91bGQgcG9ydCBjYWxsIHNpdGVzIHRvIHRoZSBIVE1MIGV2ZW50IGxvb3Ag
YW5kIHJlbW92ZSB0aGlzIGNsYXNzLgotY2xhc3MgRXZlbnRMb29wRXZlbnRRdWV1ZSA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxFdmVudExvb3BFdmVudFF1
ZXVlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBjcmVhdGUoRXZlbnRUYXJnZXQmKTsKLQot
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4mJik7Ci0gICAgdm9pZCBjbG9zZSgp
OwotCi0gICAgdm9pZCBjYW5jZWxBbGxFdmVudHMoKTsKLSAgICBib29sIGhhc1BlbmRpbmdFdmVu
dHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgVW5pcXVlUmVmPEV2ZW50
TG9vcEV2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
RXZlbnRMb29wRXZlbnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRUYXJnZXQmPihXZWJDb3JlOjpFdmVu
dFRhcmdldCYpOwotICAgIGV4cGxpY2l0IEV2ZW50TG9vcEV2ZW50UXVldWUoRXZlbnRUYXJnZXQm
KTsKLQotICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwotCi0gICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwot
Ci0gICAgRXZlbnRUYXJnZXQmIG1fb3duZXI7Ci0gICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9w
ZW5kaW5nRXZlbnRzOwotICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzRmlyaW5nRXZlbnQgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmQ3MDMzYjFlMGE4
NjlhZDAzNzliNWFjZDY5NjBmYmE1ZWM0ODMzNS4uZGZhNDI2NWI2NDNkZTQxY2QyMjZiYTVlZTY1
ZDVkZTc4NjFmNmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0zOTQsNyArMzk0LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2Nh
blRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywg
JkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpj
cmVhdGUoKnRoaXMpKQogICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAsIG1fZmlyc3RUaW1lUGxheWluZyh0
cnVlKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQpAQCAtNTE3LDggKzUxNiw2IEBAIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBiZWdpbklnbm9yaW5nVHJhY2tEaXNw
bGF5VXBkYXRlUmVxdWVzdHMoKTsKICAgICBhbGxNZWRpYUVsZW1lbnRzKCkucmVtb3ZlKHRoaXMp
OwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7Ci0KICAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCgp
KTsKIApAQCAtODk3LDIwICs4OTQsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBhdXRv
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwotCi0gICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0
YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6
dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCi0gICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFT
U0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KLQotICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIHNj
aGVkdWxlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAotI2lmIEVOQUJMRShQSUNUVVJFX0lO
X1BJQ1RVUkVfQVBJKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KFJlZjxF
dmVudD4mJiBldmVudCkKIHsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9u
R3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKIH0KLSNlbmRpZgogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQogewpAQCAtMTc3NywyMCAr
MTc2NywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIC8vIGxlc3MgdGhhbiB0aGUg
ZW5kVGltZSBpbiB0aGUgY3VlLgogICAgICAgICBpZiAoZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRU
aW1lKCkgPj0gZXZlbnRUYXNrLnNlY29uZC0+ZW5kVGltZSgpKSB7CiAgICAgICAgICAgICBhdXRv
IGVudGVyRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAgICAgICAg
ZW50ZXJFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9h
c3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGVudGVyRXZlbnQpKTsKKyAgICAg
ICAgICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29uZCwgV1RGTW92ZShlbnRlckV2
ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pOwotICAgICAgICAgICAgZXhpdEV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXhpdEV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5z
ZWNvbmQsIFdURk1vdmUoZXhpdEV2ZW50KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAgICAgICAgaWYgKGV2ZW50VGFzay5maXJzdCA9
PSBldmVudFRhc2suc2Vjb25kLT5zdGFydE1lZGlhVGltZSgpKQogICAgICAgICAgICAgICAgIGV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAg
ICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnRPbigqZXZlbnRUYXNrLnNlY29uZCwgZXZlbnQucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MDIsOCArMTc4OSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUm
IG1vdmllVGltZSkKICAgICAvLyB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY3Vl
Y2hhbmdlIGF0IHRoZSBUZXh0VHJhY2sgb2JqZWN0LCBhbmQsIC4uLgogICAgIGZvciAoYXV0byYg
YWZmZWN0ZWRUcmFjayA6IGFmZmVjdGVkVHJhY2tzKSB7CiAgICAgICAgIGF1dG8gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgZXZlbnQtPnNldFRhcmdl
dChhZmZlY3RlZFRyYWNrKTsKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqYWZmZWN0ZWRUcmFj
aywgV1RGTW92ZShldmVudCkpOwogCiAgICAgICAgIC8vIC4uLiBpZiB0aGUgdGV4dCB0cmFjayBo
YXMgYSBjb3JyZXNwb25kaW5nIHRyYWNrIGVsZW1lbnQsIHRvIHRoZW4gZmlyZSBhCiAgICAgICAg
IC8vIHNpbXBsZSBldmVudCBuYW1lZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMg
d2VsbC4KQEAgLTE4MTEsOCArMTc5Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAg
ICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAg
ICAgICAgIGF1dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxMb2FkYWJsZVRl
eHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVudCgpKTsKICAgICAgICAgICAgIEFT
U0VSVCh0cmFja0VsZW1lbnQpOwotICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0cmFja0Vs
ZW1lbnQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKnRyYWNrRWxlbWVudCwg
V1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTM3LDcgKzIxMjIsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9hc3lu
Y0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogCiAgICAgZm9yIChhdXRvJiBzb3Vy
Y2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRoaXMpKQogICAgICAgICBz
b3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAgLTI1MDEsOCArMjQ4Niw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5p
dERhdGEpCiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7Ci0g
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yNjUxLDcgKzI2MzUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3Qg
U3RyaW5nJiBpbgogICAgIC8vICAgICAgaW5pdERhdGFUeXBlID0gaW5pdERhdGFUeXBlCiAgICAg
Ly8gICAgICBpbml0RGF0YSA9IGluaXREYXRhCiAgICAgTWVkaWFFbmNyeXB0ZWRFdmVudEluaXQg
aW5pdGlhbGl6ZXIgeyBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpIH07Ci0gICAgbV9h
c3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKSk7CisgICAgc2NoZWR1bGVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXYWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpCkBAIC01NjE3LDcgKzU2MDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2VsUGVuZGluZ1Rhc2tzKCk7CiAgICAg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKLSAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+Y2xvc2UoKTsKKyAgICBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29udGV4dERlc3Ry
b3llZCgpCkBAIC01NzA1LDcgKzU2ODksNiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0xp
dmVTb3VyY2UoKSBjb25zdAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jcmVhdGluZ0NvbnRyb2xzCi0gICAg
ICAgIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nQWN0aXZpdHkoKQogICAgICAgICB8
fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAgICAgICAgfHwgKGhhc0xpdmVTb3VyY2Uo
KSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAgLTU4OTMsOCArNTg3Niw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdl
ZEV2ZW50KCkKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21lZGlhU2Vzc2lvbiAmJiBtZWRpYVNl
c3Npb24oKS5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygpOwogICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJnZXRzKTsKICAgICBhdXRvIGV2ZW50
ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCwgaGFzVGFy
Z2V0cyk7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKIH0KIApAQCAtODE0
OCw2ICs4MTMwLDExIEBAIE1lZGlhRWxlbWVudFNlc3Npb24mIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhU2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICptX21lZGlhU2Vzc2lvbjsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50T24o
VCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7CisgICAgdGFyZ2V0LnF1ZXVlQ2FuY2Vs
bGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KHRhcmdldCwgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50
LCBtX2FzeW5jRXZlbnRzQ2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUoZXZlbnQpKTsKK30KKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDhl
ZTcwMjQ4MjBjOGUyYTgwYzA5YjFlNzFkZTI1ZjA4OTFjNTBlNy4uNTA5ZjhiZGYwNTc3MTNmNzdh
NmZkMmZjZGU5MDY2MzA3NDk0NGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVk
ZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIK
LSNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJNZWRpYUNh
blN0YXJ0TGlzdGVuZXIuaCIKQEAgLTU0OSw5ICs1NDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7CiAKLSNpZiBFTkFCTEUo
UElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoUmVmPEV2ZW50
PiYmKTsKLSNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0
ZSB7IE5vbmUsIFByZXZlbnRlZEF1dG9wbGF5LCBTdGFydGVkV2l0aFVzZXJHZXN0dXJlLCBTdGFy
dGVkV2l0aG91dFVzZXJHZXN0dXJlIH07CiAKQEAgLTU3NCw2ICs1NzEsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVu
dDsKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKKyNlbmRpZgorCiBw
cm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxl
bWVudCgpOwpAQCAtNjAyLDYgKzYwNCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZU1l
ZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2No
ZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzY2hlZHVsZUV2ZW50T24oVCYgdGFyZ2V0LCBSZWY8RXZlbnQ+JiYpOwogCiAgICAgYm9v
bCBzaG93UG9zdGVyRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1Bvc3RlcjsgfQogICAgIHZv
aWQgc2V0U2hvd1Bvc3RlckZsYWcoYm9vbCk7CkBAIC02OTAsMTMgKzY5MywxMCBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKICNl
bmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2
b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9v
bCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFu
Z2VkRXZlbnQoKTsKLQotICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwotICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBTdHJp
bmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtOTUxLDcgKzk1MSw3
IEBAIHByaXZhdGU6CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fYnVmZmVyZWRUaW1lUmFu
Z2VzQ2hhbmdlZFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAgICBUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwotICAgIFVuaXF1ZVJlZjxFdmVudExvb3BF
dmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAg
bV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNlbGxhdGlv
bkdyb3VwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0Rh
dGFDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAppbmRleCAw
NDc5MjJkNjkwNGQwZjk3YWU1OTJiM2Y3ZTBhMjc4NDFkYmExMjU3Li4xYjYzMDU5ZjI1NWQ4NTk1
NDMyOWYxYjk2MmRiZTYwOTQ0Y2MzMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0RhdGFDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1
ZS5jcHAKQEAgLTcxLDIyICs3MSwzMCBAQCBEYXRhQ3VlOjpEYXRhQ3VlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbgogCiBSZWY8
RGF0YUN1ZT4gRGF0YUN1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50
LCBzdGFydCwgZW5kLCBkYXRhLCBsZW5ndGgpKTsKKyAgICBhdXRvIGRhdGFDdWUgPSBhZG9wdFJl
ZigqbmV3IERhdGFDdWUoZG9jdW1lbnQsIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCkpOworICAg
IGRhdGFDdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBkYXRhQ3VlOwogfQogCiBS
ZWY8RGF0YUN1ZT4gRGF0YUN1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBzdGFydCwgZW5kLCBXVEZNb3Zl
KHBsYXRmb3JtVmFsdWUpLCB0eXBlKSk7CisgICAgYXV0byBkYXRhQ3VlID0gYWRvcHRSZWYoKm5l
dyBEYXRhQ3VlKGRvY3VtZW50LCBzdGFydCwgZW5kLCBXVEZNb3ZlKHBsYXRmb3JtVmFsdWUpLCB0
eXBlKSk7CisgICAgZGF0YUN1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGRhdGFD
dWU7CiB9CiAKIFJlZjxEYXRhQ3VlPiBEYXRhQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIEFycmF5QnVmZmVyJiBkYXRhKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBkYXRhLCBl
bXB0eVN0cmluZygpKSk7CisgICAgYXV0byBkYXRhQ3VlID0gYWRvcHRSZWYoKm5ldyBEYXRhQ3Vl
KGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgZGF0YSwgZW1wdHlTdHJpbmcoKSkpOworICAgIGRhdGFD
dWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBkYXRhQ3VlOwogfQogCiBSZWY8RGF0
YUN1ZT4gRGF0YUN1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgdmFs
dWUsIHR5cGUpKTsKKyAgICBhdXRvIGRhdGFDdWUgPSBhZG9wdFJlZigqbmV3IERhdGFDdWUoZG9j
dW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmQpLCB2YWx1ZSwgdHlwZSkpOworICAgIGRhdGFDdWUtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBkYXRhQ3VlOwogfQogCiBEYXRhQ3VlOjp+RGF0YUN1ZSgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFU
ZXh0VHJhY2suY3BwCmluZGV4IDljY2I5OTI5YzRmNjNmM2E2MTA1N2I2OTY2NGUxNTUzMzc4MWYx
YzYuLjgzODAyMzJiNzkyOGEyN2I5MzIzNjgwNmMwMjg1MjlmMDdiYmVhODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNDUs
NyArNDUsOSBAQCBpbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5kRGF0YVRleHRUcmFj
ayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaQogCiBSZWY8SW5iYW5kRGF0YVRleHRU
cmFjaz4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4
dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNrKGRvY3Vt
ZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRS
ZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0
ZSkpOworICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRleHRU
cmFjazsKIH0KIAogSW5iYW5kRGF0YVRleHRUcmFjazo6fkluYmFuZERhdGFUZXh0VHJhY2soKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5l
cmljVGV4dFRyYWNrLmNwcAppbmRleCA2MzEyMTE3NmY3OGU0MjYxM2UyZTU1YWI1MmU1NmFlMGVm
YmIwN2Q2Li41NTZlNDQ5ZTg3NjJhZjE1MDVjOTEwOTAzNjdlZTE1OGRkM2EwMjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5j
cHAKQEAgLTcwLDcgKzcwLDkgQEAgaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHIKIAogUmVmPEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRv
IHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhkb2N1bWVu
dCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
On5JbmJhbmRHZW5lcmljVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmluZGV4IGE2MGU5OWVhYmZiODljODkyYTUx
ZDJlODU4NWRlOWRiYzY2MGExNGQuLjljZmExNGRmMmFlOTU4NjZjNTNiOGIxMDNiNmQ4NTlkNGJm
ZDVkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHAKQEAgLTUwLDcgKzUwLDkgQEAgUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNr
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQKICAgICAgICAgcmV0
dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBJ
bmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRl
KTsKKyAgICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1
bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVl
ZGVkKCk7CisgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAogSW5iYW5kVGV4dFRyYWNrOjpJbmJh
bmRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCmluZGV4IGEyMjI4YmMx
N2VhMzU2ZjYwNTIyOGM1NGVjZTM3MGRjNGZjZDQ5OTIuLjJhYTlmM2IwM2FiM2ExNDRlOTI3MTNh
NjVmYWYzZmZjZGY1YWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTQ2LDcgKzQ2LDkgQEAgaW5saW5lIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVu
dCwgVGV4dFRyYWMKIAogUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kV2ViVlRUVGV4dFRyYWNr
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZh
dGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kV2ViVlRUVGV4
dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIHRleHRUcmFjay0+
c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAogSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjp+SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA3ODBi
ZTMyY2UzNDVhNzQyOTkxYzM0MTJjNDM5ZmNjZTQ4ZjcyYzUyLi43NDYzMjBkN2MxNGQyYzQ3NWJh
MDQzNmI3Y2JiNTdhMDQxNzY1ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNDgsNyArNDgsOSBAQCBMb2FkYWJsZVRleHRUcmFj
azo6TG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmlu
ZyYga2luZAogCiBSZWY8TG9hZGFibGVUZXh0VHJhY2s+IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVh
dGUoSFRNTFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7
CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IExvYWRhYmxlVGV4dFRyYWNrKHRy
YWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJh
Y2s6OnNjaGVkdWxlTG9hZChjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAppbmRleCBkOWI0N2QyMGI4OWJiNjc4NjhiMGRmY2U3MTIyNDI5NjcxODBh
MDA1Li5lNWU1MGI0MTk1NmViMTQxNjFiM2FmNTI4MzgxYTU3NWRkMGYxOGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgVGV4dFRy
YWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAKIFRleHRUcmFjazo6
VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVu
dCogY2xpZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0
VHJhY2tUeXBlIHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2ssIGlk
LCBsYWJlbCwgbGFuZ3VhZ2UpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250
ZXh0KQorICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewpAQCAtMTE4LDcgKzExOCw5IEBAIFRleHRU
cmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFj
a0NsaWVudCogY2xpZW50LCBjCiAKIFJlZjxUZXh0VHJhY2s+IFRleHRUcmFjazo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IEF0b21TdHJp
bmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFk
ZFRyYWNrKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhk
b2N1bWVudCwgY2xpZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOwor
ICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRleHRUcmFjazsK
IH0KIAogVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKQEAgLTU5MCw2ICs1OTIsMTEgQEAgYm9vbCBU
ZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fa2luZCA9PSBLaW5kOjpGb3JjZWQ7CiB9CiAKK2NvbnN0IGNoYXIqIFRleHRUcmFjazo6YWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJUZXh0VHJhY2siOworfQor
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIHZvaWQgVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCmluZGV4IDlhNTMzNDg0MjJlYmRhOTE4YmZhM2ZiNWMxMGU2Mzk1MWZhODE0NDcuLjc0
NjMyZWE0YzBkOWEwMzdhN2I2NjAxMTc3ZDM0YzlhOWMxNTNlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSA9IDA7
CiB9OwogCi1jbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
K2NsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFRleHRUcmFjayk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUZXh0VHJhY2s+
IGNyZWF0ZShEb2N1bWVudCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21TdHJpbmcmIGtp
bmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwpAQCAtMTU5LDYgKzE1OSw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKwogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJUZXh0VHJhY2siOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAppbmRleCAwOWI2ZDFjMTk3YjJlOTlkYTc2Y2I5ZDNj
NGVmMGQyZTU1YmMzMDQyLi5lZGE1OWJjNDNlMTUyODJlYWJjZDBiY2E4M2I4MzFmZDI4ZTk5MmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCkBAIC0yNyw2ICsyNyw3
IEBAIGVudW0gVGV4dFRyYWNrTW9kZSB7ICJkaXNhYmxlZCIsICJoaWRkZW4iLCAic2hvd2luZyIg
fTsKIGVudW0gVGV4dFRyYWNrS2luZCB7ICJzdWJ0aXRsZXMiLCAiY2FwdGlvbnMiLCAiZGVzY3Jp
cHRpb25zIiwgImNoYXB0ZXJzIiwgIm1ldGFkYXRhIiwgImZvcmNlZCIgfTsKIAogWworICAgIEFj
dGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBFeHBvcnRUb1dyYXBw
ZWRGdW5jdGlvbiwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBkNGI2YmViM2Vh
NWMzODY1NDExZjNkMzcyMzFlMjE4NzVlY2ZkZWE3Li5hOWZiZTE2Yjk1YjIyM2ExNjRmMDQ5MTU2
MDdhOTA3MmE0N2IwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHls
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0yMjIsMjEgKzIyMywyNSBAQCBF
eGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrQ3VlPj4gVGV4dFRyYWNrQ3VlOjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBkb3VibGUgcwogICAgIGlmICghbm9kZVR5cGVzLmNvbnRhaW5zKFJlcXVp
cmVkTm9kZXM6OkN1ZUJhY2tncm91bmQpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsIG1ha2VTdHJpbmcoIk1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlOiAi
LCBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkudG9TdHJpbmcoKSkgfTsKIAotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRUcmFja0N1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdURk1v
dmUoZnJhZ21lbnQpKSk7CisgICAgYXV0byB0ZXh0VHJhY2tDdWUgPSBhZG9wdFJlZigqbmV3IFRl
eHRUcmFja0N1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwg
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdURk1vdmUoZnJhZ21lbnQpKSk7Cisg
ICAgdGV4dFRyYWNrQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNr
Q3VlOwogfQogCiBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8RG9jdW1l
bnRGcmFnbWVudD4mJiBjdWVGcmFnbWVudCkKLSAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQorICAg
IDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgICwgbV9zdGFydFRpbWUoc3RhcnQpCiAg
ICAgLCBtX2VuZFRpbWUoZW5kKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1f
Y3VlTm9kZShXVEZNb3ZlKGN1ZUZyYWdtZW50KSkKIHsKIH0KIAotVGV4dFRyYWNrQ3VlOjpUZXh0
VHJhY2tDdWUoRG9jdW1lbnQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kKQotICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCitUZXh0VHJhY2tDdWU6
OlRleHRUcmFja0N1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQor
ICAgICwgbV9zdGFydFRpbWUoc3RhcnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQotICAgICwgbV9k
b2N1bWVudChjb250ZXh0KQorICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKIHsKIH0KIApAQCAt
MzM1LDcgKzM0MCw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKICAgICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wg
VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCitib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2lzQWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9k
ZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQ7CiB9CkBAIC01MzEsNiArNTM2LDExIEBA
IHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxheVRyZWUoKQogICAgIG1fZGlzcGxheVRy
ZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOwogfQogCitjb25zdCBjaGFyKiBUZXh0VHJhY2tDdWU6OmFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVGV4dFRyYWNrQ3VlIjsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IGI1MDM4MWM1YWRmY2Y2ZjUwZmVkMzVkNGE4OWQx
ZTc4MTc1M2QzNTIuLjE3MjllNzlkZjRiZTE5NWE2ZTI4Y2QyNzY2NjEzNDMwMjRhNDZmOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIFdlYWtQdHI8VGV4dFRyYWNrQ3VlPiBtX2N1ZTsKIH07CiAKLWNsYXNz
IFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRl
eHRUcmFja0N1ZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZVNo
YWRvd1BzZXVkb0lkKCk7CkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUg
ZW5kTWVkaWFUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9CiAgICAgdm9pZCBzZXRF
bmRUaW1lKGNvbnN0IE1lZGlhVGltZSYpOwogCi0gICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPcmRlcmVkQmVmb3JlKGNvbnN0IFRleHRUcmFja0N1ZSop
IGNvbnN0OwpAQCAtMTM3LDE1ICsxMzcsMTcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBU
ZXh0VHJhY2tDdWUoRG9jdW1lbnQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYpOwogCisgICAgLy8gRXZlbnRUYXJn
ZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotCiAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50JikgZmlu
YWw7Ci0KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIFRleHRUcmFja0N1ZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbDsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgcmVidWlsZERpc3Bs
YXlUcmVlKCk7CiAKICAgICBTdHJpbmcgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCmluZGV4IGZmYmVjYTlhMDMzYzVlZDJhOGZj
MWJkMTA5OTk4M2E4MzE1MjVmYTQuLmY0MmQwNDgyY2E3Y2I4Y2RhZDk2OTFmMWU2M2Q4ZWJjZDQ3
ZDNhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmNwcApAQCAtMTYxLDcgKzE2MSw5IEBAIHZvaWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0Jv
eEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiAK
IFJlZjxUZXh0VHJhY2tDdWVHZW5lcmljPiBUZXh0VHJhY2tDdWVHZW5lcmljOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWVHZW5lcmljKGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSwgc3RhcnQsIGVuZCwgY29udGVudCkpOworICAgIGF1dG8gY3VlID0gYWRvcHRSZWYoKm5l
dyBUZXh0VHJhY2tDdWVHZW5lcmljKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgc3RhcnQs
IGVuZCwgY29udGVudCkpOworICAgIGN1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGN1ZTsKIH0KIAogVGV4dFRyYWNrQ3VlR2VuZXJpYzo6VGV4dFRyYWNrQ3VlR2VuZXJpYyhEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5j
cHAKaW5kZXggYWVkNTg4YzA2Y2M3ZWMxYzMwYWVmOTE0NWU2NmE4OWNlZTg1ZWY1Zi4uYTVhYjk3
NGMyNDZkOGMwYjc3YzEyNWI3ZWExNzNhZjk4MWEwYzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmNwcApAQCAtMjY0LDEyICsyNjQsMTYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGMKIAogUmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBkb3Vi
bGUgc3RhcnQsIGRvdWJsZSBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVlRUQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
c3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50
KSkpOworICAgIGF1dG8gY3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShlbmQpLCBXVEZNb3ZlKGNvbnRlbnQpKSk7CisgICAgY3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gY3VlOwogfQogCiBSZWY8VlRUQ3VlPiBWVFRDdWU6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFdlYlZUVEN1ZURhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVlRUQ3VlKGRvY3VtZW50LCBkYXRhKSk7CisgICAgYXV0byBjdWUgPSBhZG9w
dFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0YSkpOworICAgIGN1ZS0+c3VzcGVuZElmTmVl
ZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogVlRUQ3VlOjpWVFRDdWUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU3Ry
aW5nJiYgY29udGVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430869</attachid>
            <date>2021-06-08 11:35:20 -0700</date>
            <delta_ts>2021-06-08 18:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608113520.patch</filename>
            <type>text/plain</type>
            <size>49216</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjEx
YTY2OTRjMWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uZDhmM2IwY2M3ZWJiOTI5ZjdhZTkwOGJkZDBkMWE2
OTM3YmVhNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3
YXMgdXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3Rp
dmVET01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVj
dGx5IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBj
YXJlIG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhl
IGV2ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUg
d2FzIHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAg
ICAgIG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jv
bmcgYXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwg
dGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAg
ICAgZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEg
Y2xhc3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1M
TWVkaWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlz
cGF0Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3Rp
dmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZl
bnRJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAq
IGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZl
bnRMb29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkZCBpbml0aWFsIHBlcmNlbnQg
dmFsdWUgc3VwcG9ydCBmb3IgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzkwMzg3ZTI0
MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQzYzY2ZTgyNTRhZWIyNGU1MGYy
MGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjIsNyArNDYyLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAogICAgIGRvbS9FdmVudExv
b3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAgICBkb20vRXZlbnRNb2RpZmll
ckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20vRXZlbnRRdWV1ZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYzMGVkMjFhMDU3MmNiNWQuLjI2
YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAKIGRvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9FdmVudExvb3AuY3BwCi1kb20v
RXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0
aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzdiOGZlOWY3MmM2YWI1MDBjZjU2NzEz
YjZjMjQxOWI0YTRiZDlkLi5iMDM0NzlkZTZhMjIyNGY1NThiMTdjZGYzODQ5OGRmODMyMDJiYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcx
RTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZEMUFENUFB
MEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gKi87IH07CiAJCTA3MUU0
OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUw
MDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwpAQCAtNTc4MCw4ICs1Nzc5LDYgQEAKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5
IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExv
b3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMEIwOUYx
NEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3Q0VDMzI3MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJl
YW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDY2MSw4ICszMDY1OCw2IEBA
CiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmlk
bCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyogRXZlbnRMb29wLmNwcCAqLywK
IAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRMb29wLmggKi8sCi0JCQkJMDcy
MEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuY3BwICovLAotCQkJ
CTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BFdmVudFF1ZXVlLmggKi8sCiAJ
CQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmggKi8sCiAJ
CQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLywK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCkBAIC0z
MjU4NSw3ICszMjU4MCw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50
TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGMDJBMUEy
MzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyMEIw
QTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBh
dGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDAyNTg5MjNjZjZlM2E2YzYwMGY0OTM2Y2E2
YmQ5NzMxNDlhNDM4MTYuLjhhYmNiNTk0Yjc3NzQyMzRkNjBmOGIyMzQ5MjZhMjZiYTJmMDU0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKQEAgLTQzLDExICs0Myw5IEBAIGJvb2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoCiAgICAg
SlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3VlKj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAotICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKLSAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCi0gICAgaWYgKHRleHRUcmFja0N1ZS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkp
IHsKKyAgICBpZiAoIXRleHRUcmFja0N1ZS5pc0NvbnRleHRTdG9wcGVkKCkgJiYgdGV4dFRyYWNr
Q3VlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24p
KQotICAgICAgICAgICAgKnJlYXNvbiA9ICJUZXh0VHJhY2tDdWUgaXMgZmlyaW5nIGV2ZW50IGxp
c3RlbmVycyI7CisgICAgICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBl
bmRpbmcgYWN0aXZpdHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZDBjOTI5ZjY1MzNmODJlZTQxN2ExNzAzNmM2ZjYxNGQyZjg3MmU2MC4uZDI1ZTNmZjQ0YjZiNjRj
OWY5MzkzZjk2YWI5MzhlNDg2OTg4ODdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NjEsNyArNDY2MSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJBY3Rp
dmVET01PYmplY3QuaCIpOwogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0
ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
ZjxBY3RpdmVET01PYmplY3QsICR7aW1wbFR5cGV9Pjo6dmFsdWUsIFwiSW50ZXJmYWNlIGlzIG1h
cmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBu
b3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LlwiKTtcblxuIik7Ci0gICAgICAgIH0gZWxzZSB7
CisgICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAiQ3VzdG9tSXNSZWFjaGFibGUiKSkgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2
ZURPTU9iamVjdCwgJHtpbXBsVHlwZX0+Ojp2YWx1ZSwgXCJJbnRlcmZhY2UgaXMgbm90IG1hcmtl
ZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBz
dWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC5cIik7XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAppbmRleCAxMTJjOTRlNTRkNDRkNmU1MmZmZWVhMTUxYjMwYzE0MGFjZWRh
MTY2Li5mMTAwNDQ1MzMxNmEzYWZiNjc3NzJmNDllZjA2MDc1ZDkzMDNjYTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcApAQCAtNTg2LDggKzU4Niw2IEBAIHZvaWQgSlNUZXN0RE9NSklUOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RE9NSklUPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90
IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBj
bGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQogfQogCiBKU09iamVjdCogSlNU
ZXN0RE9NSklUOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDVhNGZmNWNiMjRjYzE1NjNjNGVmNTYwYWQyYjZm
MzM0MWQxYzI0ZWUuLmY1NDI2OGM5ZTEwZmYzODY1YTFiMmE0YTQ3Y2RhOGVmNDk1NjA0ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKQEAgLTI0MSw4ICsyNDEsNiBAQCB2b2lkIEpTVGVzdE5vZGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROb2RlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90
IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBj
bGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQogfQogCiBKU09iamVjdCogSlNU
ZXN0Tm9kZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggODlkODk4
MjBhNzY0NzdkMDE4ZjNjZmUzNDE5YzcxNmRjNjQ1NTBhOC4uMTZkZmQ1Njg4OTdkNDBjZGM1YWQz
NWViNjU5NTIwOGFlZGRlYWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5j
cHAKQEAgLTEzOCwxMSArMTM4LDEwIEBAIHZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tJ
bkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgRnVuY3Rpb248dm9pZCAoKT4mCiAKIGNsYXNz
IEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrIDogcHVibGljIEV2ZW50TG9vcFRhc2sg
ewogcHVibGljOgotICAgIEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrKFRhc2tTb3Vy
Y2Ugc291cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwLCBBY3RpdmVET01PYmplY3QmIG9i
amVjdCwgRXZlbnRUYXJnZXQmIHRhcmdldCwgUmVmPEV2ZW50PiYmIGV2ZW50KQorICAgIEFjdGl2
ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExvb3BU
YXNrR3JvdXAmIGdyb3VwLCBBY3RpdmVET01PYmplY3QmIG9iamVjdCwgRnVuY3Rpb248dm9pZCgp
PiYmIGRpc3BhdGNoRXZlbnQpCiAgICAgICAgIDogRXZlbnRMb29wVGFzayhzb3VyY2UsIGdyb3Vw
KQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKLSAgICAgICAgLCBtX3RhcmdldCh0YXJnZXQp
Ci0gICAgICAgICwgbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKKyAgICAgICAgLCBtX2Rpc3BhdGNo
RXZlbnQoV1RGTW92ZShkaXNwYXRjaEV2ZW50KSkKICAgICB7CiAgICAgICAgICsrbV9vYmplY3Qu
bV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50OwogICAgIH0KQEAgLTE1OCwxMyArMTU3LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgdGhpcyB0YXNrIGV4ZWN1dGVzIGFmdGVyIHRoZSBz
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgaGFzIGJlZW4gc3RvcHBlZCwgZG9uJ3QKICAgICAgICAg
Ly8gYWN0dWFsbHkgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAgICAgICBpZiAobV9vYmplY3QuaXNB
bGxvd2VkVG9SdW5TY3JpcHQoKSkKLSAgICAgICAgICAgIG1fdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KG1fZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgbV9kaXNwYXRjaEV2ZW50KCk7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIEFjdGl2ZURPTU9iamVjdCYgbV9vYmplY3Q7Ci0gICAgUmVmPEV2ZW50
VGFyZ2V0PiBtX3RhcmdldDsKLSAgICBSZWY8RXZlbnQ+IG1fZXZlbnQ7CisgICAgRnVuY3Rpb248
dm9pZCgpPiBtX2Rpc3BhdGNoRXZlbnQ7CiB9OwogCiB2b2lkIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQmIHRhcmdldCwgVGFza1Nv
dXJjZSBzb3VyY2UsIFJlZjxFdmVudD4mJiBldmVudCkKQEAgLTE3NCw3ICsxNzIsMjIgQEAgdm9p
ZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50
VGFyZ2V0JiB0YXJnZXQsIFRhc2sKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICBhdXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5ldmVudExvb3AoKTsKLSAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNr
Pihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIHRhcmdldCwgV1RGTW92ZShldmVu
dCkpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NT2JqZWN0RXZlbnREaXNw
YXRjaFRhc2s+KHNvdXJjZSwgZXZlbnRMb29wVGFza0dyb3VwLCAqdGhpcywgW3RhcmdldCA9IG1h
a2VSZWYodGFyZ2V0KSwgZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIH0pOworICAgIGV2ZW50TG9vcFRhc2tHcm91cC5x
dWV1ZVRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0OjpxdWV1
ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiB0YXJn
ZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxhdGlv
bkdyb3VwLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7CisgICAgQVNTRVJUKCFldmVudC0+dGFyZ2V0
KCkgfHwgJnRhcmdldCA9PSBldmVudC0+dGFyZ2V0KCkpOworICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1
cm47CisgICAgYXV0byYgZXZlbnRMb29wVGFza0dyb3VwID0gY29udGV4dC0+ZXZlbnRMb29wKCk7
CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNo
VGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBDYW5jZWxsYWJsZVRhc2so
Y2FuY2VsbGF0aW9uR3JvdXAsIFt0YXJnZXQgPSBtYWtlUmVmKHRhcmdldCksIGV2ZW50ID0gV1RG
TW92ZShldmVudCldIHsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAg
ICB9KSk7CiAgICAgZXZlbnRMb29wVGFza0dyb3VwLnF1ZXVlVGFzayhXVEZNb3ZlKHRhc2spKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IDExMDc0YjAxODU3ZjY0
ZmZlOWJiMmY4MjgwZmQ2M2NlNmY4YzRkZGIuLjY1NzhiNjQwOWQzNDk3MzdmNDZhMjc1YTJkODk1
OTc3N2Y5OTRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTEyMCwx
MiArMTIwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+Ci0gICAgc3RhdGlj
IHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBU
YXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVm
PEV2ZW50PiYmIGV2ZW50KQogICAgIHsKICAgICAgICAgdGFyZ2V0LnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudEludGVybmFsKHRhcmdldCwgc291cmNlLCBXVEZNb3ZlKGV2ZW50KSk7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlPgorICAgIHN0YXRpYyB2b2lk
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgVGFza0NhbmNlbGxhdGlvbkdyb3VwJiBjYW5jZWxsYXRp
b25Hcm91cCwgUmVmPEV2ZW50PiYmIGV2ZW50KQorICAgIHsKKyAgICAgICAgdGFyZ2V0LnF1ZXVl
Q2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwodGFyZ2V0LCBzb3VyY2UsIGNh
bmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAg
ICBleHBsaWNpdCBBY3RpdmVET01PYmplY3QoRG9jdW1lbnQqKTsKQEAgLTE0Miw2ICsxNDgsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlLCBG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudElu
dGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsKKyAgICB2b2lk
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQm
LCBUYXNrU291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmLCBSZWY8RXZlbnQ+JiYpOwogCiAg
ICAgdWludDY0X3QgbV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50IHsgMCB9OwogI2lmIEFT
U0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZl
bnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YzE2MjE3MmEzN2FiZDUyZTQ2ZTJjNmIz
MDhmOTFlYTMwMjk5ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVmljdG9y
IENhcmJ1bmUgKHZpY3RvckByb3NlZHUub3JnKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV2ZW50TG9v
cEV2ZW50UXVldWUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQu
aCIKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgotI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotRXZlbnRMb29wRXZlbnRRdWV1ZTo6RXZlbnRMb29wRXZlbnRRdWV1ZShF
dmVudFRhcmdldCYgb3duZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3Qob3duZXIuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9vd25lcihvd25lcikKLXsKLX0KLQotdm9pZCBFdmVu
dExvb3BFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50KQotewot
ICAgIGlmIChtX2lzQ2xvc2VkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChldmVudC0+dGFyZ2V0KCkgPT0gJm1fb3duZXIpCi0gICAgICAg
IGV2ZW50LT5zZXRUYXJnZXQobnVsbHB0cik7Ci0KLSAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5k
KFdURk1vdmUoZXZlbnQpKTsKLQotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5kaXNwYXRjaE9uZUV2ZW50KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRXZlbnRMb29w
RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hPbmVFdmVudCgpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdF
dmVudHMuaXNFbXB0eSgpKTsKLQotICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkT3duZXIo
bV9vd25lcik7Ci0gICAgU2V0Rm9yU2NvcGU8Ym9vbD4gZXZlbnRGaXJpbmdTY29wZShtX2lzRmly
aW5nRXZlbnQsIHRydWUpOwotCi0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IG1fcGVuZGluZ0V2
ZW50cy50YWtlRmlyc3QoKTsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IHRhcmdldCA9IGV2ZW50LT50
YXJnZXQoKSA/ICpldmVudC0+dGFyZ2V0KCkgOiBtX293bmVyOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXRhcmdldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3Rz
QXJlU3RvcHBlZCgpLAotICAgICAgICAiQW4gYXR0ZW1wdCB0byBkaXNwYXRjaCBhbiBldmVudCBv
biBhIHN0b3BwZWQgdGFyZ2V0IGJ5IEV2ZW50VGFyZ2V0SW50ZXJmYWNlPSVkIChub2RlTmFtZT0l
cyB0YXJnZXQ9JXAgb3duZXI9JXApIiwKLSAgICAgICAgbV9vd25lci5ldmVudFRhcmdldEludGVy
ZmFjZSgpLCBtX293bmVyLmlzTm9kZSgpID8gc3RhdGljX2Nhc3Q8Tm9kZSY+KG1fb3duZXIpLm5v
ZGVOYW1lKCkuYXNjaWkoKS5kYXRhKCkgOiAiIiwgdGFyZ2V0LnB0cigpLCAmbV9vd25lcik7Ci0g
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVudCk7Ci19Ci0KLXZvaWQgRXZlbnRMb29wRXZl
bnRRdWV1ZTo6Y2xvc2UoKQotewotICAgIG1faXNDbG9zZWQgPSB0cnVlOwotICAgIGNhbmNlbEFs
bEV2ZW50cygpOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6OmNhbmNlbEFsbEV2ZW50
cygpCi17Ci0gICAgd2Vha1B0ckZhY3RvcnkoKS5yZXZva2VBbGwoKTsKLSAgICBtX3BlbmRpbmdF
dmVudHMuY2xlYXIoKTsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVudFF1ZXVlOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiAhbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHko
KSB8fCBtX2lzRmlyaW5nRXZlbnQ7Ci19Ci0KLWJvb2wgRXZlbnRMb29wRXZlbnRRdWV1ZTo6aGFz
UGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OmFueU9mKG1fcGVuZGluZ0V2ZW50cywgWyZdKGF1dG8mIGV2ZW50KSB7IHJl
dHVybiBldmVudC0+dHlwZSgpID09IHR5cGU7IH0pOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50
UXVldWU6OnN0b3AoKQotewotICAgIGNsb3NlKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIEV2ZW50TG9v
cEV2ZW50UXVldWU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAotewotICAgIHJldHVybiAi
RXZlbnRMb29wRXZlbnRRdWV1ZSI7Ci19Ci0KLVVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVl
PiBFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0KQot
ewotICAgIGF1dG8gZXZlbnRRdWV1ZSA9IG1ha2VVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1
ZT4oZXZlbnRUYXJnZXQpOwotICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAg
IHJldHVybiBldmVudFF1ZXVlOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2
ZW50UXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2ZmY3NDc2MmU3ZDMx
NWQ0NTQzMWExYzQyZDE5ODljMTY4NGMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBWaWN0b3IgQ2FyYnVuZSAodmljdG9yQHJvc2VkdS5vcmcpCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEV2ZW50OwotY2xhc3MgRXZlbnRUYXJnZXQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHBvcnQgY2FsbCBzaXRlcyB0byB0aGUgSFRNTCBl
dmVudCBsb29wIGFuZCByZW1vdmUgdGhpcyBjbGFzcy4KLWNsYXNzIEV2ZW50TG9vcEV2ZW50UXVl
dWUgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RXZlbnRM
b29wRXZlbnRRdWV1ZT4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIHN0YXRpYyBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFy
Z2V0Jik7Ci0KLSAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+JiYpOwotICAgIHZv
aWQgY2xvc2UoKTsKLQotICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7Ci0gICAgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKLQotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIFVuaXF1
ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPEV2ZW50TG9vcEV2ZW50UXVldWUsIFdlYkNvcmU6OkV2ZW50VGFyZ2V0Jj4oV2Vi
Q29yZTo6RXZlbnRUYXJnZXQmKTsKLSAgICBleHBsaWNpdCBFdmVudExvb3BFdmVudFF1ZXVlKEV2
ZW50VGFyZ2V0Jik7Ci0KLSAgICB2b2lkIGRpc3BhdGNoT25lRXZlbnQoKTsKLQotICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKLQotICAgIEV2ZW50VGFyZ2V0JiBtX293bmVyOwotICAgIERlcXVlPFJlZlB0cjxF
dmVudD4+IG1fcGVuZGluZ0V2ZW50czsKLSAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9pc0ZpcmluZ0V2ZW50IHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDZk
NzAzM2IxZTBhODY5YWQwMzc5YjVhY2Q2OTYwZmJhNWVjNDgzMzUuLmRmYTQyNjViNjQzZGU0MWNk
MjI2YmE1ZWU2NWQ1ZGU3ODYxZjZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMzk0LDcgKzM5NCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAg
ICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVk
KQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGlt
ZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2
aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3NpdGlv
bkVuZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0
aW9uRW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoRXZlbnRMb29wRXZl
bnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmll
VGltZShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2ZpcnN0VGlt
ZVBsYXlpbmcodHJ1ZSkKICAgICAsIG1fcGxheWluZyhmYWxzZSkKQEAgLTUxNyw4ICs1MTYsNiBA
QCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgYmVnaW5JZ25vcmlu
Z1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLnJl
bW92ZSh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgc2V0
U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwogICAgIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQo
ZG9jdW1lbnQoKSk7CiAKQEAgLTg5NywyMCArODk0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiB7
Ci0gICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKLQotICAgIC8vIERvbid0IHNldCB0
aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2
ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcgaXQgaGVyZQotICAgIC8vIHdpbGwgdHJp
Z2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRp
b24uCi0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKKyAgICBzY2hlZHVsZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKLSNpZiBFTkFCTEUo
UElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVF
dmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVl
dWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9hc3luY0V2ZW50c0Nh
bmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50KSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzY2hlZHVsZVJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKCkKIHsKQEAg
LTE3NzcsMjAgKzE3NjcsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAgICAvLyBsZXNz
IHRoYW4gdGhlIGVuZFRpbWUgaW4gdGhlIGN1ZS4KICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNv
bmQtPnN0YXJ0VGltZSgpID49IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRpbWUoKSkgewogICAgICAg
ICAgICAgYXV0byBlbnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAg
ICAgICAgICAgIGVudGVyRXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKLSAgICAg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2ZW50
KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIFdURk1v
dmUoZW50ZXJFdmVudCkpOwogCiAgICAgICAgICAgICBhdXRvIGV4aXRFdmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGV4aXRFdmVudC0+c2V0VGFyZ2V0KGV2
ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVF
dmVudChXVEZNb3ZlKGV4aXRFdmVudCkpOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudE9uKCpl
dmVudFRhc2suc2Vjb25kLCBXVEZNb3ZlKGV4aXRFdmVudCkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAgICAgICAgIGlmIChldmVudFRh
c2suZmlyc3QgPT0gZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRNZWRpYVRpbWUoKSkKICAgICAgICAg
ICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
byk7Ci0gICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAg
ICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5zZWNvbmQsIGV2ZW50LnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODAyLDggKzE3ODksNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3Qg
TWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgLy8gdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50
IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgVGV4dFRyYWNrIG9iamVjdCwgYW5kLCAuLi4KICAgICBm
b3IgKGF1dG8mIGFmZmVjdGVkVHJhY2sgOiBhZmZlY3RlZFRyYWNrcykgewogICAgICAgICBhdXRv
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7Ci0gICAgICAgIGV2ZW50
LT5zZXRUYXJnZXQoYWZmZWN0ZWRUcmFjayk7Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmFm
ZmVjdGVkVHJhY2ssIFdURk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRl
eHQgdHJhY2sgaGFzIGEgY29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUg
YQogICAgICAgICAvLyBzaW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBl
bGVtZW50IGFzIHdlbGwuCkBAIC0xODExLDggKzE3OTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUp
CiAgICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3Vl
Y2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
byk7CiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxlbWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8
TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNrKS50cmFja0VsZW1lbnQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJn
ZXQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudE9uKCp0cmFj
a0VsZW1lbnQsIFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjEzNyw3
ICsyMTIyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRh
bGx5KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcygpCiB7CiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwor
ICAgIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKIAogICAgIGZvciAo
YXV0byYgc291cmNlIDogY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkK
ICAgICAgICAgc291cmNlLmNhbmNlbFBlbmRpbmdFcnJvckV2ZW50KCk7CkBAIC0yNTAxLDggKzI0
ODYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqIGluaXREYXRhKQogICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtl
eU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5p
dERhdGEpOwotICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgc2NoZWR1bGVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtMjY1MSw3ICsyNjM1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKGNvbnN0IFN0cmluZyYgaW4KICAgICAvLyAgICAgIGluaXREYXRhVHlwZSA9IGluaXREYXRh
VHlwZQogICAgIC8vICAgICAgaW5pdERhdGEgPSBpbml0RGF0YQogICAgIE1lZGlhRW5jcnlwdGVk
RXZlbnRJbml0IGluaXRpYWxpemVyIHsgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9
OwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50
OjpJc1RydXN0ZWQ6OlllcykpOworICAgIHNjaGVkdWxlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50
OjpJc1RydXN0ZWQ6OlllcykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNTYxNyw3ICs1NjAxLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMoKQogewogICAgIGNhbmNlbFBlbmRpbmdUYXNr
cygpOwogICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2Vs
KCk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50c0Nh
bmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bnRleHREZXN0cm95ZWQoKQpAQCAtNTcwNSw3ICs1Njg5LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpoYXNMaXZlU291cmNlKCkgY29uc3QKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY3JlYXRpbmdDb250
cm9scwotICAgICAgICB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkK
ICAgICAgICAgfHwgKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpCiAgICAgICAgIHx8IChoYXNM
aXZlU291cmNlKCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMoKSk7CiB9CkBAIC01ODkzLDggKzU4NzYs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUNoYW5nZWRFdmVudCgpCiAgICAgYm9vbCBoYXNUYXJnZXRzID0gbV9tZWRpYVNlc3Npb24g
JiYgbWVkaWFTZXNzaW9uKCkuaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMoKTsKICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJoYXNUYXJnZXRzID0gIiwgaGFzVGFyZ2V0cyk7CiAgICAg
YXV0byBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZl
bnQsIGhhc1RhcmdldHMpOwotICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgc2NoZWR1bGVF
dmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiB9
CiAKQEAgLTgxNDgsNiArODEzMCwxMSBAQCBNZWRpYUVsZW1lbnRTZXNzaW9uJiBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiAqbV9tZWRpYVNlc3Npb247
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVFdmVudE9uKFQmIHRhcmdldCwgUmVmPEV2ZW50PiYmIGV2ZW50KQoreworICAgIHRhcmdldC5x
dWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudCh0YXJnZXQsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50
KSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IGQ4ZWU3MDI0ODIwYzhlMmE4MGMwOWIxZTcxZGUyNWYwODkxYzUwZTcuLjUwOWY4YmRm
MDU3NzEzZjc3YTZmZDJmY2RlOTA2NjMwNzQ5NDRiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXVkaW9UcmFjay5o
IgogI2luY2x1ZGUgIkF1dG9wbGF5RXZlbnQuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCiAjaW5jbHVk
ZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC01NDksOSArNTQ4LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwogCi0j
aWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50
KFJlZjxFdmVudD4mJik7Ci0jZW5kaWYKIAogICAgIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudFBs
YXliYWNrU3RhdGUgeyBOb25lLCBQcmV2ZW50ZWRBdXRvcGxheSwgU3RhcnRlZFdpdGhVc2VyR2Vz
dHVyZSwgU3RhcnRlZFdpdGhvdXRVc2VyR2VzdHVyZSB9OwogCkBAIC01NzQsNiArNTcxLDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBvdmVycmlkZTsKIAorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRp
c3BhdGNoRXZlbnQ7CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgfkhU
TUxNZWRpYUVsZW1lbnQoKTsKQEAgLTYwMiw2ICs2MDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCB1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCk7CiAKICAg
ICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgc2NoZWR1bGVFdmVudE9uKFQmIHRhcmdldCwgUmVmPEV2ZW50PiYmKTsK
IAogICAgIGJvb2wgc2hvd1Bvc3RlckZsYWcoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQb3N0ZXI7
IH0KICAgICB2b2lkIHNldFNob3dQb3N0ZXJGbGFnKGJvb2wpOwpAQCAtNjkwLDEzICs2OTMsMTAg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVk
S2V5KCk7CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3ND
aGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5Q2hhbmdlZEV2ZW50KCk7Ci0KLSAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hF
dmVudDsKLSAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKQEAgLTk1
MSw3ICs5NTEsNyBAQCBwcml2YXRlOgogICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX2J1ZmZl
cmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAgICAgVGFza0NhbmNl
bGxhdGlvbkdyb3VwIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAg
ICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKLSAgICBVbmlxdWVSZWY8
RXZlbnRMb29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgVGFza0NhbmNlbGxh
dGlvbkdyb3VwIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRpb25Hcm91cDsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX3ZvbHVtZVJldmVydFRhc2tD
YW5jZWxsYXRpb25Hcm91cDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5j
cHAKaW5kZXggMDQ3OTIyZDY5MDRkMGY5N2FlNTkyYjNmN2UwYTI3ODQxZGJhMTI1Ny4uMWI2MzA1
OWYyNTVkODU5NTQzMjlmMWI5NjJkYmU2MDk0NGNjMzBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuY3BwCkBAIC03MSwyMiArNzEsMzAgQEAgRGF0YUN1ZTo6RGF0YUN1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZW4KIAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1
ZShkb2N1bWVudCwgc3RhcnQsIGVuZCwgZGF0YSwgbGVuZ3RoKSk7CisgICAgYXV0byBkYXRhQ3Vl
ID0gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBzdGFydCwgZW5kLCBkYXRhLCBsZW5n
dGgpKTsKKyAgICBkYXRhQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZGF0YUN1
ZTsKIH0KIAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZT4mJiBwbGF0Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgc3RhcnQsIGVu
ZCwgV1RGTW92ZShwbGF0Zm9ybVZhbHVlKSwgdHlwZSkpOworICAgIGF1dG8gZGF0YUN1ZSA9IGFk
b3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgc3RhcnQsIGVuZCwgV1RGTW92ZShwbGF0Zm9y
bVZhbHVlKSwgdHlwZSkpOworICAgIGRhdGFDdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBkYXRhQ3VlOwogfQogCiBSZWY8RGF0YUN1ZT4gRGF0YUN1ZTo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBBcnJheUJ1ZmZlciYgZGF0YSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5k
KSwgZGF0YSwgZW1wdHlTdHJpbmcoKSkpOworICAgIGF1dG8gZGF0YUN1ZSA9IGFkb3B0UmVmKCpu
ZXcgRGF0YUN1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwg
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIGRhdGEsIGVtcHR5U3RyaW5nKCkpKTsK
KyAgICBkYXRhQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZGF0YUN1ZTsKIH0K
IAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIHR5
cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGVuZCksIHZhbHVlLCB0eXBlKSk7CisgICAgYXV0byBkYXRhQ3VlID0gYWRvcHRSZWYoKm5ldyBE
YXRhQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgdmFsdWUsIHR5cGUpKTsKKyAgICBkYXRhQ3Vl
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZGF0YUN1ZTsKIH0KIAogRGF0YUN1ZTo6
fkRhdGFDdWUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmREYXRhVGV4dFRyYWNrLmNwcAppbmRleCA5Y2NiOTkyOWM0ZjYzZjNhNjEwNTdiNjk2NjRl
MTU1MzM3ODFmMWM2Li44MzgwMjMyYjc5MjhhMjdiOTMyMzY4MDZjMDI4NTI5ZjA3YmJlYTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5j
cHAKQEAgLTQ1LDcgKzQ1LDkgQEAgaW5saW5lIEluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERh
dGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGkKIAogUmVmPEluYmFu
ZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0
cmFja1ByaXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRU
cmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFj
ayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0
cmFja1ByaXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZERhdGFUZXh0VHJhY2s6On5JbmJhbmREYXRhVGV4
dFRyYWNrKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggNjMxMjExNzZmNzhlNDI2MTNlMmU1NWFi
NTJlNTZhZTBlZmJiMDdkNi4uNTU2ZTQ0OWU4NzYyYWYxNTA1YzkxMDkwMzY3ZWUxNThkZDNhMDI5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNU
ZXh0VHJhY2suY3BwCkBAIC03MCw3ICs3MCw5IEBAIGlubGluZSBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyCiAK
IFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7
CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJh
Y2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgdGV4dFRyYWNrLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiBJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjp+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCBhNjBlOTllYWJm
Yjg5Yzg5MmE1MWQyZTg1ODVkZTlkYmM2NjBhMTRkLi45Y2ZhMTRkZjJhZTk1ODY2YzUzYjhiMTAz
YjZkODU5ZDRiZmQ1ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suY3BwCkBAIC01MCw3ICs1MCw5IEBAIFJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFu
ZFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50CiAg
ICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xp
ZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRy
YWNrUHJpdmF0ZSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmREYXRhVGV4dFRyYWNrOjpj
cmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICB0ZXh0VHJhY2stPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZFRleHRU
cmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50
JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCBhMjIyOGJjMTdlYTM1NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyLi4yYWE5ZjNiMDNhYjNh
MTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC00Niw3ICs0Niw5IEBAIGlu
bGluZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVu
dCYgZG9jdW1lbnQsIFRleHRUcmFjCiAKIFJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZU
VFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBj
bGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwg
dHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFu
ZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB0
ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAK
IEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
aW5kZXggNzgwYmUzMmNlMzQ1YTc0Mjk5MWMzNDEyYzQzOWZjY2U0OGY3MmM1Mi4uNzQ2MzIwZDdj
MTRkMmM0NzViYTA0MzZiN2NiYjU3YTA0MTc2NWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgTG9hZGFi
bGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBj
b25zdCBTdHJpbmcmIGtpbmQKIAogUmVmPExvYWRhYmxlVGV4dFRyYWNrPiBMb2FkYWJsZVRleHRU
cmFjazo6Y3JlYXRlKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBMb2FkYWJsZVRl
eHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgdGV4dFRyYWNrLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQogCiB2b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggZDliNDdkMjBiODliYjY3ODY4YjBkZmNlNzEy
MjQyOTY3MTgwYTAwNS4uZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVkZDBmMThjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogCiBU
ZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0
cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6VGV4
dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoY29udGV4dCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsKQEAgLTExOCw3ICsxMTgs
OSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogCiBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25z
dCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmlu
ZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCBraW5kLCBpZCwgbGFiZWwsIGxh
bmd1YWdlLCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBU
ZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRk
VHJhY2spKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
ZXh0VHJhY2s7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBAIC01OTAsNiArNTkyLDEx
IEBAIGJvb2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAog
ICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCitjb25zdCBjaGFyKiBUZXh0
VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVGV4dFRy
YWNrIjsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lkIFRleHRUcmFjazo6c2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaAppbmRleCA5YTUzMzQ4NDIyZWJkYTkxOGJmYTNmYjVjMTBlNjM5NTFm
YTgxNDQ3Li43NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTljMTUzZTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVi
bGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9t
U3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFi
ZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKQEAgLTE1OSw2ICsxNTksOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmlu
YWw7CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNrIjsgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXggMDliNmQxYzE5N2IyZTk5
ZGE3NmNiOWQzYzRlZjBkMmU1NWJjMzA0Mi4uZWRhNTliYzQzZTE1MjgyZWFiY2QwYmNhODNiODMx
ZmQyOGU5OTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAt
MjcsNiArMjcsNyBAQCBlbnVtIFRleHRUcmFja01vZGUgeyAiZGlzYWJsZWQiLCAiaGlkZGVuIiwg
InNob3dpbmciIH07CiBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpb25z
IiwgImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZGF0YSIsICJmb3JjZWQiIH07CiAK
IFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgRXhw
b3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVu
dFJvb3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXgg
ZDRiNmJlYjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIxODc1ZWNmZGVhNy4uYTlmYmUxNmI5NWIyMjNh
MTY0ZjA0OTE1NjA3YTkwNzJhNDdiMDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMjIyLDIxICsy
MjMsMjUgQEAgRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRleHRUcmFja0N1ZTo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHMKICAgICBpZiAoIW5vZGVUeXBlcy5jb250
YWlucyhSZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5nIHJlcXVpcmVkIGF0
dHJpYnV0ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRvU3RyaW5nKCkpIH07CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShl
bmQpLCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAgIGF1dG8gdGV4dFRyYWNrQ3VlID0gYWRvcHRS
ZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdt
ZW50KSkpOworICAgIHRleHRUcmFja0N1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IHRleHRUcmFja0N1ZTsKIH0KIAogVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwg
UmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgY3VlRnJhZ21lbnQpCi0gICAgOiBtX3N0YXJ0VGltZShz
dGFydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1l
KHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQp
CiAgICAgLCBtX2N1ZU5vZGUoV1RGTW92ZShjdWVGcmFnbWVudCkpCiB7CiB9CiAKLVRleHRUcmFj
a0N1ZTo6VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKLSAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQorVGV4
dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRp
bWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChk
b2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkK
LSAgICAsIG1fZG9jdW1lbnQoY29udGV4dCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiB7
CiB9CiAKQEAgLTMzNSw3ICszNDAsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6ZGlzcGF0Y2hFdmVu
dChFdmVudCYgZXZlbnQpCiAgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwog
fQogCi1ib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQorYm9vbCBUZXh0VHJhY2tDdWU6Omlz
QWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRy
YWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkOwogfQpAQCAtNTMxLDYg
KzUzNiwxMSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKICAgICBt
X2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIH0KIAorY29uc3QgY2hhciogVGV4dFRy
YWNrQ3VlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlRleHRU
cmFja0N1ZSI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCBiNTAzODFjNWFkZmNmNmY1MGZl
ZDM1ZDRhODlkMWU3ODE3NTNkMzUyLi4xNzI5ZTc5ZGY0YmUxOTVhNmUyOGNkMjc2NjYxMzQzMDI0
YTQ2ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFRleHRUcmFja0N1ZT4gbV9jdWU7CiB9
OwogCi1jbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CitjbGFzcyBUZXh0VHJhY2tDdWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChUZXh0VHJhY2tDdWUpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpOwpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAg
TWVkaWFUaW1lIGVuZE1lZGlhVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kVGltZTsgfQogICAg
IHZvaWQgc2V0RW5kVGltZShjb25zdCBNZWRpYVRpbWUmKTsKIAotICAgIGJvb2wgaXNBY3RpdmUo
KTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldElzQWN0
aXZlKGJvb2wpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0
VHJhY2tDdWUqKSBjb25zdDsKQEAgLTEzNywxNSArMTM3LDE3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgVGV4dFRyYWNrQ3VlKERvY3VtZW50JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmKTsKIAorICAgIC8v
IEV2ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KLQogICAgIHVz
aW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChF
dmVudCYpIGZpbmFsOwotCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tDdWVFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHJl
YnVpbGREaXNwbGF5VHJlZSgpOwogCiAgICAgU3RyaW5nIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAppbmRleCBmZmJlY2E5YTAz
M2M1ZWQyYThmYzFiZDEwOTk5ODNhODMxNTI1ZmE0Li5mNDJkMDQ4MmNhN2NiOGNkYWQ5NjkxZjFl
NjNkOGViY2Q0N2QzYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTE2MSw3ICsxNjEsOSBAQCB2b2lkIFRleHRUcmFja0N1
ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlk
ZW9TaXplKQogCiBSZWY8VGV4dFRyYWNrQ3VlR2VuZXJpYz4gVGV4dFRyYWNrQ3VlR2VuZXJpYzo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1
bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBhdXRvIGN1ZSA9IGFk
b3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBjdWU7CiB9CiAKIFRleHRUcmFja0N1ZUdlbmVyaWM6OlRleHRUcmFja0N1ZUdl
bmVyaWMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2VjMWMzMGFlZjkxNDVlNjZhODljZWU4NWVm
NWYuLmE1YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTczYWY5ODFhMGMyMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwxMiArMjY0LDE2IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBTdHJpbmcmJiBjb250ZW50KQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdURk1v
dmUoY29udGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcgVlRUQ3VlKGRvY3Vt
ZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50KSkpOworICAgIGN1ZS0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogUmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJWVFRDdWVEYXRhJiBkYXRhKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0YSkpOworICAgIGF1dG8g
Y3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIGRhdGEpKTsKKyAgICBjdWUtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFZUVEN1ZTo6VlRUQ3VlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430931</attachid>
            <date>2021-06-08 18:29:23 -0700</date>
            <delta_ts>2021-06-08 21:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226748-20210608182923.patch</filename>
            <type>text/plain</type>
            <size>49231</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZhNjgxY2RiMTkxOWRm
NDI4MTlhZGVhZTNlZWY5ZmUxNDgwNzExYS4uNjNjYzk5MzRiNWIyNTg2MTA3OTIxMzY4YjdiZmY3
MDRiZmUwOGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRM
b29wRXZlbnRRdWV1ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRHJvcCBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBjbGFzcyB3aGljaCB3YXMg
dXNlZCBieSBIVE1MTWVkaWFFbGVtZW50LiBJIGFkZGVkIGEKKyAgICAgICAgcXVldWVDYW5jZWxs
YWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiBvbiBBY3RpdmVE
T01PYmplY3QgdG8KKyAgICAgICAgc2NoZWR1bGUgY2FuY2VsbGFibGUgZXZlbnRzIGRpcmVjdGx5
IG9uIHRoZSBIVE1MIGV2ZW50IGxvb3AuIFRoZSBmdW5jdGlvbiB0YWtlcworICAgICAgICBjYXJl
IG9mIGtlZXBpbmcgdGhlIG9iamVjdCBhbmQgaXRzIHdyYXBwZXIgYWxpdmUgdW50aWwgdGhlIGV2
ZW50IGhhcyBmaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHByZXZpb3VzIGNvZGUgd2Fz
IHVzaW5nIEV2ZW50TG9vcEV2ZW50UXVldWUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uCisgICAgICAg
IG90aGVyIG9iamVjdHMgdGhhbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4gVGhpcyB3YXMgd3Jvbmcg
YXMgaXQgd291bGRuJ3QgdGFrZQorICAgICAgICBjYXJlIG9mIGtlZXBpbmcgdGhlIHJlYWwgdGFy
Z2V0J3MgSlMgd3JhcHBlciBhbGl2ZSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUKKyAgICAgICAg
ZXZlbnQuIEFzIGEgcmVzdWx0LCBJIGhhZCB0byB1cGRhdGUgYSBjb3VwbGUgb2YgbWVkaWEgY2xh
c3NlcyB0byBzdWJjbGFzcworICAgICAgICBBY3RpdmVET01PYmplY3QgYW5kIHRoZSBIVE1MTWVk
aWFFbGVtZW50IG5vdyBjYWxscworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0
Y2hFdmVudCgpIGRpcmVjdGx5IG9uIHRoZSB0YXJnZXQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrOjpBY3RpdmVE
T01PYmplY3RFdmVudERpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01P
YmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjdGl2ZURPTU9iamVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJ
bnRlcm5hbCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRv
bS9FdmVudExvb3BFdmVudFF1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRXZlbnRM
b29wRXZlbnRRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRy
YWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQZW5k
aW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnRPbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
dHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphY3Rp
dmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5o
OgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorCiAyMDIxLTA2LTA4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gQXNzZXJ0aW9uIGlmIGF0dGVtcHRpbmcg
dG8gcGVyZm9ybSBldmljdGlvbiBiZWZvcmUgcGxheWJhY2sgc3RhcnRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMzkwMzg3ZTI0MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MS4uMGYxNGQz
YzY2ZTgyNTRhZWIyNGU1MGYyMGJjYzU3M2U1ZDdmYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC00NjIsNyArNDYyLDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGRvbS9FdmVudExpc3RlbmVyTWFwLmgKICAgICBkb20vRXZlbnRMaXN0ZW5lck9wdGlvbnMu
aAogICAgIGRvbS9FdmVudExvb3AuaAotICAgIGRvbS9FdmVudExvb3BFdmVudFF1ZXVlLmgKICAg
ICBkb20vRXZlbnRNb2RpZmllckluaXQuaAogICAgIGRvbS9FdmVudE5hbWVzLmgKICAgICBkb20v
RXZlbnRRdWV1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDRhZDhkYjI2NGZmYTdhZGVkMjk2MWFiYjYz
MGVkMjFhMDU3MmNiNWQuLjI2YzUzMzk1OGVjM2NmZmViNDdhMDllNDg0N2U4MjVlNmMyOWRiMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC05NDksNyArOTQ5LDYgQEAgZG9tL0V2ZW50Q29udGV4dC5jcHAK
IGRvbS9FdmVudERpc3BhdGNoZXIuY3BwCiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKIGRvbS9F
dmVudExvb3AuY3BwCi1kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAKIGRvbS9FdmVudE5hbWVz
LmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9FdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYWNjMWVl
YjAyMzY0OWEyOWVkYjI0NjQ0NzZlODhjMjA2OTYxNDgwLi5hZGE0MTRjNDdjN2MwODk5ZDM5NTQy
ZTQ0OGQ1Njg0NWMyOTc4OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIsNyArMTAyLDYgQEAKIAkJMDcxQTlFQzMxNjhG
QkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBU
ZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
bW0gKi87IH07CiAJCTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzIwQjBB
MTE0RDMzMjM1MDA2NDI5NTUgLyogRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1
IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5
ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0Qw
MThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggKi87IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5oICovOyB9OwpAQCAtNTc4OSw4ICs1Nzg4LDYgQEAKIAkJMDcxQTlF
QzExNjhGQjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzFFNDk2RjFBRDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5
NTUgLyogRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFdmVudExvb3BFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wRXZlbnRRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEg
LyogTWVkaWFTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0RDE3
Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcy
MjFCNEUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNZWRpYVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MDcwOCw4ICszMDcwNSw2IEBACiAJCQkJNDZCRDA1QzAyNUJCNkU0RDAwMjI1RjMwIC8qIEV2ZW50
TGlzdGVuZXJPcHRpb25zLmlkbCAqLywKIAkJCQk5QjkxRENDQzIzODM3OTJEMDAwRUVFMEYgLyog
RXZlbnRMb29wLmNwcCAqLywKIAkJCQk5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyogRXZlbnRM
b29wLmggKi8sCi0JCQkJMDcyMEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50
UXVldWUuY3BwICovLAotCQkJCTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBFdmVudExvb3BF
dmVudFF1ZXVlLmggKi8sCiAJCQkJODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9k
aWZpZXJJbml0LmggKi8sCiAJCQkJODNGRTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9k
aWZpZXJJbml0LmlkbCAqLywKIAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnRO
YW1lcy5jcHAgKi8sCkBAIC0zMjYzNiw3ICszMjYzMSw2IEBACiAJCQkJQUQ0NDk1RjQxNDFGQzA4
OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkQw
NUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZGMDJBMUEyMzczN0Y4MzAwMTA2QTY0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMDcyMEIwQTExNEQzMzIzNTAwNjQyOTU1IC8qIEV2ZW50TG9vcEV2ZW50UXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVu
dE1vZGlmaWVySW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1QzQwOEI3RTNEMTAwRTcw
N0M0IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzE0RTIxMUM5MTE2Njkw
MEFDMEU5MiAvKiBFdmVudFBhdGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDAyNTg5MjNj
ZjZlM2E2YzYwMGY0OTM2Y2E2YmQ5NzMxNDlhNDM4MTYuLjZmMGQxYmM3ZWM3YTMyZWQ4ODE4Mzc4
ZTVkNDU2Zjk3ZGYxMzAxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKQEAgLTQzLDExICs0Myw5IEBAIGJvb2wgSlNUZXh0
VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoCiAgICAgSlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0
PEpTVGV4dFRyYWNrQ3VlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIFRleHRUcmFj
a0N1ZSYgdGV4dFRyYWNrQ3VlID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAotICAgIC8v
IElmIHRoZSBjdWUgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVh
Y2hhYmxlIGJlY2F1c2UKLSAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFy
a2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCi0gICAgaWYgKHRleHRUcmFja0N1ZS5pc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkpIHsKKyAgICBpZiAoIXRleHRUcmFja0N1ZS5pc0NvbnRleHRTdG9w
cGVkKCkgJiYgdGV4dFRyYWNrQ3VlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CiAgICAgICAgIGlm
IChVTkxJS0VMWShyZWFzb24pKQotICAgICAgICAgICAgKnJlYXNvbiA9ICJUZXh0VHJhY2tDdWUg
aXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycyI7CisgICAgICAgICAgICAqcmVhc29uID0gIlRleHRU
cmFja0N1ZSB3aXRoIHBlbmRpbmcgYWN0aXZpdHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggZDBjOTI5ZjY1MzNmODJlZTQxN2ExNzAzNmM2ZjYxNGQyZjg3MmU2MC4u
ZDI1ZTNmZjQ0YjZiNjRjOWY5MzkzZjk2YWI5MzhlNDg2OTg4ODdiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ2NjEs
NyArNDY2MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJBY3RpdmVET01PYmplY3QuaCIpOwogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVj
dCIpKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsICR7aW1wbFR5cGV9Pjo6dmFsdWUsIFwi
SW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRp
b24gY2xhc3MgZG9lcyBub3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LlwiKTtcblxuIik7Ci0g
ICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQ3VzdG9tSXNSZWFjaGFibGUiKSkgewog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydCghc3RkOjpp
c19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgJHtpbXBsVHlwZX0+Ojp2YWx1ZSwgXCJJbnRlcmZh
Y2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1l
bnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC5cIik7XG5cbiIpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAxMTJjOTRlNTRkNDRkNmU1MmZmZWVh
MTUxYjMwYzE0MGFjZWRhMTY2Li5mMTAwNDQ1MzMxNmEzYWZiNjc3NzJmNDllZjA2MDc1ZDkzMDNj
YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtNTg2LDggKzU4Niw2IEBAIHZvaWQgSlNUZXN0RE9N
SklUOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RE9NSklUPjo6dmFsdWUsICJJ
bnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBp
bXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQogfQog
CiBKU09iamVjdCogSlNUZXN0RE9NSklUOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDVhNGZmNWNiMjRjYzE1
NjNjNGVmNTYwYWQyYjZmMzM0MWQxYzI0ZWUuLmY1NDI2OGM5ZTEwZmYzODY1YTFiMmE0YTQ3Y2Rh
OGVmNDk1NjA0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTI0MSw4ICsyNDEsNiBAQCB2b2lkIEpTVGVz
dE5vZGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROb2RlPjo6dmFsdWUsICJJ
bnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBp
bXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQogfQog
CiBKU09iamVjdCogSlNUZXN0Tm9kZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5j
cHAKaW5kZXggODlkODk4MjBhNzY0NzdkMDE4ZjNjZmUzNDE5YzcxNmRjNjQ1NTBhOC4uMTZkZmQ1
Njg4OTdkNDBjZGM1YWQzNWViNjU5NTIwOGFlZGRlYWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5jcHAKQEAgLTEzOCwxMSArMTM4LDEwIEBAIHZvaWQgQWN0aXZlRE9NT2Jq
ZWN0OjpxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlIHNvdXJjZSwgRnVuY3Rpb248dm9p
ZCAoKT4mCiAKIGNsYXNzIEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrIDogcHVibGlj
IEV2ZW50TG9vcFRhc2sgewogcHVibGljOgotICAgIEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0
Y2hUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwLCBBY3Rp
dmVET01PYmplY3QmIG9iamVjdCwgRXZlbnRUYXJnZXQmIHRhcmdldCwgUmVmPEV2ZW50PiYmIGV2
ZW50KQorICAgIEFjdGl2ZURPTU9iamVjdEV2ZW50RGlzcGF0Y2hUYXNrKFRhc2tTb3VyY2Ugc291
cmNlLCBFdmVudExvb3BUYXNrR3JvdXAmIGdyb3VwLCBBY3RpdmVET01PYmplY3QmIG9iamVjdCwg
RnVuY3Rpb248dm9pZCgpPiYmIGRpc3BhdGNoRXZlbnQpCiAgICAgICAgIDogRXZlbnRMb29wVGFz
ayhzb3VyY2UsIGdyb3VwKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKLSAgICAgICAgLCBt
X3RhcmdldCh0YXJnZXQpCi0gICAgICAgICwgbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKKyAgICAg
ICAgLCBtX2Rpc3BhdGNoRXZlbnQoV1RGTW92ZShkaXNwYXRjaEV2ZW50KSkKICAgICB7CiAgICAg
ICAgICsrbV9vYmplY3QubV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50OwogICAgIH0KQEAg
LTE1OCwxMyArMTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgdGhpcyB0YXNrIGV4ZWN1
dGVzIGFmdGVyIHRoZSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgaGFzIGJlZW4gc3RvcHBlZCwg
ZG9uJ3QKICAgICAgICAgLy8gYWN0dWFsbHkgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAgICAgICBp
ZiAobV9vYmplY3QuaXNBbGxvd2VkVG9SdW5TY3JpcHQoKSkKLSAgICAgICAgICAgIG1fdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KG1fZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgbV9kaXNwYXRjaEV2
ZW50KCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEFjdGl2ZURPTU9iamVjdCYgbV9vYmplY3Q7
Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKLSAgICBSZWY8RXZlbnQ+IG1fZXZlbnQ7
CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Rpc3BhdGNoRXZlbnQ7CiB9OwogCiB2b2lkIEFjdGl2
ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwoRXZlbnRUYXJnZXQm
IHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudD4mJiBldmVudCkKQEAgLTE3NCw3
ICsxNzIsMjIgQEAgdm9pZCBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dEludGVybmFsKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIFRhc2sKICAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKICAgICBhdXRvJiBldmVudExvb3BUYXNrR3JvdXAgPSBjb250ZXh0LT5l
dmVudExvb3AoKTsKLSAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2
ZW50RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIHRhcmdl
dCwgV1RGTW92ZShldmVudCkpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9N
T2JqZWN0RXZlbnREaXNwYXRjaFRhc2s+KHNvdXJjZSwgZXZlbnRMb29wVGFza0dyb3VwLCAqdGhp
cywgW3RhcmdldCA9IG1ha2VSZWYodGFyZ2V0KSwgZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0gewor
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIH0pOworICAgIGV2ZW50
TG9vcFRhc2tHcm91cC5xdWV1ZVRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK3ZvaWQgQWN0aXZl
RE9NT2JqZWN0OjpxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2
ZW50VGFyZ2V0JiB0YXJnZXQsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAmIGNhbmNlbGxhdGlvbkdyb3VwLCBSZWY8RXZlbnQ+JiYgZXZlbnQpCit7CisgICAgQVNTRVJU
KCFldmVudC0+dGFyZ2V0KCkgfHwgJnRhcmdldCA9PSBldmVudC0+dGFyZ2V0KCkpOworICAgIGF1
dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgZXZlbnRMb29wVGFza0dyb3VwID0gY29udGV4
dC0+ZXZlbnRMb29wKCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmpl
Y3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBD
YW5jZWxsYWJsZVRhc2soY2FuY2VsbGF0aW9uR3JvdXAsIFt0YXJnZXQgPSBtYWtlUmVmKHRhcmdl
dCksIGV2ZW50ID0gV1RGTW92ZShldmVudCldIHsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKKyAgICB9KSk7CiAgICAgZXZlbnRMb29wVGFza0dyb3VwLnF1ZXVlVGFzayhX
VEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4
IDExMDc0YjAxODU3ZjY0ZmZlOWJiMmY4MjgwZmQ2M2NlNmY4YzRkZGIuLjY1NzhiNjQwOWQzNDk3
MzdmNDZhMjc1YTJkODk1OTc3N2Y5OTRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2Jq
ZWN0LmgKQEAgLTEyMCwxMiArMTIwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgfSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5
cGU+Ci0gICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0
VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGU+CisgICAgc3RhdGljIHZvaWQg
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291
cmNlIHNvdXJjZSwgUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgIHsKICAgICAgICAgdGFyZ2V0LnF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKHRhcmdldCwgc291cmNlLCBXVEZNb3ZlKGV2
ZW50KSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlPgor
ICAgIHN0YXRpYyB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50
VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwgVGFza0NhbmNlbGxhdGlvbkdy
b3VwJiBjYW5jZWxsYXRpb25Hcm91cCwgUmVmPEV2ZW50PiYmIGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGFyZ2V0LnF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJuYWwodGFy
Z2V0LCBzb3VyY2UsIGNhbmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICBleHBsaWNpdCBBY3RpdmVET01PYmplY3QoRG9jdW1lbnQqKTsKQEAg
LTE0Miw2ICsxNDgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9v
cChUYXNrU291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50
PiYmKTsKKyAgICB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVUYXNrVG9EaXNwYXRjaEV2ZW50SW50ZXJu
YWwoRXZlbnRUYXJnZXQmLCBUYXNrU291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmLCBSZWY8
RXZlbnQ+JiYpOwogCiAgICAgdWludDY0X3QgbV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50
IHsgMCB9OwogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMb29wRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29w
RXZlbnRRdWV1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YzE2MjE3MmEz
N2FiZDUyZTQ2ZTJjNmIzMDhmOTFlYTMwMjk5ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcEV2ZW50UXVl
dWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgVmljdG9yIENhcmJ1bmUgKHZpY3RvckByb3NlZHUub3JnKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkV2ZW50TG9vcEV2ZW50UXVldWUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKLSNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5o
PgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3Bl
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRXZlbnRMb29wRXZlbnRRdWV1ZTo6RXZlbnRM
b29wRXZlbnRRdWV1ZShFdmVudFRhcmdldCYgb3duZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3Qo
b3duZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9vd25lcihvd25lcikKLXsK
LX0KLQotdm9pZCBFdmVudExvb3BFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50
PiYmIGV2ZW50KQotewotICAgIGlmIChtX2lzQ2xvc2VkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChldmVudC0+dGFyZ2V0KCkgPT0gJm1f
b3duZXIpCi0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQobnVsbHB0cik7Ci0KLSAgICBtX3BlbmRp
bmdFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKLQotICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykK
LSAgICAgICAgICAgIHdlYWtUaGlzLT5kaXNwYXRjaE9uZUV2ZW50KCk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hPbmVFdmVudCgpCi17Ci0gICAgQVNT
RVJUKCFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpKTsKLQotICAgIFJlZjxFdmVudFRhcmdldD4g
cHJvdGVjdGVkT3duZXIobV9vd25lcik7Ci0gICAgU2V0Rm9yU2NvcGU8Ym9vbD4gZXZlbnRGaXJp
bmdTY29wZShtX2lzRmlyaW5nRXZlbnQsIHRydWUpOwotCi0gICAgUmVmUHRyPEV2ZW50PiBldmVu
dCA9IG1fcGVuZGluZ0V2ZW50cy50YWtlRmlyc3QoKTsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IHRh
cmdldCA9IGV2ZW50LT50YXJnZXQoKSA/ICpldmVudC0+dGFyZ2V0KCkgOiBtX293bmVyOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXRhcmdldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpLAotICAgICAgICAiQW4gYXR0ZW1wdCB0byBkaXNw
YXRjaCBhbiBldmVudCBvbiBhIHN0b3BwZWQgdGFyZ2V0IGJ5IEV2ZW50VGFyZ2V0SW50ZXJmYWNl
PSVkIChub2RlTmFtZT0lcyB0YXJnZXQ9JXAgb3duZXI9JXApIiwKLSAgICAgICAgbV9vd25lci5l
dmVudFRhcmdldEludGVyZmFjZSgpLCBtX293bmVyLmlzTm9kZSgpID8gc3RhdGljX2Nhc3Q8Tm9k
ZSY+KG1fb3duZXIpLm5vZGVOYW1lKCkuYXNjaWkoKS5kYXRhKCkgOiAiIiwgdGFyZ2V0LnB0cigp
LCAmbV9vd25lcik7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVudCk7Ci19Ci0KLXZv
aWQgRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y2xvc2UoKQotewotICAgIG1faXNDbG9zZWQgPSB0cnVl
OwotICAgIGNhbmNlbEFsbEV2ZW50cygpOwotfQotCi12b2lkIEV2ZW50TG9vcEV2ZW50UXVldWU6
OmNhbmNlbEFsbEV2ZW50cygpCi17Ci0gICAgd2Vha1B0ckZhY3RvcnkoKS5yZXZva2VBbGwoKTsK
LSAgICBtX3BlbmRpbmdFdmVudHMuY2xlYXIoKTsKLX0KLQotYm9vbCBFdmVudExvb3BFdmVudFF1
ZXVlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiAhbV9wZW5kaW5n
RXZlbnRzLmlzRW1wdHkoKSB8fCBtX2lzRmlyaW5nRXZlbnQ7Ci19Ci0KLWJvb2wgRXZlbnRMb29w
RXZlbnRRdWV1ZTo6aGFzUGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBl
KSBjb25zdAotewotICAgIHJldHVybiBXVEY6OmFueU9mKG1fcGVuZGluZ0V2ZW50cywgWyZdKGF1
dG8mIGV2ZW50KSB7IHJldHVybiBldmVudC0+dHlwZSgpID09IHR5cGU7IH0pOwotfQotCi12b2lk
IEV2ZW50TG9vcEV2ZW50UXVldWU6OnN0b3AoKQotewotICAgIGNsb3NlKCk7Ci19Ci0KLWNvbnN0
IGNoYXIqIEV2ZW50TG9vcEV2ZW50UXVldWU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiAiRXZlbnRMb29wRXZlbnRRdWV1ZSI7Ci19Ci0KLVVuaXF1ZVJlZjxFdmVu
dExvb3BFdmVudFF1ZXVlPiBFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoRXZlbnRUYXJnZXQm
IGV2ZW50VGFyZ2V0KQotewotICAgIGF1dG8gZXZlbnRRdWV1ZSA9IG1ha2VVbmlxdWVSZWY8RXZl
bnRMb29wRXZlbnRRdWV1ZT4oZXZlbnRUYXJnZXQpOwotICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJ
Zk5lZWRlZCgpOwotICAgIHJldHVybiBldmVudFF1ZXVlOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TG9vcEV2ZW50UXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTU2ZmY3NDc2MmU3ZDMxNWQ0NTQzMWExYzQyZDE5ODljMTY4NGMxYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
b29wRXZlbnRRdWV1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBWaWN0b3IgQ2FyYnVuZSAodmljdG9yQHJvc2VkdS5vcmcpCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEV2ZW50OwotY2xhc3MgRXZlbnRUYXJnZXQ7Ci1jbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHBvcnQgY2FsbCBzaXRl
cyB0byB0aGUgSFRNTCBldmVudCBsb29wIGFuZCByZW1vdmUgdGhpcyBjbGFzcy4KLWNsYXNzIEV2
ZW50TG9vcEV2ZW50UXVldWUgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RXZlbnRMb29wRXZlbnRRdWV1ZT4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIHN0YXRpYyBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4g
Y3JlYXRlKEV2ZW50VGFyZ2V0Jik7Ci0KLSAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZl
bnQ+JiYpOwotICAgIHZvaWQgY2xvc2UoKTsKLQotICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7
Ci0gICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25z
dDsKLQotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0g
ICAgZnJpZW5kIFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBXVEY6Om1ha2VVbmlxdWVS
ZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEV2ZW50TG9vcEV2ZW50UXVldWUsIFdlYkNvcmU6OkV2
ZW50VGFyZ2V0Jj4oV2ViQ29yZTo6RXZlbnRUYXJnZXQmKTsKLSAgICBleHBsaWNpdCBFdmVudExv
b3BFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0Jik7Ci0KLSAgICB2b2lkIGRpc3BhdGNoT25lRXZlbnQo
KTsKLQotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
LSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLQotICAgIEV2ZW50VGFyZ2V0JiBtX293bmVyOwotICAg
IERlcXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2ZW50czsKLSAgICBib29sIG1faXNDbG9z
ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0ZpcmluZ0V2ZW50IHsgZmFsc2UgfTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGQwMGM1MjdjZDBhNWY0MTNkYjJmZmQyZTA3NDliNWMxMDFhMWRjNTYuLjJi
MjBkOTkwMTJmOTkyNmMyNTFiYjE0MGQ1ZGY3NDA2NjY0ZjFiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzk0LDcgKzM5NCw2IEBAIEhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6
OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9y
UmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRy
b2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAsIG1fc2Vla1Rv
UGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpzZWVr
VG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9hc3luY0V2ZW50UXVl
dWUoRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbGFzdFRpbWVV
cGRhdGVFdmVudE1vdmllVGltZShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAg
ICAgLCBtX2ZpcnN0VGltZVBsYXlpbmcodHJ1ZSkKICAgICAsIG1fcGxheWluZyhmYWxzZSkKQEAg
LTUxNyw4ICs1MTYsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAg
ICAgYmVnaW5JZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAgICAgYWxsTWVk
aWFFbGVtZW50cygpLnJlbW92ZSh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9z
ZSgpOwotCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwogICAgIHVucmVnaXN0
ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAKQEAgLTg5NywyMCArODk0LDEzIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgp
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5n
JiBldmVudE5hbWUpCiB7Ci0gICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKLQotICAg
IC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQg
aXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcgaXQgaGVyZQot
ICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhhcyBiZWVuIG1h
cmtlZCBmb3IgZGVsZXRpb24uCi0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKKyAgICBzY2hlZHVsZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9
CiAKLSNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0gICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgcXVldWVDYW5jZWxs
YWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
bV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLCBXVEZNb3ZlKGV2ZW50KSk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVJlc29sdmVQZW5kaW5nUGxheVBy
b21pc2VzKCkKIHsKQEAgLTE3NzcsMjAgKzE3NjcsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQog
ICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIGVuZFRpbWUgaW4gdGhlIGN1ZS4KICAgICAgICAgaWYg
KGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0VGltZSgpID49IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRp
bWUoKSkgewogICAgICAgICAgICAgYXV0byBlbnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGVudGVyRXZlbnQtPnNldFRhcmdldChldmVudFRhc2su
c2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShlbnRlckV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFz
ay5zZWNvbmQsIFdURk1vdmUoZW50ZXJFdmVudCkpOwogCiAgICAgICAgICAgICBhdXRvIGV4aXRF
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGV4aXRFdmVu
dC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50
UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV4aXRFdmVudCkpOworICAgICAgICAgICAgc2No
ZWR1bGVFdmVudE9uKCpldmVudFRhc2suc2Vjb25kLCBXVEZNb3ZlKGV4aXRFdmVudCkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAgICAg
ICAgIGlmIChldmVudFRhc2suZmlyc3QgPT0gZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRNZWRpYVRp
bWUoKSkKICAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVudGVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
byk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObyk7Ci0gICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFz
ay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50T24oKmV2ZW50VGFzay5z
ZWNvbmQsIGV2ZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
ODAyLDggKzE3ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRU
cmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgLy8gdGFzayB0byBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgVGV4dFRyYWNrIG9iamVjdCwg
YW5kLCAuLi4KICAgICBmb3IgKGF1dG8mIGFmZmVjdGVkVHJhY2sgOiBhZmZlY3RlZFRyYWNrcykg
ewogICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hh
bmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7
Ci0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoYWZmZWN0ZWRUcmFjayk7Ci0gICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICBzY2hl
ZHVsZUV2ZW50T24oKmFmZmVjdGVkVHJhY2ssIFdURk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAv
LyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEgY29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50
LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBzaW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdl
IGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwuCkBAIC0xODExLDggKzE3OTcsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFU
aW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNrKS50cmFja0Vs
ZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAg
IGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICAgICAgc2NoZWR1
bGVFdmVudE9uKCp0cmFja0VsZW1lbnQsIFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjEzNyw3ICsyMTIyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxv
YWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcygpCiB7CiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNl
bEFsbEV2ZW50cygpOworICAgIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwo
KTsKIAogICAgIGZvciAoYXV0byYgc291cmNlIDogY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVs
ZW1lbnQ+KCp0aGlzKSkKICAgICAgICAgc291cmNlLmNhbmNlbFBlbmRpbmdFcnJvckV2ZW50KCk7
CkBAIC0yNTAxLDggKzI0ODYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogICAgIH0KIAogICAgIGF1dG8gZXZlbnQg
PSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5l
ZWRrZXlFdmVudCwgaW5pdERhdGEpOwotICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAg
bV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgc2No
ZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtMjY1MSw3
ICsyNjM1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW4KICAgICAvLyAgICAgIGluaXREYXRh
VHlwZSA9IGluaXREYXRhVHlwZQogICAgIC8vICAgICAgaW5pdERhdGEgPSBpbml0RGF0YQogICAg
IE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0IGluaXRpYWxpemVyIHsgaW5pdERhdGFUeXBlLCBXVEZN
b3ZlKGluaXREYXRhKSB9OwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoTWVk
aWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5p
dGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6OlllcykpOworICAgIHNjaGVkdWxlRXZlbnQoTWVk
aWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5p
dGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6OlllcykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNTYxNyw3ICs1NjAx
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMoKQogewogICAgIGNh
bmNlbFBlbmRpbmdUYXNrcygpOwogICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0
aW9uR3JvdXAuY2FuY2VsKCk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CisgICAg
bV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNvbnRleHREZXN0cm95ZWQoKQpAQCAtNTcwNSw3ICs1Njg5LDYgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpoYXNMaXZlU291cmNlKCkgY29uc3QKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY3JlYXRpbmdDb250cm9scwotICAgICAgICB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVu
ZGluZ0FjdGl2aXR5KCkKICAgICAgICAgfHwgKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpCiAg
ICAgICAgIHx8IChoYXNMaXZlU291cmNlKCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMoKSk7CiB9CkBA
IC01ODkzLDggKzU4NzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpCiAgICAgYm9vbCBoYXNUYXJnZXRzID0g
bV9tZWRpYVNlc3Npb24gJiYgbWVkaWFTZXNzaW9uKCkuaGFzV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dHMoKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJoYXNUYXJnZXRzID0gIiwgaGFz
VGFyZ2V0cyk7CiAgICAgYXV0byBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQsIGhhc1RhcmdldHMpOwotICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CisgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgc2NoZWR1bGVVcGRhdGVN
ZWRpYVN0YXRlKCk7CiB9CiAKQEAgLTgxNTMsNiArODEzNSwxMSBAQCBNZWRpYUVsZW1lbnRTZXNz
aW9uJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiAq
bV9tZWRpYVNlc3Npb247CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2NoZWR1bGVFdmVudE9uKFQmIHRhcmdldCwgUmVmPEV2ZW50PiYmIGV2ZW50KQor
eworICAgIHRhcmdldC5xdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudCh0YXJnZXQs
IFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9hc3luY0V2ZW50c0NhbmNlbGxhdGlvbkdyb3Vw
LCBXVEZNb3ZlKGV2ZW50KSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IDQ4N2VkZjkwZDAwYzIyYjI2MjNjMWI4YTFmZmZhOTc2MTIz
ZmFhYzEuLmUyZDJiOGUyODhmNDRkOGQ2MWNkYTQ0MDkyZDFhNWU5NWM3NGRhZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkF1dG9wbGF5RXZlbnQuaCIKICNpbmNsdWRlICJD
YXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVu
dW1zLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC01NTAsOSArNTQ5
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVu
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCgpIGZpbmFsOwogCi0jaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KFJlZjxFdmVudD4mJik7Ci0jZW5kaWYKIAogICAgIGVudW0gY2xhc3Mg
QXV0b3BsYXlFdmVudFBsYXliYWNrU3RhdGUgeyBOb25lLCBQcmV2ZW50ZWRBdXRvcGxheSwgU3Rh
cnRlZFdpdGhVc2VyR2VzdHVyZSwgU3RhcnRlZFdpdGhvdXRVc2VyR2VzdHVyZSB9OwogCkBAIC01
NzUsNiArNTcyLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUs
IGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBvdmVy
cmlkZTsKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgdXNpbmcg
RXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50
Jikgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwog
ICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1lbnQoKTsKQEAgLTYwMyw2ICs2MDUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2Rl
Q2hhbmdlKCk7CiAKICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2NoZWR1bGVFdmVudE9uKFQmIHRhcmdldCwg
UmVmPEV2ZW50PiYmKTsKIAogICAgIGJvb2wgc2hvd1Bvc3RlckZsYWcoKSBjb25zdCB7IHJldHVy
biBtX3Nob3dQb3N0ZXI7IH0KICAgICB2b2lkIHNldFNob3dQb3N0ZXJGbGFnKGJvb2wpOwpAQCAt
NjkxLDEzICs2OTQsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIHVwZGF0ZVNob3VsZENv
bnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7Ci0KLSAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKLSAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTk1Miw3ICs5NTIsNyBAQCBwcml2YXRlOgogICAgIFRhc2tDYW5jZWxsYXRp
b25Hcm91cCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7
CiAgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2Vs
bGF0aW9uR3JvdXA7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsK
LSAgICBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7Cisg
ICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fYXN5bmNFdmVudHNDYW5jZWxsYXRpb25Hcm91cDsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX3Zv
bHVtZVJldmVydFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svRGF0YUN1ZS5jcHAKaW5kZXggMDQ3OTIyZDY5MDRkMGY5N2FlNTkyYjNmN2UwYTI3ODQx
ZGJhMTI1Ny4uMWI2MzA1OWYyNTVkODU5NTQzMjlmMWI5NjJkYmU2MDk0NGNjMzBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCkBAIC03MSwyMiArNzEsMzAgQEAgRGF0YUN1
ZTo6RGF0YUN1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW4KIAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5k
LCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgc3RhcnQsIGVuZCwgZGF0YSwgbGVuZ3RoKSk7Cisg
ICAgYXV0byBkYXRhQ3VlID0gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBzdGFydCwg
ZW5kLCBkYXRhLCBsZW5ndGgpKTsKKyAgICBkYXRhQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gZGF0YUN1ZTsKIH0KIAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiBwbGF0Zm9ybVZhbHVlLCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1
bWVudCwgc3RhcnQsIGVuZCwgV1RGTW92ZShwbGF0Zm9ybVZhbHVlKSwgdHlwZSkpOworICAgIGF1
dG8gZGF0YUN1ZSA9IGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgc3RhcnQsIGVuZCwg
V1RGTW92ZShwbGF0Zm9ybVZhbHVlKSwgdHlwZSkpOworICAgIGRhdGFDdWUtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiBkYXRhQ3VlOwogfQogCiBSZWY8RGF0YUN1ZT4gRGF0YUN1ZTo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBBcnJh
eUJ1ZmZlciYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3Vt
ZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoZW5kKSwgZGF0YSwgZW1wdHlTdHJpbmcoKSkpOworICAgIGF1dG8gZGF0YUN1
ZSA9IGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShkb2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRo
RG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIGRhdGEsIGVt
cHR5U3RyaW5nKCkpKTsKKyAgICBkYXRhQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1
cm4gZGF0YUN1ZTsKIH0KIAogUmVmPERhdGFDdWU+IERhdGFDdWU6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShk
b2N1bWVudCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGVuZCksIHZhbHVlLCB0eXBlKSk7CisgICAgYXV0byBkYXRhQ3VlID0g
YWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgdmFsdWUsIHR5cGUp
KTsKKyAgICBkYXRhQ3VlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZGF0YUN1ZTsK
IH0KIAogRGF0YUN1ZTo6fkRhdGFDdWUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAppbmRleCA5Y2NiOTkyOWM0ZjYz
ZjNhNjEwNTdiNjk2NjRlMTU1MzM3ODFmMWM2Li44MzgwMjMyYjc5MjhhMjdiOTMyMzY4MDZjMDI4
NTI5ZjA3YmJlYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgaW5saW5lIEluYmFuZERhdGFUZXh0
VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tD
bGkKIAogUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5iYW5kRGF0YVRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAg
ICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhkb2N1
bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIEluYmFuZERhdGFUZXh0VHJhY2s6
On5JbmJhbmREYXRhVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggNjMxMjExNzZm
NzhlNDI2MTNlMmU1NWFiNTJlNTZhZTBlZmJiMDdkNi4uNTU2ZTQ0OWU4NzYyYWYxNTA1YzkxMDkw
MzY3ZWUxNThkZDNhMDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC03MCw3ICs3MCw5IEBAIGlubGluZSBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1
bWVudCwgVGV4dFRyCiAKIFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNs
aWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwg
dHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAg
dGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwogfQog
CiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcApp
bmRleCBhNjBlOTllYWJmYjg5Yzg5MmE1MWQyZTg1ODVkZTlkYmM2NjBhMTRkLi45Y2ZhMTRkZjJh
ZTk1ODY2YzUzYjhiMTAzYjZkODU5ZDRiZmQ1ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC01MCw3ICs1MCw5IEBAIFJlZjxJbmJhbmRU
ZXh0VHJhY2s+IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4
dFRyYWNrQ2xpZW50CiAgICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0
ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmRE
YXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAg
ICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9
CiAKIEluYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
VGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRU
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmNwcAppbmRleCBhMjIyOGJjMTdlYTM1NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTky
Li4yYWE5ZjNiMDNhYjNhMTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC00
Niw3ICs0Niw5IEBAIGlubGluZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRl
eHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFjCiAKIFJlZjxJbmJhbmRUZXh0VHJh
Y2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4
dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9w
dFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1By
aXZhdGUpKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
ZXh0VHJhY2s7CiB9CiAKIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRU
cmFjaygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAKaW5kZXggNzgwYmUzMmNlMzQ1YTc0Mjk5MWMzNDEyYzQzOWZjY2U0OGY3
MmM1Mi4uNzQ2MzIwZDdjMTRkMmM0NzViYTA0MzZiN2NiYjU3YTA0MTc2NWYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQ4LDcg
KzQ4LDkgQEAgTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQKIAogUmVmPExvYWRhYmxlVGV4dFRyYWNr
PiBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ss
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7Cisg
ICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdGV4dFRyYWNrOwog
fQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggZDliNDdkMjBiODli
YjY3ODY4YjBkZmNlNzEyMjQyOTY3MTgwYTAwNS4uZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4
MWE1NzVkZDBmMThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9t
YXRpY0l0ZW0oKQogCiBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChjb250
ZXh0KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsK
QEAgLTExOCw3ICsxMTgsOSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogCiBSZWY8VGV4dFRy
YWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVu
dCogY2xpZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCBraW5k
LCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRyYWNrID0g
YWRvcHRSZWYoKm5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVs
LCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKKyAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBA
IC01OTAsNiArNTkyLDExIEBAIGJvb2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAogICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCitj
b25zdCBjaGFyKiBUZXh0VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiVGV4dFRyYWNrIjsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lk
IFRleHRUcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA5YTUzMzQ4NDIyZWJkYTkxOGJm
YTNmYjVjMTBlNjM5NTFmYTgxNDQ3Li43NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTlj
MTUzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGlj
IFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tC
YXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGll
bnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKQEAgLTE1OSw2
ICsxNTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNr
IjsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXgg
MDliNmQxYzE5N2IyZTk5ZGE3NmNiOWQzYzRlZjBkMmU1NWJjMzA0Mi4uZWRhNTliYzQzZTE1Mjgy
ZWFiY2QwYmNhODNiODMxZmQyOGU5OTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmlkbApAQCAtMjcsNiArMjcsNyBAQCBlbnVtIFRleHRUcmFja01vZGUgeyAiZGlzYWJs
ZWQiLCAiaGlkZGVuIiwgInNob3dpbmciIH07CiBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0
bGVzIiwgImNhcHRpb25zIiwgImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZGF0YSIs
ICJmb3JjZWQiIH07CiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
VklERU8sCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRWxlbWVudFJvb3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKaW5kZXggZDRiNmJlYjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIxODc1ZWNmZGVhNy4u
YTlmYmUxNmI5NWIyMjNhMTY0ZjA0OTE1NjA3YTkwNzJhNDdiMDM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgpAQCAtMjIyLDIxICsyMjMsMjUgQEAgRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRl
eHRUcmFja0N1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHMKICAgICBpZiAo
IW5vZGVUeXBlcy5jb250YWlucyhSZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNz
aW5nIHJlcXVpcmVkIGF0dHJpYnV0ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRv
U3RyaW5nKCkpIH07CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9j
dW1lbnQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAgIGF1dG8gdGV4dFRy
YWNrQ3VlID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoZG9jdW1lbnQsIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQp
LCBXVEZNb3ZlKGZyYWdtZW50KSkpOworICAgIHRleHRUcmFja0N1ZS0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIHRleHRUcmFja0N1ZTsKIH0KIAogVGV4dFRyYWNrQ3VlOjpUZXh0VHJh
Y2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgY3VlRnJhZ21lbnQpCi0gICAg
OiBtX3N0YXJ0VGltZShzdGFydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAg
ICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fZG9j
dW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2N1ZU5vZGUoV1RGTW92ZShjdWVGcmFnbWVudCkpCiB7
CiB9CiAKLVRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKERvY3VtZW50JiBjb250ZXh0LCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKLSAgICA6IG1fc3RhcnRU
aW1lKHN0YXJ0KQorVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwg
bV9lbmRUaW1lKGVuZCkKLSAgICAsIG1fZG9jdW1lbnQoY29udGV4dCkKKyAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTMzNSw3ICszNDAsNyBAQCB2b2lkIFRleHRUcmFja0N1
ZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoZXZlbnQpOwogfQogCi1ib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQorYm9vbCBU
ZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0FjdGl2ZSAm
JiB0cmFjaygpICYmIHRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVk
OwogfQpAQCAtNTMxLDYgKzUzNiwxMSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3Bs
YXlUcmVlKCkKICAgICBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKIH0KIAorY29u
c3QgY2hhciogVGV4dFRyYWNrQ3VlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIlRleHRUcmFja0N1ZSI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCBiNTAz
ODFjNWFkZmNmNmY1MGZlZDM1ZDRhODlkMWU3ODE3NTNkMzUyLi4xNzI5ZTc5ZGY0YmUxOTVhNmUy
OGNkMjc2NjYxMzQzMDI0YTQ2ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFRleHRUcmFj
a0N1ZT4gbV9jdWU7CiB9OwogCi1jbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CitjbGFz
cyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2tDdWUpOwogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpOwpAQCAtOTIsNyArOTIsNyBA
QCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGVuZE1lZGlhVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kVGltZTsgfQogICAgIHZvaWQgc2V0RW5kVGltZShjb25zdCBNZWRpYVRpbWUmKTsKIAotICAg
IGJvb2wgaXNBY3RpdmUoKTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldElzQWN0aXZlKGJvb2wpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3JkZXJlZEJl
Zm9yZShjb25zdCBUZXh0VHJhY2tDdWUqKSBjb25zdDsKQEAgLTEzNywxNSArMTM3LDE3IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlKERvY3VtZW50JiwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmKTsKIAorICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVm
KCk7IH0KLQogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQg
ZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOwotCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tDdWVF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBBY3RpdmVET01P
YmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
CisKICAgICB2b2lkIHJlYnVpbGREaXNwbGF5VHJlZSgpOwogCiAgICAgU3RyaW5nIG1faWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcApp
bmRleCBmZmJlY2E5YTAzM2M1ZWQyYThmYzFiZDEwOTk5ODNhODMxNTI1ZmE0Li5mNDJkMDQ4MmNh
N2NiOGNkYWQ5NjkxZjFlNjNkOGViY2Q0N2QzYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTE2MSw3ICsxNjEsOSBAQCB2
b2lkIFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29u
c3QgSW50U2l6ZSYgdmlkZW9TaXplKQogCiBSZWY8VGV4dFRyYWNrQ3VlR2VuZXJpYz4gVGV4dFRy
YWNrQ3VlR2VuZXJpYzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJp
Yyhkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAg
ICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlR2VuZXJpYyhkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCksIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKKyAgICBjdWUtPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFRleHRUcmFja0N1ZUdlbmVyaWM6
OlRleHRUcmFja0N1ZUdlbmVyaWMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IGFlZDU4OGMwNmNjN2VjMWMzMGFlZjkx
NDVlNjZhODljZWU4NWVmNWYuLmE1YWI5NzRjMjQ2ZDhjMGI3N2MxMjViN2VhMTczYWY5ODFhMGMy
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI2NCwxMiArMjY0LDE2
IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjCiAKIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBTdHJpbmcmJiBj
b250ZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKGVuZCksIFdURk1vdmUoY29udGVudCkpKTsKKyAgICBhdXRvIGN1ZSA9IGFkb3B0UmVmKCpu
ZXcgVlRUQ3VlKGRvY3VtZW50LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgV1RGTW92ZShjb250ZW50KSkpOworICAg
IGN1ZS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGN1ZTsKIH0KIAogUmVmPFZUVEN1
ZT4gVlRUQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJWVFRDdWVEYXRh
JiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShkb2N1bWVudCwgZGF0
YSkpOworICAgIGF1dG8gY3VlID0gYWRvcHRSZWYoKm5ldyBWVFRDdWUoZG9jdW1lbnQsIGRhdGEp
KTsKKyAgICBjdWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBjdWU7CiB9CiAKIFZU
VEN1ZTo6VlRUQ3VlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIFN0cmluZyYmIGNvbnRlbnQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>