<?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>224380</bug_id>
          
          <creation_ts>2021-04-09 11:13:44 -0700</creation_ts>
          <short_desc>[Scroll snap] proximity scroll snapping is broken</short_desc>
          <delta_ts>2021-12-22 06:01:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc>https://codepen.io/argyleink/pen/qBRpdEr</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>224326</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748789</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-09 11:13:44 -0700</bug_when>
    <thetext>This demo doesn&apos;t work correctly in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748791</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-09 11:14:40 -0700</bug_when>
    <thetext>Hard to get away from the first snap point. The scrolling stops dead between two snap points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748792</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-09 11:15:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/76461059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756935</commentid>
    <comment_count>3</comment_count>
      <attachid>427764</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-05-05 07:25:50 -0700</bug_when>
    <thetext>Created attachment 427764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759759</commentid>
    <comment_count>4</comment_count>
      <attachid>428538</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-05-13 11:17:57 -0700</bug_when>
    <thetext>Created attachment 428538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759797</commentid>
    <comment_count>5</comment_count>
      <attachid>428551</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-05-13 13:04:55 -0700</bug_when>
    <thetext>Created attachment 428551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760060</commentid>
    <comment_count>6</comment_count>
      <attachid>428618</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-05-14 07:06:18 -0700</bug_when>
    <thetext>Created attachment 428618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772201</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-24 00:13:49 -0700</bug_when>
    <thetext>I&apos;ve reconsidered the previous patch. I think it&apos;s more likely that momentum scrolling on Mac should *always* escape the snap point. This matches behavior on iOS now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825644</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-20 10:15:20 -0800</bug_when>
    <thetext>Is this bug still valid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826275</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-12-22 06:01:00 -0800</bug_when>
    <thetext>I think this one can be closed. The linked demo seems to work fine for me now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427764</attachid>
            <date>2021-05-05 07:25:50 -0700</date>
            <delta_ts>2021-05-13 11:17:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224380-20210505162548.patch</filename>
            <type>text/plain</type>
            <size>34266</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ4YTU3ZDcyMjNhYzFl
NGZmMzM5OTg5ZGIzOTFkZmUyMThlYjRiMy4uMjk4ZGFmMjdkODlmNjEwMzgzMTU1M2U4YTA4Zjk1
OTgxN2M4MTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTA1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNu
YXBdIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NDYxMDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhhdmUgU2Nyb2xsU25hcE9mZnNldHNJbmZvIGNhcnJ5IHNuYXAgYXJlYSByZWN0
YW5nbGVzIGluc3RlYWQgb2Ygc2Nyb2xsIG9mZnNldAorICAgICAgICByYW5nZXMuIFRoaXMgYWxs
b3dzIHByb3hpbWl0eSBpbmZvcm1hdGlvbiB0byBiZSBoYW5kbGVkIGR1cmluZyBzbmFwIHBvaW50
IHNlbGVjdGlvbi4KKyAgICAgICAgVGhlIGdlb21ldHJ5IHdpbGwgYmUgdXNlZCBpbiBhIGZ1dHVy
ZSBwYXRjaCB0byBmb2xsb3cgc3BlYyBiZWhhdmlvciBmb3Igc25hcAorICAgICAgICBhcmVhcyB0
aGF0IG92ZXJmbG93IHRoZSBzbmFwcG9ydCBhbmQgd2hlbiBoYW5kbGluZyBtYXNvbnJ5IGxheW91
dHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNoYW5nZSByZWxpZXMgb24gdGhlIGJl
aGF2aW9yIG9mIHNjcm9sbCBzbmFwcGluZyB3aGVuCisgICAgICAgIHdoZWVsIGV2ZW50cyBjYXVz
ZSBtb21lbnR1bSBzY3JvbGxpbmcgd2l0aCBhIHZlbG9jaXR5LiBJdCdzIHVuY2xlYXIgaG93IHRv
CisgICAgICAgIHRlc3QgdGhvc2Uga2luZCBvZiBldmVudHMgd2l0aCB0aGUgRXZlbnRTZW5kZXIu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cnVuU25hcFBvaW50U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U25h
cFBvaW50U2VhcmNoOjpydW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U25hcFBvaW50U2VhcmNoOjpjcmVhdGVO
b25EaXJlY3Rpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpTbmFwUG9pbnRTZWFyY2g6OmNyZWF0
ZURpcmVjdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNuYXBQb2ludFNlYXJjaDo6Y3JlYXRl
TW9tZW50dW0pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Q29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRP
ZmZzZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
Lmg6CisKIDIwMjEtMDQtMDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbXB1dGUgcHJveGltaXR5IGluZm9ybWF0
aW9uIHdoaWxlIHNuYXBwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE3MWZmNjc4ZGJlOWM0NGI1MzYyZmI4ODdl
MTNkZjEyM2ZmYjk1NTUuLmFmNDQ5NGEwMjI1ZDljZGJhNTI1NjAxZDM3YjIwNDI4MjkzOWM5NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDUtMDUgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtTY3JvbGwgc25hcF0gcHJveGltaXR5
IHNjcm9sbCBzbmFwcGluZyBpcyBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDM4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY0NjEw
NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmFu
Z2VzLiBUaGlzIGFsbG93cyBwcm94aW1pdHkgaW5mb3JtYXRpb24gdG8gYmUgaGFuZGxlZCBkdXJp
bmcgc25hcCBwb2ludCBzZWxlY3Rpb24uCisgICAgICAgIFRoZSBnZW9tZXRyeSB3aWxsIGJlIHVz
ZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdG8gZm9sbG93IHNwZWMgYmVoYXZpb3IgZm9yIHNuYXAKKyAg
ICAgICAgYXJlYXMgdGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQgYW5kIHdoZW4gaGFuZGxpbmcg
bWFzb25yeSBsYXlvdXRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBjaGFuZ2UgcmVs
aWVzIG9uIHRoZSBiZWhhdmlvciBvZiBzY3JvbGwgc25hcHBpbmcgd2hlbgorICAgICAgICB3aGVl
bCBldmVudHMgY2F1c2UgbW9tZW50dW0gc2Nyb2xsaW5nIHdpdGggYSB2ZWxvY2l0eS4gSXQncyB1
bmNsZWFyIGhvdyB0bworICAgICAgICB0ZXN0IHRob3NlIGtpbmQgb2YgZXZlbnRzIHdpdGggdGhl
IEV2ZW50U2VuZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRo
VmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNl
dEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToK
KyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdX
aWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisKIDIw
MjEtMDQtMDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbXB1dGUgcHJveGltaXR5IGluZm9ybWF0aW9uIHdoaWxl
IHNuYXBwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCAzN2I2NjM3YjQ4NjBkOThjZTM4MDY4ZjUxYjMx
ZmVjZTY4YWM2ZDE1Li5hYzU4MzI5ZDJkNjE1NWUzMmFjZTk5NmU3OGIyZTQ4OTdhMGZkODRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5jcHAKQEAgLTEwNiwxMCArMTA2LDE1IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNp
Z25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24o
Y29uCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIElu
Zm9UeXBlLCB0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBz
dGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aEluZm9B
bmRBeGlzKGNvbnN0IEluZm9UeXBlJiBpbmZvLCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3Qg
U2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgTGF5b3V0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPExheW91dFR5cGU+IG9yaWdpbmFsT2Zmc2V0Rm9y
RGlyZWN0aW9uYWxTbmFwcGluZykKK3RlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hUeXBlLCB0eXBl
bmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgTGF5b3V0VHlwZT4KK3N0YXRpYyBzdGQ6OnBhaXI8TGF5
b3V0VHlwZSwgdW5zaWduZWQ+IHJ1blNuYXBQb2ludFNlYXJjaChTZWFyY2hUeXBlJiBzZWFyY2gs
IGNvbnN0IEluZm9UeXBlJiBpbmZvKQogewotICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0g
aW5mby5vZmZzZXRzRm9yQXhpcyhheGlzKTsKKyAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0cyA9
IGluZm8ub2Zmc2V0c0ZvckF4aXMoc2VhcmNoLmF4aXMpOworICAgIGNvbnN0IGF1dG8mIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0ID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0OworICAgIE9wdGlv
bmFsPExheW91dFR5cGU+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZzsKKyAg
ICBpZiAoc2VhcmNoLnR5cGUgIT0gU25hcFBvaW50U2VhcmNoVHlwZTo6Tm9uRGlyZWN0aW9uYWwp
CisgICAgICAgIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9IHNlYXJjaC5v
cmlnaW5hbE9mZnNldDsKKwogICAgIGlmIChzbmFwT2Zmc2V0cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgaW52YWxpZFNu
YXBPZmZzZXRJbmRleCk7CiAKQEAgLTEzMSw3ICsxMzYsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPExh
eW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcyhjb25z
dCBJbgogICAgIExheW91dFR5cGUgbG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dl
ckluZGV4XS5vZmZzZXQ7CiAgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBP
ZmZzZXRzW3VwcGVySW5kZXhdLm9mZnNldDsKIAotICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBh
eGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgp
IDogdmlld3BvcnRTaXplLmhlaWdodCgpOworICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBzZWFy
Y2guYXhpcyAgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gc2VhcmNoLnZpZXdwb3J0
U2l6ZS53aWR0aCgpIDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKICAgICBpZiAoIWlz
TmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVz
cywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGxvd2VyU25hcFBvc2l0aW9uLCB2aWV3cG9ydExl
bmd0aCkpIHsKICAgICAgICAgbG93ZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldDsKICAgICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CkBAIC0x
NDEsNyArMTQ2LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xv
c2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW4KICAgICAgICAgdXBwZXJTbmFw
UG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKICAgICAgICAgdXBwZXJJbmRleCA9
IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CiAgICAgfQotICAgIGlmICghc3RkOjphYnModmVsb2Np
dHkpKSB7CisgICAgaWYgKCFzdGQ6OmFicyhzZWFyY2gudmVsb2NpdHkpKSB7CiAgICAgICAgIGJv
b2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gKHVwcGVySW5kZXggPT0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleCkKICAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dlclNuYXBQb3NpdGlv
biA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6bWFrZV9wYWlyKGxv
d2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBv
c2l0aW9uLCB1cHBlckluZGV4KTsKQEAgLTE1MSwxMyArMTU2LDEzIEBAIHN0YXRpYyBzdGQ6OnBh
aXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aEluZm9BbmRBeGlz
KGNvbnN0IEluCiAgICAgLy8gYXMgbG9uZyBhcyBhIHNjcm9sbCBzbmFwIG9mZnNldCBpcyBjbG9z
ZSBlbm91Z2ggZm9yIHByb3hpbWl0eSAob3Igd2UgYXJlbid0IHVzaW5nIHByb3hpbWl0eSkuIElm
IHdlIGFyZSBkb2luZyBkaXJlY3Rpb25hbAogICAgIC8vIHNuYXBwaW5nLCB3ZSBzaG91bGQgbmV2
ZXIgc25hcCB0byBhIHBvaW50IHRoYXQgd2FzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBvcmln
aW5hbCBwb3NpdGlvbiBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mIHRoaXMgc2Nyb2xsLgog
ICAgIC8vIFRoaXMgYWxsb3dzIGRpcmVjdGlvbmFsIHNjcm9sbGluZyB0byBlc2NhcGUgc25hcCBw
b2ludHMuCi0gICAgaWYgKHZlbG9jaXR5IDwgMCkgIHsKLSAgICAgICAgaWYgKHVwcGVySW5kZXgg
IT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9u
YWxTbmFwcGluZyB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nID4gdXBw
ZXJTbmFwUG9zaXRpb24pKQorICAgIGlmIChzZWFyY2gudmVsb2NpdHkgPCAwKSAgeworICAgICAg
ICBpZiAodXBwZXJJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmIChzZWFyY2gudHlw
ZSAhPSBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbCB8fCBzZWFyY2gub3JpZ2luYWxP
ZmZzZXQgPiB1cHBlclNuYXBQb3NpdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpOwogICAgIH0KIAotICAg
IGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFvcmlnaW5hbE9m
ZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9u
YWxTbmFwcGluZyA8IGxvd2VyU25hcFBvc2l0aW9uKSkKKyAgICBpZiAobG93ZXJJbmRleCAhPSBp
bnZhbGlkU25hcE9mZnNldEluZGV4ICYmIChzZWFyY2gudHlwZSAhPSBTbmFwUG9pbnRTZWFyY2hU
eXBlOjpEaXJlY3Rpb25hbCB8fCBzZWFyY2gub3JpZ2luYWxPZmZzZXQgPCBsb3dlclNuYXBQb3Np
dGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwg
bG93ZXJJbmRleCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9u
LCB1cHBlckluZGV4KTsKIH0KQEAgLTM1NSwxNiArMzYwLDE2IEBAIEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0
IGRldmljCiAKIH0KIAotdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLXN0ZDo6cGFpcjxMYXlvdXRV
bml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXpl
LCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcp
IGNvbnN0Cit0ZW1wbGF0ZSA8Pgorc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlv
dXRTbmFwUG9pbnRTZWFyY2g6OnJ1bihjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8m
IGluZm8pCiB7Ci0gICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aEluZm9BbmRBeGlzKCp0
aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0
eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworICAgIHJldHVybiBy
dW5TbmFwUG9pbnRTZWFyY2g8TGF5b3V0U25hcFBvaW50U2VhcmNoLCBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8sIExheW91dFVuaXQ+KCp0aGlzLCBpbmZvKTsKIH0KIAotdGVtcGxhdGUgPD4g
dGVtcGxhdGU8Pgotc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlv
bmFsU25hcHBpbmcpIGNvbnN0Cit0ZW1wbGF0ZSA8Pgorc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25l
ZD4gRmxvYXRTbmFwUG9pbnRTZWFyY2g6OnJ1bihjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRz
SW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4
aXMoKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZl
bG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgcmV0
dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxGbG9hdFNuYXBQb2ludFNlYXJjaCwgRmxvYXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8sIGZsb2F0PigqdGhpcywgaW5mbyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5k
ZXggZDE2MGM5NWJjNDNmZjk4MWMwYTQ3YmYzNjAzYzQwMDZkY2VlMzFjYy4uMGRhMzgzNmRhOWM0
MWQ2M2IyNGY3NjUxMDg2NjliY2EwODVmYzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTcyLDI0ICs3Miw2
MyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdXRwdXRUeXBlPiBPdXRwdXRUeXBlIGNvbnZlcnRVbml0cyhmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IDAuMCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5
cGU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4gY2xv
c2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRT
aXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9w
dGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9
IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCisKIHVzaW5nIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsK
IHVzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0LCBGbG9hdFJlY3Q+OwogCiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5p
dHMoZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwogdGVtcGxhdGUgPD4gdGVt
cGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9y
RGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAKK2VudW0gU25hcFBvaW50U2VhcmNoVHlwZSB7CisgICAgTm9uRGly
ZWN0aW9uYWwsCisgICAgRGlyZWN0aW9uYWwsCiAKLXRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1G
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNv
bnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Ci10ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
b3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworICAgIC8vIE1v
bWVudHVtIHNjcm9sbGluZyBpcyBsaWtlIGRpcmVjdGlvbmFsIHNjcm9sbGluZywgYnV0IGRvZXMg
bm90IGRvCisgICAgLy8gYW55dGhpbmcgc3BlY2lhbCB0byBhbGxvdyBlc2NhcGluZyBzbmFwIHBv
aW50cy4gSXQncyBhc3N1bWVkIHRoYXQKKyAgICAvLyB0cmlnZ2VyaW5nIGEgbGFyZ2VyIGFtb3Vu
dCBvZiBtb21lbnR1bSBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlc2NhcGUKKyAgICAvLyB0aGUg
c25hcCBwb2ludC4KKyAgICBNb21lbnR1bSwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRU
eXBlLCB0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgSW5mb1R5cGU+CitzdHJ1Y3QgU25hcFBv
aW50U2VhcmNoIHsKKyAgICBTY3JvbGxFdmVudEF4aXMgYXhpczsKKyAgICBVbml0VHlwZSBvcmln
aW5hbE9mZnNldDsKKyAgICBVbml0VHlwZSBkZXN0aW5hdGlvbk9mZnNldDsKKyAgICBTaXplVHlw
ZSB2aWV3cG9ydFNpemU7CisgICAgZmxvYXQgdmVsb2NpdHk7CisgICAgU25hcFBvaW50U2VhcmNo
VHlwZSB0eXBlOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNp
Z25lZD4gcnVuKGNvbnN0IEluZm9UeXBlJik7CisKKyAgICBzdGF0aWMgU25hcFBvaW50U2VhcmNo
PFVuaXRUeXBlLCBTaXplVHlwZSwgSW5mb1R5cGU+IGNyZWF0ZU5vbkRpcmVjdGlvbmFsKFNjcm9s
bEV2ZW50QXhpcyBheGlzLCBVbml0VHlwZSBkZXN0aW5hdGlvbk9mZnNldCwgU2l6ZVR5cGUgdmll
d3BvcnRTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgYXhpcywgMCwgZGVzdGluYXRpb25P
ZmZzZXQsIHZpZXdwb3J0U2l6ZSwgMC4sIFNuYXBQb2ludFNlYXJjaFR5cGU6Ok5vbkRpcmVjdGlv
bmFsIH07CisgICAgfQorCisgICAgc3RhdGljIFNuYXBQb2ludFNlYXJjaDxVbml0VHlwZSwgU2l6
ZVR5cGUsIEluZm9UeXBlPiBjcmVhdGVEaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4aXMgYXhpcywg
VW5pdFR5cGUgZGVzdGluYXRpb25PZmZzZXQsIFVuaXRUeXBlIG9yaWdpbmFsT2Zmc2V0LCBTaXpl
VHlwZSB2aWV3cG9ydFNpemUpCisgICAgeworICAgICAgICByZXR1cm4geyBheGlzLCBvcmlnaW5h
bE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQsIHZpZXdwb3J0U2l6ZSwgZmxvYXQgeyBkZXN0aW5h
dGlvbk9mZnNldCAtIG9yaWdpbmFsT2Zmc2V0IH0sIFNuYXBQb2ludFNlYXJjaFR5cGU6OkRpcmVj
dGlvbmFsIH07CisgICAgfQorCisgICAgc3RhdGljIFNuYXBQb2ludFNlYXJjaDxVbml0VHlwZSwg
U2l6ZVR5cGUsIEluZm9UeXBlPiBjcmVhdGVNb21lbnR1bShTY3JvbGxFdmVudEF4aXMgYXhpcywg
VW5pdFR5cGUgZGVzdGluYXRpb25PZmZzZXQsIFVuaXRUeXBlIG9yaWdpbmFsT2Zmc2V0LCBTaXpl
VHlwZSB2aWV3cG9ydFNpemUsIE9wdGlvbmFsPGZsb2F0PiBvcHRpb25hbE1vbWVudHVtID0gV1RG
OjpudWxsb3B0KQorICAgIHsKKyAgICAgICAgZmxvYXQgbW9tZW50dW0gPSBvcHRpb25hbE1vbWVu
dHVtLnZhbHVlT3IoZmxvYXQgeyBkZXN0aW5hdGlvbk9mZnNldCAtIG9yaWdpbmFsT2Zmc2V0IH0p
OworICAgICAgICByZXR1cm4geyBheGlzLCBvcmlnaW5hbE9mZnNldCwgZGVzdGluYXRpb25PZmZz
ZXQsIHZpZXdwb3J0U2l6ZSwgbW9tZW50dW0sIFNuYXBQb2ludFNlYXJjaFR5cGU6Ok1vbWVudHVt
IH07CisgICAgfQorfTsKKwordXNpbmcgTGF5b3V0U25hcFBvaW50U2VhcmNoID0gU25hcFBvaW50
U2VhcmNoPExheW91dFVuaXQsIExheW91dFNpemUsIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5m
bz47Cit1c2luZyBGbG9hdFNuYXBQb2ludFNlYXJjaCA9IFNuYXBQb2ludFNlYXJjaDxmbG9hdCwg
RmxvYXRTaXplLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz47CiAKK3RlbXBsYXRlIDw+CitX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IExheW91dFNuYXBQ
b2ludFNlYXJjaDo6cnVuKGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYpOwordGVt
cGxhdGUgPD4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0
U25hcFBvaW50U2VhcmNoOjpydW4oY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsK
IAogY29uc3QgdW5zaWduZWQgaW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWEuY3BwCmluZGV4IDkyNThlN2VhYTRlZGQ0N2M1ZTQwY2UzNmEwMmVlZDg2MWEzYTQ4MTQu
LjM3ZDE5MTFhZjBiMDgyZjhlMWUxNGQyZThmZWY3YzQ2Y2ZhZTU3NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3Bw
CkBAIC0xNzMsOCArMTczLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAgICAgICAgIEZs
b2F0UG9pbnQgbmV3RmxvYXRPZmZzZXQgPSBzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9sbE9m
ZnNldCgpICsgRmxvYXRTaXplKGRlbHRhWCwgZGVsdGFZKTsKICAgICAgICAgYXV0byBuZXdPZmZz
ZXQgPSBMYXlvdXRQb2ludChuZXdGbG9hdE9mZnNldC54KCkgLyBzY2FsZSwgbmV3RmxvYXRPZmZz
ZXQueSgpIC8gc2NhbGUpOwogCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGluZ05vZGUo
KS5zbmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwsIHNjcm9sbGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQueCgpLCBkZWx0YVgsIG9y
aWdpbmFsT2Zmc2V0LngoKSkuZmlyc3Q7Ci0gICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNjcm9sbGlu
Z05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0LnkoKSwgZGVsdGFZ
LCBvcmlnaW5hbE9mZnNldC55KCkpLmZpcnN0OworICAgICAgICBhdXRvIHNlYXJjaCA9IEZsb2F0
U25hcFBvaW50U2VhcmNoOjpjcmVhdGVEaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4aXM6Okhvcml6
b250YWwsIG5ld09mZnNldC54KCksIG9yaWdpbmFsT2Zmc2V0LngoKSwgc2Nyb2xsYWJsZUFyZWFT
aXplKCkpOworICAgICAgICBhdXRvIG9mZnNldFggPSBzZWFyY2gucnVuKHNjcm9sbGluZ05vZGUo
KS5zbmFwT2Zmc2V0c0luZm8oKSkuZmlyc3Q7CisKKyAgICAgICAgc2VhcmNoID0gRmxvYXRTbmFw
UG9pbnRTZWFyY2g6OmNyZWF0ZURpcmVjdGlvbmFsKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IG5ld09mZnNldC55KCksIG9yaWdpbmFsT2Zmc2V0LnkoKSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkp
OworICAgICAgICBhdXRvIG9mZnNldFkgPSBzZWFyY2gucnVuKHNjcm9sbGluZ05vZGUoKS5zbmFw
T2Zmc2V0c0luZm8oKSkuZmlyc3Q7CiAKICAgICAgICAgZGVsdGFYID0gKG9mZnNldFggLSBvcmln
aW5hbE9mZnNldC54KCkpICogc2NhbGU7CiAgICAgICAgIGRlbHRhWSA9IChvZmZzZXRZIC0gb3Jp
Z2luYWxPZmZzZXQueSgpKSAqIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCmluZGV4IDc2ZGU3MjlhMDllNzZiY2YxMDUwNjNlZTM3MzI1MjliN2E3YWEz
N2QuLmE4NmY1MWMyMDhjNjI1YTdlN2UzZjFmNzg3Mzc3MjNlOGRlZjliOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBTY3JvbGxHcmFudWxhcml0eQogICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBvZmZzZXRG
cm9tUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKCkpOwogICAgICAgICBhdXRvIG5ld09mZnNldCA9
IGN1cnJlbnRPZmZzZXQgKyBkZWx0YTsKICAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6
b250YWxTY3JvbGxiYXIpCi0gICAgICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRy
b2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBuZXdPZmZzZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOworICAgICAg
ICAgICAgbmV3T2Zmc2V0LnNldFgobV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgbmV3T2Zmc2V0LngoKSwgY3VycmVu
dE9mZnNldC54KCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFko
bV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsIG5ld09mZnNldC55KCksIG11bHRpcGxpZXIsIGN1cnJlbnRPZmZzZXQueSgp
KSk7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0WShtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0
U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgbmV3T2Zmc2V0Lnko
KSwgY3VycmVudE9mZnNldC55KCkpKTsKICAgICAgICAgYXV0byBuZXdEZWx0YSA9IG5ld09mZnNl
dCAtIGN1cnJlbnRPZmZzZXQ7CiAKICAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250
YWxTY3JvbGxiYXIpCkBAIC0zOTgsMTUgKzM5OCwxMyBAQCBmbG9hdCBTY3JvbGxBbmltYXRvcjo6
YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChTY3JvbGxFdmVudEF4aXMgYXhp
cwogICAgICAgICByZXR1cm4gbmV3T2Zmc2V0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdp
bmFsT2Zmc2V0OwotICAgIGZsb2F0IHZlbG9jaXR5ID0gMC47CiAgICAgaWYgKG1ldGhvZCA9PSBT
Y3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2Q6OkRpcmVjdGlvbmFsKSB7CiAgICAgICAgIEZs
b2F0U2l6ZSBzY3JvbGxPcmlnaW4gPSB0b0Zsb2F0U2l6ZShtX3Njcm9sbGFibGVBcmVhLnNjcm9s
bE9yaWdpbigpKTsKICAgICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih0aGlzLT5jdXJyZW50UG9zaXRpb24oKSwgc2Nyb2xs
T3JpZ2luKTsKICAgICAgICAgb3JpZ2luYWxPZmZzZXQgPSBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IGN1cnJlbnRPZmZzZXQueCgpIDogY3VycmVudE9mZnNldC55KCk7Ci0g
ICAgICAgIHZlbG9jaXR5ID0gbmV3T2Zmc2V0IC0gKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsID8gY3VycmVudE9mZnNldC54KCkgOiBjdXJyZW50T2Zmc2V0LnkoKSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlv
bihheGlzLCBuZXdPZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldCk7CisgICAgcmV0dXJu
IG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihheGlzLCBuZXdPZmZz
ZXQsIG9yaWdpbmFsT2Zmc2V0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1ldGhvZCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmNwcAppbmRleCBmMGFkZTczNTQ3OTNhMDU5M2VkYjg1M2FiNGI0MmQ3OWQ2ZGIx
MWIwLi5kMGU0M2Y5MzE0NmYzYjJlODg5NmY2ODMxMzk5MGQ5Y2U3MzhhM2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMTE1LDkgKzExNSwx
MCBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgICAgICByZXR1cm47CiAKICAgICBMYXlv
dXRVbml0IGNsYW1wZWRPZmZzZXQgPSBzdGQ6Om1pbihzdGQ6Om1heChMYXlvdXRVbml0KG9mZnNl
dCAvIHNjYWxlRmFjdG9yKSwgc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpLCBzbmFwT2Zmc2V0
cy5sYXN0KCkub2Zmc2V0KTsKLQogICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50
LnZpZXdwb3J0U2l6ZSgpLndpZHRoKCksIG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgp
KTsKLSAgICB1bnNpZ25lZCBhY3RpdmVJbmRleCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygp
LmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwgY2xhbXBlZE9mZnNldCwgMCku
c2Vjb25kOworICAgIGF1dG8gc2VhcmNoID0gTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVO
b25EaXJlY3Rpb25hbChheGlzLCBjbGFtcGVkT2Zmc2V0LCB2aWV3cG9ydFNpemUpOworCisgICAg
dW5zaWduZWQgYWN0aXZlSW5kZXggPSBzZWFyY2gucnVuKHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5m
bygpKS5zZWNvbmQ7CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZv
aWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzCiAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhp
cyhheGlzLCBhY3RpdmVJbmRleCk7CiB9CiAKLWZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVz
dFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0aW5hdGlv
bk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCkK
K2Zsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgT3B0aW9uYWw8ZmxvYXQ+IG9y
aWdpbmFsT2Zmc2V0KQogewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKICAgICAgICAgcmV0
dXJuIGRlc3RpbmF0aW9uT2Zmc2V0OwpAQCAtMTM1LDEyICsxMzYsMTYgQEAgZmxvYXQgU2Nyb2xs
Q29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzIGF4aXMs
IGZsb2F0IGRlc3QKICAgICBpZiAoIXNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGRlc3RpbmF0aW9uT2Zmc2V0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxP
ZmZzZXRJbkxheW91dFVuaXRzOwotICAgIGlmIChvcmlnaW5hbE9mZnNldC5oYXNWYWx1ZSgpKQot
ICAgICAgICBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KCpvcmlnaW5h
bE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBhdXRvIGRlc3RpbmF0
aW9uT2Zmc2V0SW5MYXlvdXRVbml0cyA9IExheW91dFVuaXQoZGVzdGluYXRpb25PZmZzZXQgLyBt
X2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSk7CisKICAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6
ZShtX2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUo
KS5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBzbmFwU3RhdGUuc25hcE9mZnNl
dEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIExheW91dFVuaXQo
ZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5
LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpLmZpcnN0OwotICAgIHJldHVybiBvZmZzZXQg
KiBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBhdXRvIHNlYXJjaCA9ICBMYXlvdXRT
bmFwUG9pbnRTZWFyY2g6OmNyZWF0ZU5vbkRpcmVjdGlvbmFsKGF4aXMsIGRlc3RpbmF0aW9uT2Zm
c2V0SW5MYXlvdXRVbml0cywgdmlld3BvcnRTaXplKTsKKyAgICBpZiAob3JpZ2luYWxPZmZzZXQp
IHsKKyAgICAgICAgYXV0byBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0
KCpvcmlnaW5hbE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAg
c2VhcmNoID0gTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVEaXJlY3Rpb25hbChheGlzLCBk
ZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMsIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0
cywgdmlld3BvcnRTaXplKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VhcmNoLnJ1bihzbmFwU3Rh
dGUuc25hcE9mZnNldEluZm8oKSkuZmlyc3QgKiBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsK
IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
ZGQ1M2FkYTkwYTJmNWYyOTA4ODAxMDIzYzNlNWEzYzQzMWVmNjE2Mi4uYzVjZmNiMGM3ZjFhODg5
Yzk4ODkzMzJmOWEzMWZhYTEzMzk2YjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7CiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKICAg
ICB2b2lkIHVwZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7Ci0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlz
LCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0
PiBvcmlnaW5hbE9mZnNldCk7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Ny
b2xsRXZlbnRBeGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgT3B0aW9uYWw8ZmxvYXQ+IG9y
aWdpbmFsT2Zmc2V0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCmluZGV4IDQx
ODUyMTM0YWU5N2RmNzgwNThlNmE2OGJiZTI3NTI4NWE4OGE4YzIuLmE1OTIzNGFjZGFhNmIzMTAx
ZjlhOGRlMGQwNjZmNzJlMDgwNjVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKQEAgLTUxLDggKzUxLDggQEAgdm9pZCBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFw
U3RhdGUgc3RhdGUsIGNvbnMKIAogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5p
dGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogICAgIGF1dG8gcHJl
ZGljdGVkU2Nyb2xsVGFyZ2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnByZWRpY3RlZERlc3Rp
bmF0aW9uT2Zmc2V0KCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZv
clN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBj
b250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQu
eCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVs
dGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZ
ID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwg
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQo
KSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFn
ZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CisgICAg
ZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS53aWR0aCgpIC0g
dmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxU
YXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAgIGZsb2F0
IHRhcmdldE9mZnNldFkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3Bv
cnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0
LmhlaWdodCgpLCBwYWdlU2NhbGUsIG1fYWN0aXZlU25hcEluZGV4WSk7CiAgICAgbV9tb21lbnR1
bUNhbGN1bGF0b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0
YXJnZXRPZmZzZXRZIH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDcgKzkxLDcgQEAgRmxvYXRQb2lu
dCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJv
b2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNjcm9sbE9m
ZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9hdCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdAorZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSwgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGlj
dGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgp
IGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHMgPSBtX3NuYXBPZmZzZXRzSW5m
by5vZmZzZXRzRm9yQXhpcyhheGlzKTsKICAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKSB7
CkBAIC05OSw3ICs5OSw5IEBAIGZsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywKICAgICAgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KHByZWRpY3RlZE9mZnNldCwgMCwgbWF4U2Nyb2xsT2Zmc2V0KTsKICAg
ICB9CiAKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXQgPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0
U25hcE9mZnNldChheGlzLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXplIH0sIExheW91dFVuaXQo
cHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhLCBMYXlvdXRVbml0KHN0
YXJ0T2Zmc2V0IC8gcGFnZVNjYWxlKSkuZmlyc3Q7CisgICAgYXV0byBzZWFyY2ggPSBMYXlvdXRT
bmFwUG9pbnRTZWFyY2g6OmNyZWF0ZU1vbWVudHVtKGF4aXMsIExheW91dFVuaXQocHJlZGljdGVk
T2Zmc2V0IC8gcGFnZVNjYWxlKSwgTGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSks
IExheW91dFNpemUgeyB2aWV3cG9ydFNpemUgfSk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0g
c2VhcmNoLnJ1bihtX3NuYXBPZmZzZXRzSW5mbykuZmlyc3Q7CisKICAgICBmbG9hdCBtaW5pbXVt
VGFyZ2V0T2Zmc2V0ID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zm
c2V0KTsKICAgICBmbG9hdCBtYXhpbXVtVGFyZ2V0T2Zmc2V0ID0gc3RkOjptaW48ZmxvYXQ+KG1h
eFNjcm9sbE9mZnNldCwgc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCk7CiAgICAgdGFyZ2V0T2Zm
c2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBtaW5pbXVtVGFyZ2V0T2Zmc2V0LCBt
YXhpbXVtVGFyZ2V0T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oCmluZGV4IDZiNmQyMjc1Y2ZhMzQ1YjlhMmI2YTY5ZWE4MTg5
ZDY2NWQ2MTRjZGMuLmUwZGE4MzM3YTMzZGY2OTA1ZjgyOTQ4ZjM5OWU0NjliZDdhMjEwMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9EZXN0aW5h
dGlvblJlYWNoZWRTdGF0ZSgpOwogCiBwcml2YXRlOgotICAgIGZsb2F0IHRhcmdldE9mZnNldEZv
clN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRp
Y3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVk
JiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0
YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3Rl
ZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRl
KTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwg
ZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CmluZGV4IGZhODg0ZmI5YTdlNTA4ODUwYTk0ZGIwMmIxOGUyZmFiMDYzZjUwZTEuLjAxODI3NGQ4
MTcwMGM2NjRjNDBlZWUyNTE4Mjk0ODE1ZjAzMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNTk0LDcgKzE1OTQsNyBAQCAt
ICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogCiAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9
IFVJRWRnZUluc2V0c0luc2V0UmVjdChzZWxmLmJvdW5kcywgb2JzY3VyZWRJbnNldCk7CiAKLSAg
ICAgICAgY29vcmRpbmF0b3ItPmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyht
YXhTY3JvbGxPZmZzZXRzLCB2ZWxvY2l0eSwgdW5vYnNjdXJlZFJlY3Qub3JpZ2luLnksIHRhcmdl
dENvbnRlbnRPZmZzZXQpOworICAgICAgICBjb29yZGluYXRvci0+YWRqdXN0VGFyZ2V0Q29udGVu
dE9mZnNldEZvclNuYXBwaW5nKG1heFNjcm9sbE9mZnNldHMsIHZlbG9jaXR5LCB1bm9ic2N1cmVk
UmVjdC5vcmlnaW4ueSwgc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCB0YXJnZXRDb250ZW50T2Zm
c2V0KTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eS5oCmluZGV4IDBlNTZlNDlhYTcyZDNjOGVjNTY1NDJjNDUyMDM2NDMxMWM1
MGIxODIuLmJmNTZkNjU2YzdiM2I2ZDM4ODhkODdhOWYzMGM4NjJiOWY5ODM5ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAtOTksNyArOTks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFNjcm9sbChX
ZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRF
bmRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIHZvaWQgYWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENH
U2l6ZSBtYXhTY3JvbGxEaW1lbnNpb25zLCBDR1BvaW50IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcElu
c2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KTsKKyAgICB2b2lkIGFkanVzdFRhcmdl
dENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhDR1NpemUgbWF4U2Nyb2xsT2Zmc2V0cywgQ0dQb2lu
dCB2ZWxvY2l0eSwgQ0dGbG9hdCB0b3BJbnNldCwgQ0dQb2ludCBjdXJyZW50Q29udGVudE9mZnNl
dCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCkKKwogICAgIGJvb2wgaGFzQWN0aXZlU25h
cFBvaW50KCkgY29uc3Q7CiAgICAgQ0dQb2ludCBuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRq
dXN0ZWRTbmFwT2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmKSBjb25zdDsK
ICAgICBib29sIHNob3VsZFNldFNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCgpIGNvbnN0
OwpAQCAtMTIwLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogICAgIGJvb2wgc2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpT
Y3JvbGxFdmVudEF4aXMpIGNvbnN0OwotICAgIGZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFp
bkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpcywgZmxvYXQgc2Nyb2xsRGVz
dGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgY2xvc2VzdEluZGV4KSBjb25zdDsK
KyAgICBmbG9hdCBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3Jl
OjpTY3JvbGxFdmVudEF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCBjdXJyZW50
U2Nyb2xsT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGNsb3Nlc3RJbmRleCkgY29u
c3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgc2VuZFVJU3RhdGVDaGFuZ2VkSWZOZWNlc3NhcnkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eUlPUy5tbQppbmRleCBjYzRlYWQ2NTczZWYwMDNlZWY5MGY3MDIzMzczMTFkMzAzMzhhOWU3Li5j
MGI5ZjBmNmFlNTJlZDNiZTNjNzY1MWQ4NzdiMjU1NGU4OTM0NjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0x
ODUsMTcgKzE4NSwxNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmVz
dGFibGlzaExheWVyVHJlZVNjcm9sbGluZ1JlbGF0aW9ucyhjb25zdAogfQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxPZmZz
ZXRzLCBDR1BvaW50IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50KiB0YXJnZXRD
b250ZW50T2Zmc2V0KQordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1
c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbE9mZnNldHMs
IENHUG9pbnQgdmVsb2NpdHksIENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQgY3VycmVudENvbnRl
bnRPZmZzZXQsIENHUG9pbnQqIHRhcmdldENvbnRlbnRPZmZzZXQpCiB7CiAgICAgLy8gVGhlIGJv
dW5kcyBjaGVja2luZyB3aXRoIG1heFNjcm9sbE9mZnNldHMgaXMgdG8gZW5zdXJlIHRoYXQgd2Ug
d29uJ3QgaW50ZXJmZXJlIHdpdGggcnViYmVyLWJhbmRpbmcgd2hlbiBzY3JvbGxpbmcgdG8gdGhl
IGVkZ2Ugb2YgdGhlIHBhZ2UuCiAgICAgaWYgKHNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxp
bmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSkgewotICAgICAgICBmbG9h
dCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNj
cm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHRhcmdldENvbnRl
bnRPZmZzZXQtPngsIHZlbG9jaXR5LngsIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eCwgY3VycmVudENvbnRlbnRPZmZzZXQueCwgdmVs
b2NpdHkueCwgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAgICAgICAgaWYg
KHRhcmdldENvbnRlbnRPZmZzZXQtPnggPiAwICYmIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPCBt
YXhTY3JvbGxPZmZzZXRzLndpZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+
eCA9IHN0ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXRzLndpZHRoLCBwb3RlbnRpYWxTbmFw
UG9zaXRpb24pOwogICAgIH0KIAogICAgIGlmIChzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xs
aW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKSB7Ci0gICAgICAgIGZsb2F0
IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Ny
b2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHRhcmdldENvbnRlbnRP
ZmZzZXQtPnksIHZlbG9jaXR5LnksIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwor
ICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldEZv
ck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB0
YXJnZXRDb250ZW50T2Zmc2V0LT55LCBjdXJyZW50Q29udGVudE9mZnNldC55LCB2ZWxvY2l0eS55
LCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICAgICAgICAgaWYgKG1fY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKICAgICAg
ICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKIApAQCAtMjIxLDcgKzIy
MSw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1m
bG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgc2Nyb2xsRGVz
dGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgY3VycmVudEluZGV4KSBjb25zdAor
ZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRG
b3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNjcm9sbERl
c3RpbmF0aW9uLCBmbG9hdCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5z
aWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKIHsKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9v
dCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiByb290
LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKQEAgLTIzMCw3ICsyMzAsOSBAQCBmbG9hdCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFt
ZVNjcm9sbGluZyhTYwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3Jv
bGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwog
ICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0OwotICAgIHN0ZDo6dGllKHJhd0Nsb3Nlc3RT
bmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zm
c2V0KGF4aXMsIHJvb3RTY3JvbGxpbmdOb2RlLT5sYXlvdXRWaWV3cG9ydCgpLnNpemUoKSwgc2Nh
bGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKKworICAgIGF1dG8gc2VhcmNoID0gRmxv
YXRTbmFwUG9pbnRTZWFyY2g6OmNyZWF0ZU1vbWVudHVtKGF4aXMsIHNjYWxlZFNjcm9sbERlc3Rp
bmF0aW9uLCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCB2aWV3cG9ydFNpemUsIHZlbG9jaXR5KTsKKyAg
ICBzdGQ6OnRpZShyYXdDbG9zZXN0U25hcE9mZnNldCwgY3VycmVudEluZGV4KSA9IHNlYXJjaC5y
dW4oc25hcE9mZnNldHNJbmZvKTsKICAgICByZXR1cm4gcmF3Q2xvc2VzdFNuYXBPZmZzZXQgKiBt
X3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
CmluZGV4IDhmYzY2MTVmNzZmM2M5ZmFkMDBmNTk0YjM0YjEzZGQ0NGM5MjNjZDAuLmZiOTY5MzQx
MWY3M2JhZWJmZWQ1NGZhODNlNzBjNTMyOWYwYjU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTEw
OSwxNCArMTA5LDE2IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3Jv
bGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2NpdHk6KENHUG9pCiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHZpZXdwb3J0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0V2lkdGgoW3Nj
cm9sbFZpZXcgYm91bmRzXSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0SGVpZ2h0KFtz
Y3JvbGxWaWV3IGJvdW5kc10pKSk7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0g
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKTsKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhdID0g
c25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54
KTsKKyAgICAgICAgYXV0byBzZWFyY2ggPSBGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9t
ZW50dW0oV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFy
Z2V0LCBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQueCwgdmlld3BvcnRTaXplLCB2ZWxvY2l0eS54
KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzZWFyY2gu
cnVuKHNuYXBPZmZzZXRzSW5mbyk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChpbmRl
eCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdl
dCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29u
dGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKICAgICB9CiAKICAgICBpZiAo
IXNuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewotICAgICAg
ICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5j
bG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3
cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBzZWFy
Y2ggPSBGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0oV2ViQ29yZTo6U2Nyb2xs
RXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQsIHNjcm9sbFZpZXcuY29udGVudE9m
ZnNldC55LCB2aWV3cG9ydFNpemUsIHZlbG9jaXR5LnkpOworICAgICAgICBhdXRvIFtwb3RlbnRp
YWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNlYXJjaC5ydW4oc25hcE9mZnNldHNJbmZvKTsKICAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRh
cmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUuaGVp
Z2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQ
b3NpdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428538</attachid>
            <date>2021-05-13 11:17:57 -0700</date>
            <delta_ts>2021-05-13 13:04:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224380-20210513201756.patch</filename>
            <type>text/plain</type>
            <size>46589</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM5NWUzZjM4N2M2MTg2
NGNiNTNmNzBlYjRiZGUxNjZjNGU5ZmJmNy4uMTdmNTRiN2E3NjNjNDg3ODEwY2FjMzk4ZDVhODFl
NzM0MzhhOGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNu
YXBdIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NDYxMDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIFNuYXBQb2ludFNlYXJjaCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRz
IGFsbCBhcmd1bWVudHMgbmVjZXNzYXJ5IGZvciBkb2luZworICAgICAgICBhIHNuYXAgcG9pbnQg
c2VhcmNoIGFuZCBub3cgY2FycmllcyB0aGUgdHlwZSBvZiBzbmFwIHBvaW50IHNlYXJjaCB0aGF0
IGlzIHRha2luZworICAgICAgICBwbGFjZS4gVGhpcyBpcyB1c2VkIHRvIGFsbG93IG1vbWVudHVt
IHNjcm9sbGluZyB0byAic3RpY2siIHRvIHNuYXAgcG9pbnRzIHdoaWxlCisgICAgICAgIG5vcm1h
bCBkaXJlY3Rpb25hbCBzbmFwcGluZyBkb2VzIG5vdC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgc2Vh
cmNoIHRvIGVsaW1pbmF0ZSB0aGUKKyAgICAgICAgdmVsb2NpdHkgcGFyYW1ldGVyLCB3aGljaCBp
cyBkZXRlcm1pbmVkIGJ5IGxvb2tpbmcgYXQgdGhlIG9yaWdpbmFsIHNjcm9sbCBvZmZzZXQuCisK
KyAgICAgICAgVGVzdDogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LWVzY2FwZS5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnVuU25hcFBvaW50
U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U25hcFBvaW50U2VhcmNoOjpydW4pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTbmFwUG9pbnRTZWFyY2g6OmNyZWF0ZURpcmVjdGlvbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0pOgorICAgICAgICAoV2ViQ29yZTo6
U25hcFBvaW50U2VhcmNoOjp2ZWxvY2l0eSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9y
QXhpc0FuZE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjphZGp1
c3RTY3JvbGxEZXN0aW5hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZv
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaDoKKwogMjAyMS0wNS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGltbWVkaWF0ZSBhY3Rp
b24gZ2VzdHVyZXMgdG8gYmVnaW4gd2hlbiBmb3JjZSBjbGlja2luZyB0ZXh0IGluc2lkZSBpbWFn
ZSBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMTFhZTVlNjA5N2UzYzhiZmI3NWQ5OGVkOTdhMjJlZTlk
NjMwZGU3Li5hM2M2NDljN2MzMTE3MGM4NjQzYTE5Zjc1ZTdiZjRkNzgzMjFkOTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA1LTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNuYXBdIHByb3hpbWl0eSBzY3JvbGwg
c25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NDYxMDU5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFNuYXBQ
b2ludFNlYXJjaCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRzIGFsbCBhcmd1bWVudHMgbmVjZXNz
YXJ5IGZvciBkb2luZworICAgICAgICBhIHNuYXAgcG9pbnQgc2VhcmNoIGFuZCBub3cgY2Fycmll
cyB0aGUgdHlwZSBvZiBzbmFwIHBvaW50IHNlYXJjaCB0aGF0IGlzIHRha2luZworICAgICAgICBw
bGFjZS4gVGhpcyBpcyB1c2VkIHRvIGFsbG93IG1vbWVudHVtIHNjcm9sbGluZyB0byAic3RpY2si
IHRvIHNuYXAgcG9pbnRzIHdoaWxlCisgICAgICAgIG5vcm1hbCBkaXJlY3Rpb25hbCBzbmFwcGlu
ZyBkb2VzIG5vdC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgc2VhcmNoIHRvIGVsaW1pbmF0ZSB0aGUK
KyAgICAgICAgdmVsb2NpdHkgcGFyYW1ldGVyLCB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IGxvb2tp
bmcgYXQgdGhlIG9yaWdpbmFsIHNjcm9sbCBvZmZzZXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3
V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JT
bmFwcGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2
ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldCk6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZp
ZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisK
KzIwMjEtMDUtMDUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtTY3JvbGwgc25hcF0gcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZyBpcyBicm9rZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY0NjEwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmFuZ2VzLiBUaGlzIGFsbG93cyBwcm94aW1pdHkg
aW5mb3JtYXRpb24gdG8gYmUgaGFuZGxlZCBkdXJpbmcgc25hcCBwb2ludCBzZWxlY3Rpb24uCisg
ICAgICAgIFRoZSBnZW9tZXRyeSB3aWxsIGJlIHVzZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdG8gZm9s
bG93IHNwZWMgYmVoYXZpb3IgZm9yIHNuYXAKKyAgICAgICAgYXJlYXMgdGhhdCBvdmVyZmxvdyB0
aGUgc25hcHBvcnQgYW5kIHdoZW4gaGFuZGxpbmcgbWFzb25yeSBsYXlvdXRzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gVGhpcyBjaGFuZ2UgcmVsaWVzIG9uIHRoZSBiZWhhdmlvciBvZiBzY3Jv
bGwgc25hcHBpbmcgd2hlbgorICAgICAgICB3aGVlbCBldmVudHMgY2F1c2UgbW9tZW50dW0gc2Ny
b2xsaW5nIHdpdGggYSB2ZWxvY2l0eS4gSXQncyB1bmNsZWFyIGhvdyB0bworICAgICAgICB0ZXN0
IHRob3NlIGtpbmQgb2YgZXZlbnRzIHdpdGggdGhlIEV2ZW50U2VuZGVyLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
c2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNl
dDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50
T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2Rl
U2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5
OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisKKzIwMjEtMDUtMTEgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI3NzA4Myk6IFBy
b3hpbWl0eSBzY3JvbGwgc25hcCBpcyBicm9rZW4gb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2NDkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIGlPUyBkb2VzIG5vdCBo
YXZlIGdyZWF0IHN1cHBvcnQgZm9yIHRoZSBldmVudCBzZW5kaW5nIHRlc3QKKyAgICAgICAgaW5m
cmFzdHJ1Y3R1cmUgdXNlZCB0byB0ZXN0IHNjcm9sbCBzbmFwLgorCisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+Ojpl
bmNvZGUpOiBJbmNsdWRlIHRoZSBzbmFwIHR5cGUgd2hlbiBlbmNvZGluZyBTY3JvbGxTbmFwT2Zm
c2V0c0luZm8uCisgICAgICAgIChBcmd1bWVudENvZGVyPEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvPjo6ZGVjb2RlKTogSW5jbHVkZSB0aGUgc25hcCB0eXBlIHdoZW4gZGVjb2RpbmcgU2Nyb2xs
U25hcE9mZnNldHNJbmZvLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDogQWRkZWQgRW51bVRyYWl0cyBmb3IgU2Nyb2xsU25hcFN0cmljdG5lc3MuCisKIDIwMjEtMDUt
MTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21h
Y09TXSBBbGxvdyBpbW1lZGlhdGUgYWN0aW9uIGdlc3R1cmVzIHRvIGJlZ2luIHdoZW4gZm9yY2Ug
Y2xpY2tpbmcgdGV4dCBpbnNpZGUgaW1hZ2Ugb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IDM3
YjY2MzdiNDg2MGQ5OGNlMzgwNjhmNTFiMzFmZWNlNjhhYzZkMTUuLmExNjU5MDFhZjg2YmUwNmE5
MmI0YjMyNTZiMGMwMzVlOTViMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMTA2LDQ0ICsxMDYs
NDYgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJl
dHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBl
bmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4g
Y2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlvdXRU
eXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5
b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQordGVtcGxhdGUg
PHR5cGVuYW1lIFNlYXJjaFR5cGUsIHR5cGVuYW1lIEluZm9UeXBlLCB0eXBlbmFtZSBMYXlvdXRU
eXBlPgorc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gcnVuU25hcFBvaW50
U2VhcmNoKFNlYXJjaFR5cGUmIHNlYXJjaCwgY29uc3QgSW5mb1R5cGUmIGluZm8pCiB7Ci0gICAg
Y29uc3QgYXV0byYgc25hcE9mZnNldHMgPSBpbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOworICAg
IGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhzZWFyY2guYXhp
cyk7CiAgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNl
dCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAKLSAgICBpZiAob3JpZ2luYWxPZmZzZXRGb3JE
aXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkpIHsKLSAgICAgICAgYXV0byBmaXJzdFNuYXBT
dG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmRE
ZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFw
cGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpOworICAgIGlmIChzZWFyY2gub3JpZ2luYWxP
ZmZzZXQpIHsKKyAgICAgICAgYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmly
c3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywg
KnNlYXJjaC5vcmlnaW5hbE9mZnNldCwgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICAg
ICAgaWYgKGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleC5oYXNWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zmc2V0SW5k
ZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CiAgICAgfQogCi0gICAgaWYg
KHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQor
ICAgIGlmIChzZWFyY2guZGVzdGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5v
ZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgp
Lm9mZnNldCwgMHUpOwogCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBP
ZmZzZXRzLmxhc3QoKS5vZmZzZXQpCisgICAgaWYgKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCA+
PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7CiAK
ICAgICB1bnNpZ25lZCBsb3dlckluZGV4OwogICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7Ci0gICAg
aW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBzbmFwT2Zmc2V0cywgbG93ZXJJbmRleCwgdXBwZXJJbmRleCk7CisgICAgaW5kaWNl
c09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNl
dCwgc25hcE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwogICAgIExheW91dFR5cGUg
bG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7CiAgICAg
TGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdLm9m
ZnNldDsKIAotICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdo
dCgpOwotICAgIGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHk8TGF5b3V0VHlw
ZT4oaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgbG93ZXJTbmFwUG9z
aXRpb24sIHZpZXdwb3J0TGVuZ3RoKSkgewotICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0OworICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBzZWFyY2gu
YXhpcyAgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gc2VhcmNoLnZpZXdwb3J0U2l6
ZS53aWR0aCgpIDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoIWlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywg
c2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCBsb3dlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5n
dGgpKSB7CisgICAgICAgIGxvd2VyU25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zm
c2V0OwogICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9
CiAKLSAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+
KGluZm8uc3RyaWN0bmVzcywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHVwcGVyU25hcFBvc2l0
aW9uLCB2aWV3cG9ydExlbmd0aCkpIHsKLSAgICAgICAgdXBwZXJTbmFwUG9zaXRpb24gPSBzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldDsKKyAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zm
c2V0LCB1cHBlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7CisgICAgICAgIHVwcGVy
U25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0OwogICAgICAgICB1cHBlcklu
ZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9CisKKyAgICBmbG9hdCB2ZWxvY2l0
eSA9IHNlYXJjaC52ZWxvY2l0eSgpOwogICAgIGlmICghc3RkOjphYnModmVsb2NpdHkpKSB7CiAg
ICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gKHVwcGVySW5kZXggPT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKLSAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dlclNu
YXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
KTsKKyAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgg
JiYgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0IC0gbG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJT
bmFwUG9zaXRpb24gLSBzZWFyY2guZGVzdGluYXRpb25PZmZzZXQpOwogICAgICAgICByZXR1cm4g
aXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9z
aXRpb24sIGxvd2VySW5kZXgpIDogc3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVw
cGVySW5kZXgpOwogICAgIH0KIApAQCAtMTUxLDEzICsxNTMsMTQgQEAgc3RhdGljIHN0ZDo6cGFp
cjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMo
Y29uc3QgSW4KICAgICAvLyBhcyBsb25nIGFzIGEgc2Nyb2xsIHNuYXAgb2Zmc2V0IGlzIGNsb3Nl
IGVub3VnaCBmb3IgcHJveGltaXR5IChvciB3ZSBhcmVuJ3QgdXNpbmcgcHJveGltaXR5KS4gSWYg
d2UgYXJlIGRvaW5nIGRpcmVjdGlvbmFsCiAgICAgLy8gc25hcHBpbmcsIHdlIHNob3VsZCBuZXZl
ciBzbmFwIHRvIGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9yaWdp
bmFsIHBvc2l0aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3JvbGwuCiAg
ICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBzbmFwIHBv
aW50cy4KKyAgICBib29sIGFsd2F5c0FsbG93RXNjYXBpbmdTbmFwUG9zaXRpb24gPSBpbmZvLnN0
cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSB8fCBzZWFyY2gudHlw
ZSA9PSBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbDsKICAgICBpZiAodmVsb2NpdHkg
PCAwKSAgewotICAgICAgICBpZiAodXBwZXJJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4
ICYmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9m
ZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQb3NpdGlvbikpCisgICAgICAg
IGlmICh1cHBlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFhbHdheXNBbGxv
d0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5vcmlnaW5hbE9mZnNldCA+IHVwcGVyU25h
cFBvc2l0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQ
b3NpdGlvbiwgdXBwZXJJbmRleCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dl
clNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7CiAgICAgfQogCi0gICAgaWYgKGxvd2VySW5kZXgg
IT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9u
YWxTbmFwcGluZyB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIDwgbG93
ZXJTbmFwUG9zaXRpb24pKQorICAgIGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXggJiYgKCFhbHdheXNBbGxvd0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5vcmln
aW5hbE9mZnNldCA8IGxvd2VyU25hcFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogfQpAQCAtMzU1LDE2ICsz
NTgsMTYgQEAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWMKIAogfQogCi10ZW1wbGF0ZSA8PiB0ZW1w
bGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25z
dCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDw+CitzdGQ6OnBhaXI8
TGF5b3V0VW5pdCwgdW5zaWduZWQ+IExheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0IExh
eW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNu
YXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9u
YWxTbmFwcGluZyk7CisgICAgcmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxMYXlvdXRTbmFwUG9p
bnRTZWFyY2gsIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgTGF5b3V0VW5pdD4oKnRoaXMs
IGluZm8pOwogfQogCi10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZTw+Ci1zdGQ6OnBhaXI8ZmxvYXQsIHVu
c2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDw+
CitzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVuKGNv
bnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBjbG9z
ZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcygqdGhpcywgYXhpcywgdmlld3BvcnRTaXplLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gcnVuU25hcFBvaW50U2VhcmNoPEZsb2F0U25h
cFBvaW50U2VhcmNoLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgZmxvYXQ+KCp0aGlzLCBp
bmZvKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkMTYwYzk1YmM0M2ZmOTgxYzBhNDdiZjM2MDNj
NDAwNmRjZWUzMWNjLi5kNjQxMzBmNGU3N2I3M2M0NTQ4ZjkyYTY5NTk4NjMzYmRlYWE2MzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaApAQCAtNzIsOCArNzIsNiBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlPiBPdXRwdXRUeXBl
IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFVuaXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBj
b25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9u
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1c2lu
ZyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5
b3V0VW5pdCwgTGF5b3V0UmVjdD47CkBAIC04MiwxNCArODAsNTcgQEAgdXNpbmcgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0UmVj
dD47CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZv
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2Vk
U2NhbGVGYWN0b3IgKi8pIGNvbnN0OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2Np
dHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykgY29uc3Q7CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7CiAK
K2VudW0gU25hcFBvaW50U2VhcmNoVHlwZSB7CisgICAgTm9uRGlyZWN0aW9uYWwsCisgICAgRGly
ZWN0aW9uYWwsCiAKLXRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1GbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Ci10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotV0VCQ09S
RV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgTGF5
b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworICAgIC8vIE1vbWVudHVtIHNjcm9sbGluZyBp
cyBsaWtlIGRpcmVjdGlvbmFsIHNjcm9sbGluZywgYnV0IGRvZXMgbm90IGRvCisgICAgLy8gYW55
dGhpbmcgc3BlY2lhbCB0byBhbGxvdyBlc2NhcGluZyBzbmFwIHBvaW50cy4gSXQncyBhc3N1bWVk
IHRoYXQKKyAgICAvLyB0cmlnZ2VyaW5nIGEgbGFyZ2VyIGFtb3VudCBvZiBtb21lbnR1bSBzaG91
bGQgYmUgc3VmZmljaWVudCB0byBlc2NhcGUKKyAgICAvLyB0aGUgc25hcCBwb2ludC4KKyAgICBN
b21lbnR1bSwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBTaXpl
VHlwZSwgdHlwZW5hbWUgSW5mb1R5cGU+CitzdHJ1Y3QgU25hcFBvaW50U2VhcmNoIHsKKyAgICBT
Y3JvbGxFdmVudEF4aXMgYXhpczsKKyAgICBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxPZmZz
ZXQ7CisgICAgVW5pdFR5cGUgZGVzdGluYXRpb25PZmZzZXQ7CisgICAgU2l6ZVR5cGUgdmlld3Bv
cnRTaXplOworICAgIFNuYXBQb2ludFNlYXJjaFR5cGUgdHlwZTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+IHJ1bihjb25zdCBJbmZvVHlwZSYpOwor
CisgICAgc3RhdGljIFNuYXBQb2ludFNlYXJjaDxVbml0VHlwZSwgU2l6ZVR5cGUsIEluZm9UeXBl
PiBjcmVhdGVOb25EaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4aXMgYXhpcywgVW5pdFR5cGUgZGVz
dGluYXRpb25PZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB7IGF4aXMsIFdURjo6bnVsbG9wdCwgZGVzdGluYXRpb25PZmZzZXQsIHZpZXdwb3J0U2l6
ZSwgU25hcFBvaW50U2VhcmNoVHlwZTo6Tm9uRGlyZWN0aW9uYWwgfTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU25hcFBvaW50U2VhcmNoPFVuaXRUeXBlLCBTaXplVHlwZSwgSW5mb1R5cGU+IGNyZWF0
ZURpcmVjdGlvbmFsKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBVbml0VHlwZSBkZXN0aW5hdGlvbk9m
ZnNldCwgVW5pdFR5cGUgb3JpZ2luYWxPZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7IGF4aXMsIG9yaWdpbmFsT2Zmc2V0LCBkZXN0aW5hdGlvbk9m
ZnNldCwgdmlld3BvcnRTaXplLCBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbCB9Owor
ICAgIH0KKworICAgIHN0YXRpYyBTbmFwUG9pbnRTZWFyY2g8VW5pdFR5cGUsIFNpemVUeXBlLCBJ
bmZvVHlwZT4gY3JlYXRlTW9tZW50dW0oU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIFVuaXRUeXBlIGRl
c3RpbmF0aW9uT2Zmc2V0LCBVbml0VHlwZSBvcmlnaW5hbE9mZnNldCwgU2l6ZVR5cGUgdmlld3Bv
cnRTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgYXhpcywgb3JpZ2luYWxPZmZzZXQsIGRl
c3RpbmF0aW9uT2Zmc2V0LCB2aWV3cG9ydFNpemUsIFNuYXBQb2ludFNlYXJjaFR5cGU6Ok1vbWVu
dHVtIH07CisgICAgfQorCisgICAgZmxvYXQgdmVsb2NpdHkoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9yaWdpbmFsT2Zmc2V0ID8gZmxvYXQgeyBkZXN0aW5hdGlvbk9mZnNldCAtICpvcmlnaW5h
bE9mZnNldCB9IDogMC4wOworICAgIH0KK307CisKK3VzaW5nIExheW91dFNuYXBQb2ludFNlYXJj
aCA9IFNuYXBQb2ludFNlYXJjaDxMYXlvdXRVbml0LCBMYXlvdXRTaXplLCBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8+OwordXNpbmcgRmxvYXRTbmFwUG9pbnRTZWFyY2ggPSBTbmFwUG9pbnRT
ZWFyY2g8ZmxvYXQsIEZsb2F0U2l6ZSwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OwogCit0
ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTbmFwUG9pbnRTZWFyY2g6OnJ1bihjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mKTsKK3RlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQsIHVu
c2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvJik7CiAKIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBV
SU5UX01BWDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA5MjU4ZTdlYWE0ZWRkNDdjNWU0MGNlMzZhMDJl
ZWQ4NjFhM2E0ODE0Li4zN2QxOTExYWYwYjA4MmY4ZTFlMTRkMmU4ZmVmN2M0NmNmYWU1NzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhLmNwcApAQCAtMTczLDggKzE3MywxMSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVs
RQogICAgICAgICBGbG9hdFBvaW50IG5ld0Zsb2F0T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1
cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSk7CiAgICAgICAg
IGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQobmV3RmxvYXRPZmZzZXQueCgpIC8gc2NhbGUs
IG5ld0Zsb2F0T2Zmc2V0LnkoKSAvIHNjYWxlKTsKIAotICAgICAgICBhdXRvIG9mZnNldFggPSBz
Y3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0Lngo
KSwgZGVsdGFYLCBvcmlnaW5hbE9mZnNldC54KCkpLmZpcnN0OwotICAgICAgICBhdXRvIG9mZnNl
dFkgPSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09mZnNl
dC55KCksIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKyAgICAgICAgYXV0byBz
ZWFyY2ggPSBGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGlyZWN0aW9uYWwoU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQueCgpLCBvcmlnaW5hbE9mZnNldC54KCksIHNj
cm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc2VhcmNoLnJ1bihz
Y3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OworCisgICAgICAgIHNlYXJj
aCA9IEZsb2F0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVEaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBvcmlnaW5hbE9mZnNldC55KCksIHNjcm9sbGFi
bGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRZID0gc2VhcmNoLnJ1bihzY3JvbGxp
bmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OwogCiAgICAgICAgIGRlbHRhWCA9IChv
ZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwogICAgICAgICBkZWx0YVkgPSAo
b2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA3NmRlNzI5YTA5ZTc2YmNmMTA1MDYzZWUz
NzMyNTI5YjdhN2FhMzdkLi5hODZmNTFjMjA4YzYyNWE3ZTdlM2YxZjc4NzM3NzIzZThkZWY5Yjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC05Myw5
ICs5Myw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAgICAgICAgYXV0byBjdXJyZW50T2Zm
c2V0ID0gb2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbigpKTsKICAgICAgICAgYXV0
byBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0ICsgZGVsdGE7CiAgICAgICAgIGlmIChvcmllbnRh
dGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFgo
bV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgbmV3T2Zmc2V0LngoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNldC54
KCkpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRYKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1
c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5ld09mZnNl
dC54KCksIGN1cnJlbnRPZmZzZXQueCgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5l
d09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtdWx0aXBsaWVyLCBjdXJy
ZW50T2Zmc2V0LnkoKSkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFkobV9zY3JvbGxDb250
cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IG5ld09mZnNldC55KCksIGN1cnJlbnRPZmZzZXQueSgpKSk7CiAgICAgICAgIGF1dG8gbmV3RGVs
dGEgPSBuZXdPZmZzZXQgLSBjdXJyZW50T2Zmc2V0OwogCiAgICAgICAgIGlmIChvcmllbnRhdGlv
biA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQpAQCAtMzk4LDE1ICszOTgsMTMgQEAgZmxvYXQgU2Ny
b2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsKIAogICAgIE9wdGlvbmFs
PGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKLSAgICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAgIGlm
IChtZXRob2QgPT0gU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25hbCkg
ewogICAgICAgICBGbG9hdFNpemUgc2Nyb2xsT3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3JvbGxh
YmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7CiAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24odGhpcy0+Y3VycmVudFBvc2l0
aW9uKCksIHNjcm9sbE9yaWdpbik7CiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0ID0gYXhpcyA9PSBT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBjdXJyZW50T2Zmc2V0LngoKSA6IGN1cnJlbnRP
ZmZzZXQueSgpOwotICAgICAgICB2ZWxvY2l0eSA9IG5ld09mZnNldCAtIChheGlzID09IFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IGN1cnJlbnRPZmZzZXQueCgpIDogY3VycmVudE9mZnNl
dC55KCkpOwogICAgIH0KIAotICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Ny
b2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXQp
OworICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24o
YXhpcywgbmV3T2Zmc2V0LCBvcmlnaW5hbE9mZnNldCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShtZXRob2QpOwogICAgIFVOVVNFRF9QQVJBTShheGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKaW5kZXggZjBhZGU3MzU0NzkzYTA1OTNlZGI4NTNh
YjRiNDJkNzlkNmRiMTFiMC4uZDBlNDNmOTMxNDZmM2IyZTg4OTZmNjgzMTM5OTBkOWNlNzM4YTNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKQEAg
LTExNSw5ICsxMTUsMTAgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xs
U25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5
b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0
KSwgc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCk7Ci0KICAgICBMYXlvdXRTaXplIHZpZXdwb3J0
U2l6ZShtX2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNp
emUoKS5oZWlnaHQoKSk7Ci0gICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25h
cE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGNsYW1w
ZWRPZmZzZXQsIDApLnNlY29uZDsKKyAgICBhdXRvIHNlYXJjaCA9IExheW91dFNuYXBQb2ludFNl
YXJjaDo6Y3JlYXRlTm9uRGlyZWN0aW9uYWwoYXhpcywgY2xhbXBlZE9mZnNldCwgdmlld3BvcnRT
aXplKTsKKworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc2VhcmNoLnJ1bihzbmFwU3RhdGUu
c25hcE9mZnNldEluZm8oKSkuc2Vjb25kOwogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEyNSw3
ICsxMjYsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIHNldEFjdGl2ZVNjcm9sbFNu
YXBJbmRleEZvckF4aXMoYXhpcywgYWN0aXZlSW5kZXgpOwogfQogCi1mbG9hdCBTY3JvbGxDb250
cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxv
YXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3Jp
Z2luYWxPZmZzZXQpCitmbG9hdCBTY3JvbGxDb250cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0aW5h
dGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkp
CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKQEAgLTEzNSwxMiArMTM2LDE2IEBA
IGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgaWYgKCFzbmFwT2Zmc2V0cy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0czsKLSAgICBpZiAob3JpZ2luYWxPZmZzZXQu
aGFzVmFsdWUoKSkKLSAgICAgICAgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzID0gTGF5b3V0
VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAg
YXV0byBkZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KGRlc3RpbmF0
aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOworCiAgICAgTGF5b3V0U2l6
ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQu
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0
YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXpl
LCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9y
KCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJzdDsKLSAgICBy
ZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBzZWFy
Y2ggPSAgTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbChheGlzLCBk
ZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgaWYgKG9y
aWdpbmFsT2Zmc2V0KSB7CisgICAgICAgIGF1dG8gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRz
ID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3Io
KSk7CisgICAgICAgIHNlYXJjaCA9IExheW91dFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGlyZWN0
aW9uYWwoYXhpcywgZGVzdGluYXRpb25PZmZzZXRJbkxheW91dFVuaXRzLCBvcmlnaW5hbE9mZnNl
dEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHNlYXJj
aC5ydW4oc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkpLmZpcnN0ICogbV9jbGllbnQucGFnZVNj
YWxlRmFjdG9yKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5oCmluZGV4IGRkNTNhZGE5MGEyZjVmMjkwODgwMTAyM2MzZTVhM2M0MzFlZjYxNjIuLmM1
Y2ZjYjBjN2YxYTg4OWM5ODg5MzMyZjlhMzFmYWExMzM5NmIzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXMpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFi
bGVBcmVhJik7CiAgICAgdm9pZCB1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwotICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNj
cm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxmbG9hdD4gb3JpZ2luYWxPZmZzZXQpOworICAgIGZsb2F0IGFkanVzdFNjcm9sbERl
c3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmNwcAppbmRleCA0MTg1MjEzNGFlOTdkZjc4MDU4ZTZhNjhiYmUyNzUyODVhODhhOGMyLi5hNTky
MzRhY2RhYTZiMzEwMWY5YThkZTBkMDY2ZjcyZTA4MDY1YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCkBAIC01MSw4ICs1
MSw4IEBAIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3Rh
dGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBjb25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRv
ciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29u
dGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsK
ICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5w
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBp
bml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2Fs
ZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9y
dFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
aGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJ
bmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9m
ZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNp
emUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJl
ZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgbV9hY3RpdmVTbmFwSW5kZXhY
KTsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWln
aHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3Rl
ZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwog
ICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFy
Z2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSw3ICs5MSw3
IEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRlZFNj
cm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlvCiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxjdWxh
dG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAotZmxv
YXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQg
bWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zmc2V0
LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2
ZVNuYXBJbmRleCkgY29uc3QKK2Zsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCB1bnNpZ25lZCYgb3V0QWN0
aXZlU25hcEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gbV9z
bmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CiAgICAgaWYgKHNuYXBPZmZzZXRz
LmlzRW1wdHkoKSkgewpAQCAtOTksNyArOTksOSBAQCBmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsCiAg
ICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihwcmVkaWN0ZWRPZmZzZXQsIDAsIG1heFNjcm9s
bE9mZnNldCk7CiAgICAgfQogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zmc2V0
c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9
LCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwg
TGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpLmZpcnN0OworICAgIGF1dG8gc2Vh
cmNoID0gTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVNb21lbnR1bShheGlzLCBMYXlvdXRV
bml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIExheW91dFVuaXQoc3RhcnRPZmZzZXQg
LyBwYWdlU2NhbGUpLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXplIH0pOworICAgIGZsb2F0IHRh
cmdldE9mZnNldCA9IHNlYXJjaC5ydW4obV9zbmFwT2Zmc2V0c0luZm8pLmZpcnN0OworCiAgICAg
ZmxvYXQgbWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zmc2V0
cy5maXJzdCgpLm9mZnNldCk7CiAgICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6
bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwog
ICAgIHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRh
cmdldE9mZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCA2YjZkMjI3NWNmYTM0NWI5
YTJiNmE2OWVhODE4OWQ2NjVkNjE0Y2RjLi5lMGRhODMzN2EzM2RmNjkwNWY4Mjk0OGYzOTllNDY5
YmQ3YTIxMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNp
dGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0
LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERl
bHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsKKyAgICBmbG9hdCB0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBm
bG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgdW5zaWduZWQmIG91dEFjdGl2
ZVNuYXBJbmRleCkgY29uc3Q7CiAgICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRlKFNj
cm9sbFNuYXBTdGF0ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNu
YXBTdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXplJiB2
aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDg3MDEwNWM2MzYyOGY1NGMyNTg4NjhiZDMyYTk1Y2Jh
MDg4MGYzY2MuLjVkNGE5Nzg4ZjQzNmQ2ODc2ZjRhZGNlYzhhMmMyYjJiOWJjMTE1N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAK
QEAgLTU1MCw2ICs1NTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRgogewogICAgIGVuY29k
ZXIgPDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgZW5jb2RlciA8PCBpbmZvLnZl
cnRpY2FsU25hcE9mZnNldHM7CisgICAgZW5jb2RlciA8PCBpbmZvLnN0cmljdG5lc3M7CiAgICAg
ZW5jb2RlciA8PCBpbmZvLnNuYXBBcmVhczsKIH0KIApAQCAtNTU5LDYgKzU2MCw4IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBGbG9hdFNjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc3RyaWN0bmVzcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc25hcEFyZWFzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNmJiMjA1MDc0MTEzMTRmODM5YWI3
ODRiM2RhYmRhZGRlNjdkMjQzLi5jZmMzOTYyOGE5NTBmNDJjMWE2MTRiZTk3YzdlNTUyMTU0Yzhj
YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtMTAxMiw0ICsxMDEyLDEzIEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpCiB9OwogI2VuZGlm
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2Nyb2xsU25hcFN0cmlj
dG5lc3M+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpTY3JvbGxTbmFwU3RyaWN0bmVzcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsU25hcFN0cmlj
dG5lc3M6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94
aW1pdHksCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbFNuYXBTdHJpY3RuZXNzOjpNYW5kYXRvcnkK
KyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4
NTZlYmYyZmVjZWEyNWVmNjE3YWIuLmI4OTVkYzdjMzIzM2I4ZTI2Mzg2NTQ5YjJhNmYwYTNiODJi
YzJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCkBAIC0xNTkzLDggKzE1OTMsNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJh
Z2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAg
ICAgICAgICAgb2JzY3VyZWRJbnNldCA9IFtzZWxmIF9jb21wdXRlZE9ic2N1cmVkSW5zZXRdOwog
CiAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVjdChz
ZWxmLmJvdW5kcywgb2JzY3VyZWRJbnNldCk7Ci0KLSAgICAgICAgY29vcmRpbmF0b3ItPmFkanVz
dFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhtYXhTY3JvbGxPZmZzZXRzLCB2ZWxvY2l0
eSwgdW5vYnNjdXJlZFJlY3Qub3JpZ2luLnksIHRhcmdldENvbnRlbnRPZmZzZXQpOworICAgICAg
ICBjb29yZGluYXRvci0+YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKG1heFNj
cm9sbE9mZnNldHMsIHVub2JzY3VyZWRSZWN0Lm9yaWdpbi55LCBzY3JvbGxWaWV3LmNvbnRlbnRP
ZmZzZXQsIHRhcmdldENvbnRlbnRPZmZzZXQpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggMGU1NmU0OWFhNzJk
M2M4ZWM1NjU0MmM0NTIwMzY0MzExYzUwYjE4Mi4uZTA0OGEyNGZlZWU3YTA1MTllNjdkMjY1YWFi
ZGUwMDNiOWU2ZmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oCkBAIC05OSw5ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZVdpbGxTdGFydFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZv
aWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlE
KTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgYWRqdXN0VGFyZ2V0Q29u
dGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxEaW1lbnNpb25zLCBDR1BvaW50
IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0
KTsKKyAgICB2b2lkIGFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhDR1NpemUg
bWF4U2Nyb2xsT2Zmc2V0cywgQ0dGbG9hdCB0b3BJbnNldCwgQ0dQb2ludCBjdXJyZW50Q29udGVu
dE9mZnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCk7CisKICAgICBib29sIGhhc0Fj
dGl2ZVNuYXBQb2ludCgpIGNvbnN0OwotICAgIENHUG9pbnQgbmVhcmVzdEFjdGl2ZUNvbnRlbnRJ
bnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBjb25zdCBDR1BvaW50Jikg
Y29uc3Q7CisgICAgQ0dQb2ludCBuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFw
T2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmKTsKICAgICBib29sIHNob3Vs
ZFNldFNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCgpIGNvbnN0OwogI2VuZGlmCiAjZW5k
aWYKQEAgLTEyMCw3ICsxMjEsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICBib29sIHNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6
U2Nyb2xsRXZlbnRBeGlzKSBjb25zdDsKLSAgICBmbG9hdCBjbG9zZXN0U25hcE9mZnNldEZvck1h
aW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXMsIGZsb2F0IHNjcm9sbERl
c3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGNsb3Nlc3RJbmRleCkgY29uc3Q7
CisgICAgZmxvYXQgY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29y
ZTo6U2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQgY3VycmVu
dFNjcm9sbE9mZnNldCwgdW5zaWduZWQmIGNsb3Nlc3RJbmRleCkgY29uc3Q7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2VuZFVJU3RhdGVDaGFuZ2VkSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBj
YzRlYWQ2NTczZWYwMDNlZWY5MGY3MDIzMzczMTFkMzAzMzhhOWU3Li4zYTc0N2Q0YmJhNmMwNWZm
MzdjZTk2MjcxNGFlMjYzZDc0NjQ3MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0xODUsMTcgKzE4NSwxNyBA
QCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmVzdGFibGlzaExheWVyVHJl
ZVNjcm9sbGluZ1JlbGF0aW9ucyhjb25zdAogfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0Q29u
dGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxPZmZzZXRzLCBDR1BvaW50IHZl
bG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KQor
dm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50
T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbE9mZnNldHMsIENHRmxvYXQgdG9wSW5z
ZXQsIENHUG9pbnQgY3VycmVudENvbnRlbnRPZmZzZXQsIENHUG9pbnQqIHRhcmdldENvbnRlbnRP
ZmZzZXQpCiB7CiAgICAgLy8gVGhlIGJvdW5kcyBjaGVja2luZyB3aXRoIG1heFNjcm9sbE9mZnNl
dHMgaXMgdG8gZW5zdXJlIHRoYXQgd2Ugd29uJ3QgaW50ZXJmZXJlIHdpdGggcnViYmVyLWJhbmRp
bmcgd2hlbiBzY3JvbGxpbmcgdG8gdGhlIGVkZ2Ugb2YgdGhlIHBhZ2UuCiAgICAgaWYgKHNob3Vs
ZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKSkgewotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0
U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwsIHRhcmdldENvbnRlbnRPZmZzZXQtPngsIHZlbG9jaXR5LngsIG1fY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQ
b3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6
OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eCwgY3Vy
cmVudENvbnRlbnRPZmZzZXQueCwgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsK
ICAgICAgICAgaWYgKHRhcmdldENvbnRlbnRPZmZzZXQtPnggPiAwICYmIHRhcmdldENvbnRlbnRP
ZmZzZXQtPnggPCBtYXhTY3JvbGxPZmZzZXRzLndpZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29u
dGVudE9mZnNldC0+eCA9IHN0ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXRzLndpZHRoLCBw
b3RlbnRpYWxTbmFwUG9zaXRpb24pOwogICAgIH0KIAogICAgIGlmIChzaG91bGRTbmFwRm9yTWFp
bkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKSB7Ci0g
ICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9y
TWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHRh
cmdldENvbnRlbnRPZmZzZXQtPnksIHZlbG9jaXR5LnksIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0
U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsLCB0YXJnZXRDb250ZW50T2Zmc2V0LT55LCBjdXJyZW50Q29udGVudE9mZnNldC55
LCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICAgICAgICAgaWYgKG1fY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKICAgICAg
ICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKIApAQCAtMjIxLDcgKzIy
MSw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1m
bG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgc2Nyb2xsRGVz
dGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgY3VycmVudEluZGV4KSBjb25zdAor
ZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRG
b3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNjcm9sbERl
c3RpbmF0aW9uLCBmbG9hdCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCB1bnNpZ25lZCYgY3VycmVudElu
ZGV4KSBjb25zdAogewogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdU
cmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxp
bmdOb2RlKCkpOwpAQCAtMjMwLDcgKzIzMCw5IEBAIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiAK
ICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8g
bV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQgcmF3Q2xv
c2VzdFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQsIGN1cnJl
bnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgcm9vdFNj
cm9sbGluZ05vZGUtPmxheW91dFZpZXdwb3J0KCkuc2l6ZSgpLCBzY2FsZWRTY3JvbGxEZXN0aW5h
dGlvbiwgdmVsb2NpdHkpOworCisgICAgYXV0byBzZWFyY2ggPSBXZWJDb3JlOjpGbG9hdFNuYXBQ
b2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0oYXhpcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24s
IGN1cnJlbnRTY3JvbGxPZmZzZXQsIHJvb3RTY3JvbGxpbmdOb2RlLT5sYXlvdXRWaWV3cG9ydCgp
LnNpemUoKSk7CisgICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQsIGN1cnJlbnRJbmRl
eCkgPSBzZWFyY2gucnVuKHNuYXBPZmZzZXRzSW5mbyk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nlc3RT
bmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9CiAK
QEAgLTI1OCw3ICsyNjAsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
Omhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1D
R1BvaW50IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250
ZW50SW5zZXRBZGp1c3RlZFNuYXBPZmZzZXQoQ0dGbG9hdCB0b3BJbnNldCwgY29uc3QgQ0dQb2lu
dCYgY3VycmVudFBvaW50KSBjb25zdAorQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2Zmc2V0KENHRmxv
YXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQb2ludCkKIHsKICAgICBDR1BvaW50
IGFjdGl2ZVBvaW50ID0gY3VycmVudFBvaW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggOGZjNjYx
NWY3NmYzYzlmYWQwMGY1OTRiMzRiMTNkZDQ0YzkyM2NkMC4uMGU1Njg3MDdjMTJmYjIxZTA0ZDQ3
YWZkMjZkNmRhNGZkNTU3YjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA5LDE0ICsxMDksMTYg
QEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3Bv
cnRTaXplKHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChbc2Nyb2xsVmlldyBib3Vu
ZHNdKSksIHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQoW3Njcm9sbFZpZXcgYm91
bmRzXSkpKTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlm
ICghc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0lu
Zm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCB2aWV3cG9ydFNpemUsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBh
dXRvIHNlYXJjaCA9IFdlYkNvcmU6OkZsb2F0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVNb21lbnR1
bShXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGhvcml6b250YWxUYXJnZXQs
IHNjcm9sbFZpZXcuY29udGVudE9mZnNldC54LCB2aWV3cG9ydFNpemUpOworICAgICAgICBhdXRv
IFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNlYXJjaC5ydW4oc25hcE9mZnNldHNJ
bmZvKTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYg
KGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcu
Y29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0g
cG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAogICAgIGlmICghc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlh
bFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0
KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHZpZXdwb3J0U2l6ZSwgdmVydGlj
YWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBhdXRvIHNlYXJjaCA9IFdlYkNvcmU6OkZs
b2F0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVNb21lbnR1bShXZWJDb3JlOjpTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCB2ZXJ0aWNhbFRhcmdldCwgc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0Lnks
IHZpZXdwb3J0U2l6ZSk7CisgICAgICAgIGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5k
ZXhdID0gc2VhcmNoLnJ1bihzbmFwT2Zmc2V0c0luZm8pOwogICAgICAgICBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAgJiYgdmVydGlj
YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICB0
YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5
ZWY5YjEzNGQ5NzQ4NGFmOGFlMjQ4NjQyYzc1MjliYTVkZTA5NmMuLmRhZmIzMjhjNWQyZmUwNzNj
NTFhYWRiYWQ3YmIwYjkwMDBlOTRhZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNS0x
MyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Nj
cm9sbCBzbmFwXSBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzgwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjQ2MTA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBTbmFwUG9pbnRTZWFyY2ggZGF0YSBzdHJ1Y3R1cmUgdGhh
dCBob2xkcyBhbGwgYXJndW1lbnRzIG5lY2Vzc2FyeSBmb3IgZG9pbmcKKyAgICAgICAgYSBzbmFw
IHBvaW50IHNlYXJjaCBhbmQgbm93IGNhcnJpZXMgdGhlIHR5cGUgb2Ygc25hcCBwb2ludCBzZWFy
Y2ggdGhhdCBpcyB0YWtpbmcKKyAgICAgICAgcGxhY2UuIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBt
b21lbnR1bSBzY3JvbGxpbmcgdG8gInN0aWNrIiB0byBzbmFwIHBvaW50cyB3aGlsZQorICAgICAg
ICBub3JtYWwgZGlyZWN0aW9uYWwgc25hcHBpbmcgZG9lcyBub3QuIFRoaXMgYWxzbyBhbGxvd3Mg
dGhlIHNlYXJjaCB0byBlbGltaW5hdGUgdGhlCisgICAgICAgIHZlbG9jaXR5IHBhcmFtZXRlciwg
d2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0IHRoZSBvcmlnaW5hbCBzY3JvbGwgb2Zm
c2V0LgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtcHJveGltaXR5LWVzY2FwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0
eS1lc2NhcGUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIFJlbGVhc2Ugd2syIF0gaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXJlY29yZHMtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBpcyBmbGFr
eSBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LWVzY2FwZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1wcm94aW1pdHktZXNjYXBlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWVjZTRmMDAz
ZmJlM2NmNjQ0MTIxMDAxMjk0NGNkYWQyZjJhMmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJv
eGltaXR5LWVzY2FwZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorU2Nyb2xsaW5nIGJv
ZHkgd2l0aCAyIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9w
PyBZRVMKKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworLSAwCitT
Y3JvbGxpbmcgYm9keSB3aXRoIDYwIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25h
cCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/
IFlFUworLSA2MDAKK1Njcm9sbGluZyBib2R5IHdpdGggMTUgZHJhZyB0aWNrcworLSBEaWQgdGhl
IHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0
aGUgc2Vjb25kIGJveD8gWUVTCistIDYwMAorU2Nyb2xsaW5nIGJvZHkgd2l0aCAxNSBkcmFnIHRp
Y2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9s
bGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBZRVMKKy0gNjAwCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LXByb3hpbWl0eS1lc2NhcGUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1lc2NhcGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDhjNTdhN2I2ODVmY2UwZTA5ZGEzYmQ1NTFhMzk4YTg0ZDA4Y2I3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtcHJveGltaXR5LWVzY2FwZS5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIGh0bWwgeworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAwOworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgICAgIGhl
aWdodDogMTAwJTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBub25lOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5hcmVhIHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAg
ICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OworICAg
ICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgI291dHB1dCB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICBsZXQgd3JpdGUgPSBzID0+IG91dHB1dC5pbm5lckhUTUwgKz0gcyArICI8YnI+IjsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gdmVydGljYWxTY3JvbGxJbkJvZHkoZHJhZ0RlbHRhcykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgICAgICAgICAgICAgIHdyaXRlKGBTY3JvbGxpbmcgYm9keSB3aXRoICR7ZHJhZ0RlbHRhcy5s
ZW5ndGh9IGRyYWcgdGlja3NgKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21l
bnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHdpbmRvdy5pbm5lcldpZHRoIC8gMiwgd2luZG93LmlubmVy
SGVpZ2h0IC8gMik7CisgICAgICAgICAgICAgICAgZHJhZ0RlbHRhcy5mb3JFYWNoKChkZWx0YSwg
aSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIGRlbHRhLCAibm9uZSIsIGkgPT0gMCA/ICJiZWdhbiIgOiAiY2hhbmdlZCIpKTsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgIm5vbmUiLCAiZW5kZWQiKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBsZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hcmVhIikuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBz
bmFwIHRvIHRoZSB0b3A/ICR7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgPT0g
MCA/ICJZRVMiIDogIk5PIn1gKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlkIHNj
cm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyAke2RvY3VtZW50LnNjcm9sbGluZ0VsZW1l
bnQuc2Nyb2xsVG9wID09IGFyZWFIZWlnaHQgPyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAg
ICAgICAgICAgIHdyaXRlKGAtICR7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3B9
YCk7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHJ1bigpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdyaXRlKCJUbyBtYW51YWxseSB0ZXN0
LCB2ZXJpZnkgdGhhdCBzY3JvbGxpbmcgbmVhciBvbmUgb2YgdGhlIGJvdW5kYXJpZXMgYmV0d2Vl
biB0aGUgY29sb3JlZCBib3hlcyIpOworICAgICAgICAgICAgICAgIHdyaXRlKCJzbmFwcyB0byB0
aGUgZWRnZSBvZiB0aGUgbmVhcmVzdCBjb2xvcmVkIGJveCwgYnV0IHNjcm9sbGluZyBzb21ld2hl
cmUgbmVhciB0aGUgbWlkZGxlIG9mIHR3byIpOworICAgICAgICAgICAgICAgIHdyaXRlKCJib3hl
cyBkb2VzIG5vdCBjYXVzZSB0aGUgc2Nyb2xsIG9mZnNldCB0byBzbmFwLiIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IGFyZWFIZWln
aHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuYXJlYSIpLmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIHZlcnRpY2FsU2Nyb2xsSW5Cb2R5KG5ldyBBcnJheSgyKS5maWxsKC0xKSkKKyAgICAg
ICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQm9keShuZXcgQXJyYXkoTWF0
aC5yb3VuZChhcmVhSGVpZ2h0IC8gMTApKS5maWxsKC0xKSkpCisgICAgICAgICAgICAgICAgLnRo
ZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkJvZHkobmV3IEFycmF5KDE1KS5maWxsKC0xKSkpCisg
ICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkJvZHkobmV3IEFycmF5
KDE1KS5maWxsKDEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD1ydW4oKT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJhcmVh
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBj
bGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGFxdWE7Ij48L2Rp
dj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogZnVjaHNpYTsiPjwvZGl2PgorICAgIDwvYm9keT4KKyAgICA8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428551</attachid>
            <date>2021-05-13 13:04:55 -0700</date>
            <delta_ts>2021-05-14 07:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224380-20210513220453.patch</filename>
            <type>text/plain</type>
            <size>43920</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2ZDdkNjU3ZjlhMTZl
M2JkYTllMGJlNDA0NTRiN2RiMTgxODQ3MS4uYTAyYjgyNmFjZjA0NjcxODljYjk0NzYxMGNjNTFm
Yjc4MTFiMDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNu
YXBdIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NDYxMDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIFNuYXBQb2ludFNlYXJjaCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRz
IGFsbCBhcmd1bWVudHMgbmVjZXNzYXJ5IGZvciBkb2luZworICAgICAgICBhIHNuYXAgcG9pbnQg
c2VhcmNoIGFuZCBub3cgY2FycmllcyB0aGUgdHlwZSBvZiBzbmFwIHBvaW50IHNlYXJjaCB0aGF0
IGlzIHRha2luZworICAgICAgICBwbGFjZS4gVGhpcyBpcyB1c2VkIHRvIGFsbG93IG1vbWVudHVt
IHNjcm9sbGluZyB0byAic3RpY2siIHRvIHNuYXAgcG9pbnRzIHdoaWxlCisgICAgICAgIG5vcm1h
bCBkaXJlY3Rpb25hbCBzbmFwcGluZyBkb2VzIG5vdC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgc2Vh
cmNoIHRvIGVsaW1pbmF0ZSB0aGUKKyAgICAgICAgdmVsb2NpdHkgcGFyYW1ldGVyLCB3aGljaCBp
cyBkZXRlcm1pbmVkIGJ5IGxvb2tpbmcgYXQgdGhlIG9yaWdpbmFsIHNjcm9sbCBvZmZzZXQuCisK
KyAgICAgICAgVGVzdDogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LWVzY2FwZS5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnVuU25hcFBvaW50
U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U25hcFBvaW50U2VhcmNoOjpydW4pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTbmFwUG9pbnRTZWFyY2g6OmNyZWF0ZURpcmVjdGlvbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0pOgorICAgICAgICAoV2ViQ29yZTo6
U25hcFBvaW50U2VhcmNoOjp2ZWxvY2l0eSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9y
QXhpc0FuZE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjphZGp1
c3RTY3JvbGxEZXN0aW5hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZv
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaDoKKwogMjAyMS0wNS0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIFdrMiBdIG1lZGlhL21lZGlhLWZyYWdtZW50
cy9UQzAwNTEuaHRtbCBpcyBmbGFrZXkgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzgxMGQ1NjJmYjkw
OTcwOTA1NDE5YWJhMjgyODE3Y2FlMWVjN2ZlNi4uZjdjOGY3NTcwZDVlZmI1ZmMwNTVmNDBmZGY3
ODlmZmQwMDU5ZjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNS0xMyAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Njcm9sbCBz
bmFwXSBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzgwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NjQ2MTA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBTbmFwUG9pbnRTZWFyY2ggZGF0YSBzdHJ1Y3R1cmUgdGhhdCBob2xk
cyBhbGwgYXJndW1lbnRzIG5lY2Vzc2FyeSBmb3IgZG9pbmcKKyAgICAgICAgYSBzbmFwIHBvaW50
IHNlYXJjaCBhbmQgbm93IGNhcnJpZXMgdGhlIHR5cGUgb2Ygc25hcCBwb2ludCBzZWFyY2ggdGhh
dCBpcyB0YWtpbmcKKyAgICAgICAgcGxhY2UuIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBtb21lbnR1
bSBzY3JvbGxpbmcgdG8gInN0aWNrIiB0byBzbmFwIHBvaW50cyB3aGlsZQorICAgICAgICBub3Jt
YWwgZGlyZWN0aW9uYWwgc25hcHBpbmcgZG9lcyBub3QuIFRoaXMgYWxzbyBhbGxvd3MgdGhlIHNl
YXJjaCB0byBlbGltaW5hdGUgdGhlCisgICAgICAgIHZlbG9jaXR5IHBhcmFtZXRlciwgd2hpY2gg
aXMgZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0IHRoZSBvcmlnaW5hbCBzY3JvbGwgb2Zmc2V0Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0
Q29udGVudE9mZnNldDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RU
YXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNj
cm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBPZmZzZXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9s
bFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJn
ZXRDb250ZW50T2Zmc2V0Ol0pOgorCisyMDIxLTA1LTA1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNuYXBdIHByb3hpbWl0eSBzY3Jv
bGwgc25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NDYxMDU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHJhbmdlcy4g
VGhpcyBhbGxvd3MgcHJveGltaXR5IGluZm9ybWF0aW9uIHRvIGJlIGhhbmRsZWQgZHVyaW5nIHNu
YXAgcG9pbnQgc2VsZWN0aW9uLgorICAgICAgICBUaGUgZ2VvbWV0cnkgd2lsbCBiZSB1c2VkIGlu
IGEgZnV0dXJlIHBhdGNoIHRvIGZvbGxvdyBzcGVjIGJlaGF2aW9yIGZvciBzbmFwCisgICAgICAg
IGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0IGFuZCB3aGVuIGhhbmRsaW5nIG1hc29u
cnkgbGF5b3V0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgY2hhbmdlIHJlbGllcyBv
biB0aGUgYmVoYXZpb3Igb2Ygc2Nyb2xsIHNuYXBwaW5nIHdoZW4KKyAgICAgICAgd2hlZWwgZXZl
bnRzIGNhdXNlIG1vbWVudHVtIHNjcm9sbGluZyB3aXRoIGEgdmVsb2NpdHkuIEl0J3MgdW5jbGVh
ciBob3cgdG8KKyAgICAgICAgdGVzdCB0aG9zZSBraW5kIG9mIGV2ZW50cyB3aXRoIHRoZSBFdmVu
dFNlbmRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9j
aXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JN
YWluRnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAg
ICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVu
ZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorCiAyMDIxLTA1
LTEzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDR0Rpc3BsYXlM
aXN0IGRlYnVnIGNvbmZpZ3VyYXRpb24gZmFpbHMgdG8gYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4
IDM3YjY2MzdiNDg2MGQ5OGNlMzgwNjhmNTFiMzFmZWNlNjhhYzZkMTUuLmExNjU5MDFhZjg2YmUw
NmE5MmI0YjMyNTZiMGMwMzVlOTViMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMTA2LDQ0ICsx
MDYsNDYgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNl
dEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0
eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25l
ZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8s
IFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlv
dXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8
TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQordGVtcGxh
dGUgPHR5cGVuYW1lIFNlYXJjaFR5cGUsIHR5cGVuYW1lIEluZm9UeXBlLCB0eXBlbmFtZSBMYXlv
dXRUeXBlPgorc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gcnVuU25hcFBv
aW50U2VhcmNoKFNlYXJjaFR5cGUmIHNlYXJjaCwgY29uc3QgSW5mb1R5cGUmIGluZm8pCiB7Ci0g
ICAgY29uc3QgYXV0byYgc25hcE9mZnNldHMgPSBpbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOwor
ICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhzZWFyY2gu
YXhpcyk7CiAgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNlYXJjaC5kZXN0aW5hdGlvbk9m
ZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAKLSAgICBpZiAob3JpZ2luYWxPZmZzZXRG
b3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkpIHsKLSAgICAgICAgYXV0byBmaXJzdFNu
YXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5B
bmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxT
bmFwcGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpOworICAgIGlmIChzZWFyY2gub3JpZ2lu
YWxPZmZzZXQpIHsKKyAgICAgICAgYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5k
Rmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0
cywgKnNlYXJjaC5vcmlnaW5hbE9mZnNldCwgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KTsKICAg
ICAgICAgaWYgKGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleC5oYXNWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zmc2V0
SW5kZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CiAgICAgfQogCi0gICAg
aWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0
KQorICAgIGlmIChzZWFyY2guZGVzdGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3Qo
KS5vZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJz
dCgpLm9mZnNldCwgMHUpOwogCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNu
YXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpCisgICAgaWYgKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNl
dCA+PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7
CiAKICAgICB1bnNpZ25lZCBsb3dlckluZGV4OwogICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7Ci0g
ICAgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCBzbmFwT2Zmc2V0cywgbG93ZXJJbmRleCwgdXBwZXJJbmRleCk7CisgICAgaW5k
aWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNlYXJjaC5kZXN0aW5hdGlvbk9m
ZnNldCwgc25hcE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwogICAgIExheW91dFR5
cGUgbG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7CiAg
ICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhd
Lm9mZnNldDsKIAotICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhl
aWdodCgpOwotICAgIGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHk8TGF5b3V0
VHlwZT4oaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgbG93ZXJTbmFw
UG9zaXRpb24sIHZpZXdwb3J0TGVuZ3RoKSkgewotICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OworICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBzZWFy
Y2guYXhpcyAgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gc2VhcmNoLnZpZXdwb3J0
U2l6ZS53aWR0aCgpIDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoIWlz
TmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVz
cywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCBsb3dlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRM
ZW5ndGgpKSB7CisgICAgICAgIGxvd2VyU25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9u
T2Zmc2V0OwogICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAg
ICB9CiAKLSAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5
cGU+KGluZm8uc3RyaWN0bmVzcywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHVwcGVyU25hcFBv
c2l0aW9uLCB2aWV3cG9ydExlbmd0aCkpIHsKLSAgICAgICAgdXBwZXJTbmFwUG9zaXRpb24gPSBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKKyAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9y
UHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9u
T2Zmc2V0LCB1cHBlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7CisgICAgICAgIHVw
cGVyU25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0OwogICAgICAgICB1cHBl
ckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9CisKKyAgICBmbG9hdCB2ZWxv
Y2l0eSA9IHNlYXJjaC52ZWxvY2l0eSgpOwogICAgIGlmICghc3RkOjphYnModmVsb2NpdHkpKSB7
CiAgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gKHVwcGVySW5kZXgg
PT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKLSAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9
IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dl
clNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0KTsKKyAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXggJiYgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0IC0gbG93ZXJTbmFwUG9zaXRpb24gPD0gdXBw
ZXJTbmFwUG9zaXRpb24gLSBzZWFyY2guZGVzdGluYXRpb25PZmZzZXQpOwogICAgICAgICByZXR1
cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFw
UG9zaXRpb24sIGxvd2VySW5kZXgpIDogc3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24s
IHVwcGVySW5kZXgpOwogICAgIH0KIApAQCAtMTUxLDEzICsxNTMsMTQgQEAgc3RhdGljIHN0ZDo6
cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4
aXMoY29uc3QgSW4KICAgICAvLyBhcyBsb25nIGFzIGEgc2Nyb2xsIHNuYXAgb2Zmc2V0IGlzIGNs
b3NlIGVub3VnaCBmb3IgcHJveGltaXR5IChvciB3ZSBhcmVuJ3QgdXNpbmcgcHJveGltaXR5KS4g
SWYgd2UgYXJlIGRvaW5nIGRpcmVjdGlvbmFsCiAgICAgLy8gc25hcHBpbmcsIHdlIHNob3VsZCBu
ZXZlciBzbmFwIHRvIGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9y
aWdpbmFsIHBvc2l0aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3JvbGwu
CiAgICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBzbmFw
IHBvaW50cy4KKyAgICBib29sIGFsd2F5c0FsbG93RXNjYXBpbmdTbmFwUG9zaXRpb24gPSBpbmZv
LnN0cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSB8fCBzZWFyY2gu
dHlwZSA9PSBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbDsKICAgICBpZiAodmVsb2Np
dHkgPCAwKSAgewotICAgICAgICBpZiAodXBwZXJJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldElu
ZGV4ICYmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5h
bE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQb3NpdGlvbikpCisgICAg
ICAgIGlmICh1cHBlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFhbHdheXNB
bGxvd0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5vcmlnaW5hbE9mZnNldCA+IHVwcGVy
U25hcFBvc2l0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNu
YXBQb3NpdGlvbiwgdXBwZXJJbmRleCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihs
b3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7CiAgICAgfQogCi0gICAgaWYgKGxvd2VySW5k
ZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIDwg
bG93ZXJTbmFwUG9zaXRpb24pKQorICAgIGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zm
c2V0SW5kZXggJiYgKCFhbHdheXNBbGxvd0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5v
cmlnaW5hbE9mZnNldCA8IGxvd2VyU25hcFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogfQpAQCAtMzU1LDE2
ICszNTgsMTYgQEAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWMKIAogfQogCi10ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBj
b25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBv
c2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDw+CitzdGQ6OnBh
aXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IExheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0
IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gY2xvc2Vz
dFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7CisgICAgcmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxMYXlvdXRTbmFw
UG9pbnRTZWFyY2gsIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgTGF5b3V0VW5pdD4oKnRo
aXMsIGluZm8pOwogfQogCi10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZTw+Ci1zdGQ6OnBhaXI8ZmxvYXQs
IHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0
PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRl
IDw+CitzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVu
KGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBj
bG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcygqdGhpcywgYXhpcywgdmlld3BvcnRTaXpl
LCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JE
aXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gcnVuU25hcFBvaW50U2VhcmNoPEZsb2F0
U25hcFBvaW50U2VhcmNoLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgZmxvYXQ+KCp0aGlz
LCBpbmZvKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkMTYwYzk1YmM0M2ZmOTgxYzBhNDdiZjM2
MDNjNDAwNmRjZWUzMWNjLi5kNjQxMzBmNGU3N2I3M2M0NTQ4ZjkyYTY5NTk4NjMzYmRlYWE2Mzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaApAQCAtNzIsOCArNzIsNiBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlPiBPdXRwdXRU
eXBlIGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpw
YWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1
c2luZyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD47CkBAIC04MiwxNCArODAsNTcgQEAgdXNpbmcgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0
UmVjdD47CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51
c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNP
UkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVs
b2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFw
cGluZykgY29uc3Q7CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7
CiAKK2VudW0gU25hcFBvaW50U2VhcmNoVHlwZSB7CisgICAgTm9uRGlyZWN0aW9uYWwsCisgICAg
RGlyZWN0aW9uYWwsCiAKLXRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1GbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Ci10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotV0VC
Q09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3Qg
TGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlv
bkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworICAgIC8vIE1vbWVudHVtIHNjcm9sbGlu
ZyBpcyBsaWtlIGRpcmVjdGlvbmFsIHNjcm9sbGluZywgYnV0IGRvZXMgbm90IGRvCisgICAgLy8g
YW55dGhpbmcgc3BlY2lhbCB0byBhbGxvdyBlc2NhcGluZyBzbmFwIHBvaW50cy4gSXQncyBhc3N1
bWVkIHRoYXQKKyAgICAvLyB0cmlnZ2VyaW5nIGEgbGFyZ2VyIGFtb3VudCBvZiBtb21lbnR1bSBz
aG91bGQgYmUgc3VmZmljaWVudCB0byBlc2NhcGUKKyAgICAvLyB0aGUgc25hcCBwb2ludC4KKyAg
ICBNb21lbnR1bSwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBT
aXplVHlwZSwgdHlwZW5hbWUgSW5mb1R5cGU+CitzdHJ1Y3QgU25hcFBvaW50U2VhcmNoIHsKKyAg
ICBTY3JvbGxFdmVudEF4aXMgYXhpczsKKyAgICBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxP
ZmZzZXQ7CisgICAgVW5pdFR5cGUgZGVzdGluYXRpb25PZmZzZXQ7CisgICAgU2l6ZVR5cGUgdmll
d3BvcnRTaXplOworICAgIFNuYXBQb2ludFNlYXJjaFR5cGUgdHlwZTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+IHJ1bihjb25zdCBJbmZvVHlwZSYp
OworCisgICAgc3RhdGljIFNuYXBQb2ludFNlYXJjaDxVbml0VHlwZSwgU2l6ZVR5cGUsIEluZm9U
eXBlPiBjcmVhdGVOb25EaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4aXMgYXhpcywgVW5pdFR5cGUg
ZGVzdGluYXRpb25PZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB7IGF4aXMsIFdURjo6bnVsbG9wdCwgZGVzdGluYXRpb25PZmZzZXQsIHZpZXdwb3J0
U2l6ZSwgU25hcFBvaW50U2VhcmNoVHlwZTo6Tm9uRGlyZWN0aW9uYWwgfTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU25hcFBvaW50U2VhcmNoPFVuaXRUeXBlLCBTaXplVHlwZSwgSW5mb1R5cGU+IGNy
ZWF0ZURpcmVjdGlvbmFsKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBVbml0VHlwZSBkZXN0aW5hdGlv
bk9mZnNldCwgVW5pdFR5cGUgb3JpZ2luYWxPZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB7IGF4aXMsIG9yaWdpbmFsT2Zmc2V0LCBkZXN0aW5hdGlv
bk9mZnNldCwgdmlld3BvcnRTaXplLCBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbCB9
OworICAgIH0KKworICAgIHN0YXRpYyBTbmFwUG9pbnRTZWFyY2g8VW5pdFR5cGUsIFNpemVUeXBl
LCBJbmZvVHlwZT4gY3JlYXRlTW9tZW50dW0oU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIFVuaXRUeXBl
IGRlc3RpbmF0aW9uT2Zmc2V0LCBVbml0VHlwZSBvcmlnaW5hbE9mZnNldCwgU2l6ZVR5cGUgdmll
d3BvcnRTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgYXhpcywgb3JpZ2luYWxPZmZzZXQs
IGRlc3RpbmF0aW9uT2Zmc2V0LCB2aWV3cG9ydFNpemUsIFNuYXBQb2ludFNlYXJjaFR5cGU6Ok1v
bWVudHVtIH07CisgICAgfQorCisgICAgZmxvYXQgdmVsb2NpdHkoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9yaWdpbmFsT2Zmc2V0ID8gZmxvYXQgeyBkZXN0aW5hdGlvbk9mZnNldCAtICpvcmln
aW5hbE9mZnNldCB9IDogMC4wOworICAgIH0KK307CisKK3VzaW5nIExheW91dFNuYXBQb2ludFNl
YXJjaCA9IFNuYXBQb2ludFNlYXJjaDxMYXlvdXRVbml0LCBMYXlvdXRTaXplLCBMYXlvdXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8+OwordXNpbmcgRmxvYXRTbmFwUG9pbnRTZWFyY2ggPSBTbmFwUG9p
bnRTZWFyY2g8ZmxvYXQsIEZsb2F0U2l6ZSwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+Owog
Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2ln
bmVkPiBMYXlvdXRTbmFwUG9pbnRTZWFyY2g6OnJ1bihjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm8mKTsKK3RlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQs
IHVuc2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0IEZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvJik7CiAKIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgg
PSBVSU5UX01BWDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA5MjU4ZTdlYWE0ZWRkNDdjNWU0MGNlMzZh
MDJlZWQ4NjFhM2E0ODE0Li4zN2QxOTExYWYwYjA4MmY4ZTFlMTRkMmU4ZmVmN2M0NmNmYWU1NzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmNwcApAQCAtMTczLDggKzE3MywxMSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdo
ZWVsRQogICAgICAgICBGbG9hdFBvaW50IG5ld0Zsb2F0T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgp
LmN1cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSk7CiAgICAg
ICAgIGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQobmV3RmxvYXRPZmZzZXQueCgpIC8gc2Nh
bGUsIG5ld0Zsb2F0T2Zmc2V0LnkoKSAvIHNjYWxlKTsKIAotICAgICAgICBhdXRvIG9mZnNldFgg
PSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0
LngoKSwgZGVsdGFYLCBvcmlnaW5hbE9mZnNldC54KCkpLmZpcnN0OwotICAgICAgICBhdXRvIG9m
ZnNldFkgPSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09m
ZnNldC55KCksIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKyAgICAgICAgYXV0
byBzZWFyY2ggPSBGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGlyZWN0aW9uYWwoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQueCgpLCBvcmlnaW5hbE9mZnNldC54KCks
IHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc2VhcmNoLnJ1
bihzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OworCisgICAgICAgIHNl
YXJjaCA9IEZsb2F0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVEaXJlY3Rpb25hbChTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBvcmlnaW5hbE9mZnNldC55KCksIHNjcm9s
bGFibGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRZID0gc2VhcmNoLnJ1bihzY3Jv
bGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OwogCiAgICAgICAgIGRlbHRhWCA9
IChvZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwogICAgICAgICBkZWx0YVkg
PSAob2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA4ZDYyZTAyOTYzMGU0OWFiZGFjZTkw
ODhmZjMxZWFlODJlZjJjNzU5Li5mMTQ5ZGNjMmU0M2E2ZmExN2MzZmMxMWQ2MGMxNTBkMDY2NGI2
ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC05
NCw5ICs5NCw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAgICAgICAgYXV0byBjdXJyZW50
T2Zmc2V0ID0gb2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbigpKTsKICAgICAgICAg
YXV0byBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0ICsgZGVsdGE7CiAgICAgICAgIGlmIChvcmll
bnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNl
dFgobV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgbmV3T2Zmc2V0LngoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNl
dC54KCkpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRYKG1fc2Nyb2xsQ29udHJvbGxlci5h
ZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5ld09m
ZnNldC54KCksIGN1cnJlbnRPZmZzZXQueCgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG5ld09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlv
bihTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtdWx0aXBsaWVyLCBj
dXJyZW50T2Zmc2V0LnkoKSkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFkobV9zY3JvbGxD
b250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIG5ld09mZnNldC55KCksIGN1cnJlbnRPZmZzZXQueSgpKSk7CiAgICAgICAgIGF1dG8gbmV3
RGVsdGEgPSBuZXdPZmZzZXQgLSBjdXJyZW50T2Zmc2V0OwogCiAgICAgICAgIGlmIChvcmllbnRh
dGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQpAQCAtNDE3LDE1ICs0MTcsMTMgQEAgZmxvYXQg
U2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsKIAogICAgIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKLSAgICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAg
IGlmIChtZXRob2QgPT0gU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25h
bCkgewogICAgICAgICBGbG9hdFNpemUgc2Nyb2xsT3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3Jv
bGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7CiAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9
IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24odGhpcy0+Y3VycmVudFBv
c2l0aW9uKCksIHNjcm9sbE9yaWdpbik7CiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0ID0gYXhpcyA9
PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBjdXJyZW50T2Zmc2V0LngoKSA6IGN1cnJl
bnRPZmZzZXQueSgpOwotICAgICAgICB2ZWxvY2l0eSA9IG5ld09mZnNldCAtIChheGlzID09IFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IGN1cnJlbnRPZmZzZXQueCgpIDogY3VycmVudE9m
ZnNldC55KCkpOwogICAgIH0KIAotICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0
U2Nyb2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZz
ZXQpOworICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24oYXhpcywgbmV3T2Zmc2V0LCBvcmlnaW5hbE9mZnNldCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShtZXRob2QpOwogICAgIFVOVVNFRF9QQVJBTShheGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKaW5kZXggYjlkNmJiZDU0ODY0YTJmNTc3NGRj
ZWJmY2U1ZTA5ZTZmZjFhZTQyZi4uNWMyN2M2YmQ0OWFjZmY1NzBhNWRmNzY1OTU0MjdjN2EyNzRl
MTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAK
QEAgLTE1OCw5ICsxNTgsMTAgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Ny
b2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKICAgICAgICAgcmV0
dXJuOwogCiAgICAgTGF5b3V0VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgo
TGF5b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zm
c2V0KSwgc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCk7Ci0KICAgICBMYXlvdXRTaXplIHZpZXdw
b3J0U2l6ZShtX2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9y
dFNpemUoKS5oZWlnaHQoKSk7Ci0gICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUu
c25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGNs
YW1wZWRPZmZzZXQsIDApLnNlY29uZDsKKyAgICBhdXRvIHNlYXJjaCA9IExheW91dFNuYXBQb2lu
dFNlYXJjaDo6Y3JlYXRlTm9uRGlyZWN0aW9uYWwoYXhpcywgY2xhbXBlZE9mZnNldCwgdmlld3Bv
cnRTaXplKTsKKworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc2VhcmNoLnJ1bihzbmFwU3Rh
dGUuc25hcE9mZnNldEluZm8oKSkuc2Vjb25kOwogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2
OCw3ICsxNjksNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFw
SW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIHNldEFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoYXhpcywgYWN0aXZlSW5kZXgpOwogfQogCi1mbG9hdCBTY3JvbGxD
b250cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywg
ZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4g
b3JpZ2luYWxPZmZzZXQpCitmbG9hdCBTY3JvbGxDb250cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0
aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9w
dGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFw
KCkpCiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKQEAgLTE3OCwxMiArMTc5LDE2
IEBAIGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9s
bEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgaWYgKCFzbmFwT2Zmc2V0cy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0czsKLSAgICBpZiAob3JpZ2luYWxPZmZz
ZXQuaGFzVmFsdWUoKSkKLSAgICAgICAgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzID0gTGF5
b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSk7Cisg
ICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KGRlc3Rp
bmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOworCiAgICAgTGF5b3V0
U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGll
bnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25h
cFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRT
aXplLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFj
dG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJzdDsKLSAg
ICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBz
ZWFyY2ggPSAgTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbChheGlz
LCBkZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgaWYg
KG9yaWdpbmFsT2Zmc2V0KSB7CisgICAgICAgIGF1dG8gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVu
aXRzID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0
b3IoKSk7CisgICAgICAgIHNlYXJjaCA9IExheW91dFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGly
ZWN0aW9uYWwoYXhpcywgZGVzdGluYXRpb25PZmZzZXRJbkxheW91dFVuaXRzLCBvcmlnaW5hbE9m
ZnNldEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHNl
YXJjaC5ydW4oc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkpLmZpcnN0ICogbV9jbGllbnQucGFn
ZVNjYWxlRmFjdG9yKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29u
dHJvbGxlci5oCmluZGV4IDkzYWY1OGIzMzNlOGM0ZDMyZGUzZDEyNDAzM2E5NWFlZmJiMzE2YWEu
LmJhYjcwZDlhZTIyY2QyMzk2NWY0NWZjMDUwMzY0YzI0YTgyOGYxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXMpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9s
bGFibGVBcmVhJik7CiAgICAgdm9pZCB1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5
LCBPcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxPZmZzZXQpOworICAgIGZsb2F0IGFkanVzdFNjcm9s
bERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9w
dGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRv
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmNwcAppbmRleCA1YTA2ZDg4NzBhODU0ZDg1MjY0MTAwNGZkY2U4OWFmYmFhMDg2NzNhLi45
MWE1ZGVlZWU5MDZlNTcyZmJkM2U2NzI2NmY5YTc5MWIwY2YzNzExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCkBAIC01MSw4
ICs1MSw4IEBAIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9y
U3RhdGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBjb25zCiAKICAgICBtX21vbWVudHVtQ2FsY3Vs
YXRvciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9y
LT5wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFgg
PSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWws
IHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgp
LCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VT
Y2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7Ci0gICAgZmxv
YXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3
cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJn
ZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNu
YXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwg
cHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgbV9hY3RpdmVTbmFwSW5k
ZXhYKTsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5o
ZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRp
Y3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBtX2FjdGl2ZVNuYXBJbmRleFkp
OwogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsg
dGFyZ2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSw3ICs5
MSw3IEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRl
ZFNjcm9sbE9mZnNldChNb25vdG9uaWNUaW1lIGN1CiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxj
dWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAot
ZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0
KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxv
YXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zm
c2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91dEFj
dGl2ZVNuYXBJbmRleCkgY29uc3QKK2Zsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRT
aXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZz
ZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCB1bnNpZ25lZCYgb3V0
QWN0aXZlU25hcEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0g
bV9zbmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CiAgICAgaWYgKHNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSkgewpAQCAtOTksNyArOTksOSBAQCBmbG9hdCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMs
CiAgICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihwcmVkaWN0ZWRPZmZzZXQsIDAsIG1heFNj
cm9sbE9mZnNldCk7CiAgICAgfQogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zm
c2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6
ZSB9LCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0
YSwgTGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpLmZpcnN0OworICAgIGF1dG8g
c2VhcmNoID0gTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVNb21lbnR1bShheGlzLCBMYXlv
dXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIExheW91dFVuaXQoc3RhcnRPZmZz
ZXQgLyBwYWdlU2NhbGUpLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXplIH0pOworICAgIGZsb2F0
IHRhcmdldE9mZnNldCA9IHNlYXJjaC5ydW4obV9zbmFwT2Zmc2V0c0luZm8pLmZpcnN0OworCiAg
ICAgZmxvYXQgbWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zm
c2V0cy5maXJzdCgpLm9mZnNldCk7CiAgICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0
ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQp
OwogICAgIHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11
bVRhcmdldE9mZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCBlNjIwY2U1MzE1MTRl
MGIxZTVkZjk2YjllZGM3NTZiYmMxOWM2Y2M1Li4xYWE0MWUzNzJlYjcyMmU2NGRlYzBmOWVkYTBl
MzM5OGNlOGQ5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdHJh
bnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9h
dCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0
U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zm
c2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlh
bERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsKKyAgICBmbG9hdCB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0
LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgdW5zaWduZWQmIG91dEFj
dGl2ZVNuYXBJbmRleCkgY29uc3Q7CiAgICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRl
KFNjcm9sbFNuYXBTdGF0ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQppbmRleCA1NWFjYjA5Y2I5OGMzMjU3MmNlMDM5MmIwMDVkMDllMzgx
NmMwYWIzLi4xMTJkZmEyZmEzYjZjYTY0ZTM4MjVkMGFjMDc0N2Q0ZGExZDk2YzZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTU5
Myw4ICsxNTkzLDcgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICAgICAgICAgIG9ic2N1
cmVkSW5zZXQgPSBbc2VsZiBfY29tcHV0ZWRPYnNjdXJlZEluc2V0XTsKIAogICAgICAgICBDR1Jl
Y3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3Qoc2VsZi5ib3VuZHMsIG9i
c2N1cmVkSW5zZXQpOwotCi0gICAgICAgIGNvb3JkaW5hdG9yLT5hZGp1c3RUYXJnZXRDb250ZW50
T2Zmc2V0Rm9yU25hcHBpbmcobWF4U2Nyb2xsT2Zmc2V0cywgdmVsb2NpdHksIHVub2JzY3VyZWRS
ZWN0Lm9yaWdpbi55LCB0YXJnZXRDb250ZW50T2Zmc2V0KTsKKyAgICAgICAgY29vcmRpbmF0b3It
PmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhtYXhTY3JvbGxPZmZzZXRzLCB1
bm9ic2N1cmVkUmVjdC5vcmlnaW4ueSwgc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCB0YXJnZXRD
b250ZW50T2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDBlNTZlNDlhYTcyZDNjOGVjNTY1NDJjNDUy
MDM2NDMxMWM1MGIxODIuLmUwNDhhMjRmZWVlN2EwNTE5ZTY3ZDI2NWFhYmRlMDAzYjllNmZkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAt
OTksOSArOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3Rh
cnRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2b2lkIHNjcm9sbGluZ1Ry
ZWVOb2RlRGlkRW5kU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICB2b2lkIGFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JT
bmFwcGluZyhDR1NpemUgbWF4U2Nyb2xsRGltZW5zaW9ucywgQ0dQb2ludCB2ZWxvY2l0eSwgQ0dG
bG9hdCB0b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCk7CisgICAgdm9pZCBh
ZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbE9mZnNl
dHMsIENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQgY3VycmVudENvbnRlbnRPZmZzZXQsIENHUG9p
bnQqIHRhcmdldENvbnRlbnRPZmZzZXQpOworCiAgICAgYm9vbCBoYXNBY3RpdmVTbmFwUG9pbnQo
KSBjb25zdDsKLSAgICBDR1BvaW50IG5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNu
YXBPZmZzZXQoQ0dGbG9hdCB0b3BJbnNldCwgY29uc3QgQ0dQb2ludCYpIGNvbnN0OworICAgIENH
UG9pbnQgbmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0
IHRvcEluc2V0LCBjb25zdCBDR1BvaW50Jik7CiAgICAgYm9vbCBzaG91bGRTZXRTY3JvbGxWaWV3
RGVjZWxlcmF0aW9uUmF0ZUZhc3QoKSBjb25zdDsKICNlbmRpZgogI2VuZGlmCkBAIC0xMjAsNyAr
MTIxLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9v
bCBzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhp
cykgY29uc3Q7Ci0gICAgZmxvYXQgY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxp
bmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxv
YXQgdmVsb2NpdHksIHVuc2lnbmVkJiBjbG9zZXN0SW5kZXgpIGNvbnN0OworICAgIGZsb2F0IGNs
b3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IGN1cnJlbnRTY3JvbGxPZmZzZXQs
IHVuc2lnbmVkJiBjbG9zZXN0SW5kZXgpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHNlbmRV
SVN0YXRlQ2hhbmdlZElmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggY2M0ZWFkNjU3M2VmMDAz
ZWVmOTBmNzAyMzM3MzExZDMwMzM4YTllNy4uM2E3NDdkNGJiYTZjMDVmZjM3Y2U5NjI3MTRhZTI2
M2Q3NDY0NzE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMTg1LDE3ICsxODUsMTcgQEAgdm9pZCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojplc3RhYmxpc2hMYXllclRyZWVTY3JvbGxpbmdSZWxh
dGlvbnMoY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JT
bmFwcGluZyhDR1NpemUgbWF4U2Nyb2xsT2Zmc2V0cywgQ0dQb2ludCB2ZWxvY2l0eSwgQ0dGbG9h
dCB0b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCkKK3ZvaWQgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBw
aW5nKENHU2l6ZSBtYXhTY3JvbGxPZmZzZXRzLCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50IGN1
cnJlbnRDb250ZW50T2Zmc2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KQogewogICAg
IC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZzZXRzIGlzIHRvIGVuc3Vy
ZSB0aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5kaW5nIHdoZW4gc2Nyb2xs
aW5nIHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgogICAgIGlmIChzaG91bGRTbmFwRm9yTWFpbkZy
YW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpIHsKLSAg
ICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JN
YWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB0
YXJnZXRDb250ZW50T2Zmc2V0LT54LCB2ZWxvY2l0eS54LCBtX2N1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9z
ZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHRhcmdldENvbnRlbnRPZmZzZXQtPngsIGN1cnJlbnRDb250ZW50T2Zm
c2V0LngsIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIGlmICh0
YXJnZXRDb250ZW50T2Zmc2V0LT54ID4gMCAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT54IDwgbWF4
U2Nyb2xsT2Zmc2V0cy53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPngg
PSBzdGQ6Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0cy53aWR0aCwgcG90ZW50aWFsU25hcFBv
c2l0aW9uKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGlu
ZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSkgewotICAgICAgICBmbG9hdCBw
b3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB0YXJnZXRDb250ZW50T2Zm
c2V0LT55LCB2ZWxvY2l0eS55LCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKKyAg
ICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JN
YWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdGFy
Z2V0Q29udGVudE9mZnNldC0+eSwgY3VycmVudENvbnRlbnRPZmZzZXQueSwgbV9jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgICAgICBwb3RlbnRp
YWxTbmFwUG9zaXRpb24gLT0gdG9wSW5zZXQ7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3Jv
bGxpbmcoU2Nyb2xsRXZlbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotZmxvYXQgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3Jv
bGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9h
dCB2ZWxvY2l0eSwgdW5zaWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKK2Zsb2F0IFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Ny
b2xsaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxv
YXQgY3VycmVudFNjcm9sbE9mZnNldCwgdW5zaWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKIHsK
ICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUo
KTsKICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKQEAg
LTIzMCw3ICsyMzAsOSBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpj
bG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhTYwogCiAgICAgZmxvYXQgc2Nh
bGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5
LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0
OwotICAgIHN0ZDo6dGllKHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc25h
cE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHJvb3RTY3JvbGxpbmdOb2RlLT5s
YXlvdXRWaWV3cG9ydCgpLnNpemUoKSwgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5
KTsKKworICAgIGF1dG8gc2VhcmNoID0gV2ViQ29yZTo6RmxvYXRTbmFwUG9pbnRTZWFyY2g6OmNy
ZWF0ZU1vbWVudHVtKGF4aXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCBjdXJyZW50U2Nyb2xs
T2Zmc2V0LCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXplKCkpOworICAg
IHN0ZDo6dGllKHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc2VhcmNoLnJ1
bihzbmFwT2Zmc2V0c0luZm8pOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAqIG1f
d2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCkBAIC0yNTgsNyArMjYw
LDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpoYXNBY3RpdmVTbmFw
UG9pbnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotQ0dQb2ludCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0
ZWRTbmFwT2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQb2lu
dCkgY29uc3QKK0NHUG9pbnQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVz
dEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBj
b25zdCBDR1BvaW50JiBjdXJyZW50UG9pbnQpCiB7CiAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9
IGN1cnJlbnRQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IDhmYzY2MTVmNzZmM2M5ZmFkMDBm
NTk0YjM0YjEzZGQ0NGM5MjNjZDAuLjBlNTY4NzA3YzEyZmIyMWUwNGQ0N2FmZDI2ZDZkYTRmZDU1
N2IxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTEwOSwxNCArMTA5LDE2IEBAIC0gKHZvaWQpc2Ny
b2xsVmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVs
b2NpdHk6KENHUG9pCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0U2l6ZShzdGF0aWNf
Y2FzdDxmbG9hdD4oQ0dSZWN0R2V0V2lkdGgoW3Njcm9sbFZpZXcgYm91bmRzXSkpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oQ0dSZWN0R2V0SGVpZ2h0KFtzY3JvbGxWaWV3IGJvdW5kc10pKSk7CiAgICAg
Y29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKTsKICAgICBpZiAoIXNuYXBPZmZzZXRz
SW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3Bv
dGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFw
T2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXpl
LCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBzZWFyY2ggPSBX
ZWJDb3JlOjpGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0oV2ViQ29yZTo6U2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0LCBzY3JvbGxWaWV3LmNv
bnRlbnRPZmZzZXQueCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25h
cFBvc2l0aW9uLCBpbmRleF0gPSBzZWFyY2gucnVuKHNuYXBPZmZzZXRzSW5mbyk7CiAgICAgICAg
IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFy
Z2V0ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndp
ZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQ
b3NpdGlvbjsKICAgICB9CiAKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24s
IGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxv
Y2l0eS54KTsKKyAgICAgICAgYXV0byBzZWFyY2ggPSBXZWJDb3JlOjpGbG9hdFNuYXBQb2ludFNl
YXJjaDo6Y3JlYXRlTW9tZW50dW0oV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwg
dmVydGljYWxUYXJnZXQsIHNjcm9sbFZpZXcuY29udGVudE9mZnNldC55LCB2aWV3cG9ydFNpemUp
OworICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNlYXJjaC5y
dW4oc25hcE9mZnNldHNJbmZvKTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7
CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNj
cm9sbFZpZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9m
ZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZjE0ZWM1YTRiOTE4NDE3
MzdkY2JlZTYyYzBiYmIxNTU4N2FkZTk0Li41ZTQzM2JjMjlhMDljNWUwMDNmZGEyZDk3OWU3ZGQy
OTQxNmQ1OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDUtMTMgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtTY3JvbGwgc25hcF0gcHJv
eGltaXR5IHNjcm9sbCBzbmFwcGluZyBpcyBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzY0NjEwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgU25hcFBvaW50U2VhcmNoIGRhdGEgc3RydWN0dXJlIHRoYXQgaG9sZHMgYWxsIGFy
Z3VtZW50cyBuZWNlc3NhcnkgZm9yIGRvaW5nCisgICAgICAgIGEgc25hcCBwb2ludCBzZWFyY2gg
YW5kIG5vdyBjYXJyaWVzIHRoZSB0eXBlIG9mIHNuYXAgcG9pbnQgc2VhcmNoIHRoYXQgaXMgdGFr
aW5nCisgICAgICAgIHBsYWNlLiBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgbW9tZW50dW0gc2Nyb2xs
aW5nIHRvICJzdGljayIgdG8gc25hcCBwb2ludHMgd2hpbGUKKyAgICAgICAgbm9ybWFsIGRpcmVj
dGlvbmFsIHNuYXBwaW5nIGRvZXMgbm90LiBUaGlzIGFsc28gYWxsb3dzIHRoZSBzZWFyY2ggdG8g
ZWxpbWluYXRlIHRoZQorICAgICAgICB2ZWxvY2l0eSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGRldGVy
bWluZWQgYnkgbG9va2luZyBhdCB0aGUgb3JpZ2luYWwgc2Nyb2xsIG9mZnNldC4KKworICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hp
bWl0eS1lc2NhcGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktZXNjYXBlLmh0bWw6
IEFkZGVkLgorCiAyMDIxLTA1LTEzICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNPUyBXazFdIG1lZGlhL3ZpZGVvLXBsYXliYWNrLXF1YWxpdHkuaHRt
bCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1lc2NhcGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LWVzY2FwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjllY2U0ZjAwM2ZiZTNjZjY0NDEyMTAwMTI5NDRjZGFkMmYyYTJiMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXByb3hpbWl0eS1lc2NhcGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Nj
cm9sbGluZyBib2R5IHdpdGggMiBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAg
dG8gdGhlIHRvcD8gWUVTCistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8g
Tk8KKy0gMAorU2Nyb2xsaW5nIGJvZHkgd2l0aCA2MCBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Ny
b2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBz
ZWNvbmQgYm94PyBZRVMKKy0gNjAwCitTY3JvbGxpbmcgYm9keSB3aXRoIDE1IGRyYWcgdGlja3MK
Ky0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5n
IHNuYXAgdG8gdGhlIHNlY29uZCBib3g/IFlFUworLSA2MDAKK1Njcm9sbGluZyBib2R5IHdpdGgg
MTUgZHJhZyB0aWNrcworLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5PCist
IERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gWUVTCistIDYwMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1wcm94aW1pdHktZXNjYXBlLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktZXNjYXBlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTA4YzU3YTdiNjg1ZmNlMGUwOWRhM2JkNTUxYTM5OGE4NGQwOGNiNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1lc2NhcGUuaHRtbApAQCAtMCwwICsxLDgx
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICBodG1sIHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5
IHByb3hpbWl0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJvZHkgeworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogbm9uZTsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgICAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuYXJlYSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAl
OworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIG9wYWNpdHk6
IDAuNTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICNvdXRwdXQgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
OiBmaXhlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgbGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJy
PiI7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHZlcnRpY2FsU2Nyb2xsSW5Cb2R5KGRy
YWdEZWx0YXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZShgU2Nyb2xsaW5nIGJvZHkgd2l0aCAke2Ry
YWdEZWx0YXMubGVuZ3RofSBkcmFnIHRpY2tzYCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh3aW5kb3cuaW5uZXJXaWR0aCAvIDIsIHdp
bmRvdy5pbm5lckhlaWdodCAvIDIpOworICAgICAgICAgICAgICAgIGRyYWdEZWx0YXMuZm9yRWFj
aCgoZGVsdGEsIGkpID0+IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCBkZWx0YSwgIm5vbmUiLCBpID09IDAgPyAiYmVnYW4iIDogImNoYW5nZWQi
KSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICJub25lIiwgImVuZGVkIik7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IGFyZWFIZWlnaHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuYXJl
YSIpLmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlkIHRoZSBz
Y3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyAke2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wID09IDAgPyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRl
KGAtIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gJHtkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9PSBhcmVhSGVpZ2h0ID8gIllFUyIgOiAiTk8ifWApOwor
ICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSAke2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQu
c2Nyb2xsVG9wfWApOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDAp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
IHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiVG8gbWFu
dWFsbHkgdGVzdCwgdmVyaWZ5IHRoYXQgc2Nyb2xsaW5nIG5lYXIgb25lIG9mIHRoZSBib3VuZGFy
aWVzIGJldHdlZW4gdGhlIGNvbG9yZWQgYm94ZXMiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgi
c25hcHMgdG8gdGhlIGVkZ2Ugb2YgdGhlIG5lYXJlc3QgY29sb3JlZCBib3gsIGJ1dCBzY3JvbGxp
bmcgc29tZXdoZXJlIG5lYXIgdGhlIG1pZGRsZSBvZiB0d28iKTsKKyAgICAgICAgICAgICAgICB3
cml0ZSgiYm94ZXMgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9sbCBvZmZzZXQgdG8gc25hcC4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxl
dCBhcmVhSGVpZ2h0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmFyZWEiKS5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbEluQm9keShuZXcgQXJyYXkoMikuZmlsbCgt
MSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkJvZHkobmV3
IEFycmF5KE1hdGgucm91bmQoYXJlYUhlaWdodCAvIDEwKSkuZmlsbCgtMSkpKQorICAgICAgICAg
ICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Cb2R5KG5ldyBBcnJheSgxNSkuZmls
bCgtMSkpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Cb2R5
KG5ldyBBcnJheSgxNSkuZmlsbCgxKSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+CisgICAgICAgIDxkaXYgY2xhc3M9ImFy
ZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBj
bGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9k
aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBh
cXVhOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiB5ZWxsb3c7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7Ij48L2Rpdj4KKyAgICA8L2JvZHk+CisgICAgPGRp
diBpZD0ib3V0cHV0Ij48L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428618</attachid>
            <date>2021-05-14 07:06:18 -0700</date>
            <delta_ts>2021-06-24 00:13:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224380-20210514160616.patch</filename>
            <type>text/plain</type>
            <size>39234</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2ZDdkNjU3ZjlhMTZl
M2JkYTllMGJlNDA0NTRiN2RiMTgxODQ3MS4uYTAyYjgyNmFjZjA0NjcxODljYjk0NzYxMGNjNTFm
Yjc4MTFiMDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNu
YXBdIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NDYxMDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIFNuYXBQb2ludFNlYXJjaCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRz
IGFsbCBhcmd1bWVudHMgbmVjZXNzYXJ5IGZvciBkb2luZworICAgICAgICBhIHNuYXAgcG9pbnQg
c2VhcmNoIGFuZCBub3cgY2FycmllcyB0aGUgdHlwZSBvZiBzbmFwIHBvaW50IHNlYXJjaCB0aGF0
IGlzIHRha2luZworICAgICAgICBwbGFjZS4gVGhpcyBpcyB1c2VkIHRvIGFsbG93IG1vbWVudHVt
IHNjcm9sbGluZyB0byAic3RpY2siIHRvIHNuYXAgcG9pbnRzIHdoaWxlCisgICAgICAgIG5vcm1h
bCBkaXJlY3Rpb25hbCBzbmFwcGluZyBkb2VzIG5vdC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgc2Vh
cmNoIHRvIGVsaW1pbmF0ZSB0aGUKKyAgICAgICAgdmVsb2NpdHkgcGFyYW1ldGVyLCB3aGljaCBp
cyBkZXRlcm1pbmVkIGJ5IGxvb2tpbmcgYXQgdGhlIG9yaWdpbmFsIHNjcm9sbCBvZmZzZXQuCisK
KyAgICAgICAgVGVzdDogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LWVzY2FwZS5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnVuU25hcFBvaW50
U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U25hcFBvaW50U2VhcmNoOjpydW4pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTbmFwUG9pbnRTZWFyY2g6OmNyZWF0ZURpcmVjdGlvbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0pOgorICAgICAgICAoV2ViQ29yZTo6
U25hcFBvaW50U2VhcmNoOjp2ZWxvY2l0eSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9y
QXhpc0FuZE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjphZGp1
c3RTY3JvbGxEZXN0aW5hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZv
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaDoKKwogMjAyMS0wNS0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIFdrMiBdIG1lZGlhL21lZGlhLWZyYWdtZW50
cy9UQzAwNTEuaHRtbCBpcyBmbGFrZXkgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzgxMGQ1NjJmYjkw
OTcwOTA1NDE5YWJhMjgyODE3Y2FlMWVjN2ZlNi4uYmQzOTgyYzM4ODJiZGFjOTQzNWFiOWFjZjg1
NTUxNjEwYWQ5MzgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAyMS0wNS0xMyAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Njcm9sbCBz
bmFwXSBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzgwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NjQ2MTA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBTbmFwUG9pbnRTZWFyY2ggZGF0YSBzdHJ1Y3R1cmUgdGhhdCBob2xk
cyBhbGwgYXJndW1lbnRzIG5lY2Vzc2FyeSBmb3IgZG9pbmcKKyAgICAgICAgYSBzbmFwIHBvaW50
IHNlYXJjaCBhbmQgbm93IGNhcnJpZXMgdGhlIHR5cGUgb2Ygc25hcCBwb2ludCBzZWFyY2ggdGhh
dCBpcyB0YWtpbmcKKyAgICAgICAgcGxhY2UuIFRoaXMgaXMgdXNlZCB0byBhbGxvdyBtb21lbnR1
bSBzY3JvbGxpbmcgdG8gInN0aWNrIiB0byBzbmFwIHBvaW50cyB3aGlsZQorICAgICAgICBub3Jt
YWwgZGlyZWN0aW9uYWwgc25hcHBpbmcgZG9lcyBub3QuIFRoaXMgYWxzbyBhbGxvd3MgdGhlIHNl
YXJjaCB0byBlbGltaW5hdGUgdGhlCisgICAgICAgIHZlbG9jaXR5IHBhcmFtZXRlciwgd2hpY2gg
aXMgZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0IHRoZSBvcmlnaW5hbCBzY3JvbGwgb2Zmc2V0Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHdheSB0
byB0cmlnZ2VyIHNtYWxsIG1vbWVudHVtIHNjcm9sbHMKKyAgICAgICAgd2l0aCB0aGUgZXZlbnQg
c2VuZGVyIHdoaWNoIGFyZSBuZWNlc3NhcnkgZm9yIHRlc3RpbmcgdGhpcyBmZWF0dXJlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29u
dGVudE9mZnNldDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RUYXJn
ZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBPZmZzZXQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZp
ZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRD
b250ZW50T2Zmc2V0Ol0pOgorCisyMDIxLTA1LTA1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbU2Nyb2xsIHNuYXBdIHByb3hpbWl0eSBzY3JvbGwg
c25hcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQzODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NDYxMDU5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHJhbmdlcy4gVGhp
cyBhbGxvd3MgcHJveGltaXR5IGluZm9ybWF0aW9uIHRvIGJlIGhhbmRsZWQgZHVyaW5nIHNuYXAg
cG9pbnQgc2VsZWN0aW9uLgorICAgICAgICBUaGUgZ2VvbWV0cnkgd2lsbCBiZSB1c2VkIGluIGEg
ZnV0dXJlIHBhdGNoIHRvIGZvbGxvdyBzcGVjIGJlaGF2aW9yIGZvciBzbmFwCisgICAgICAgIGFy
ZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0IGFuZCB3aGVuIGhhbmRsaW5nIG1hc29ucnkg
bGF5b3V0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgY2hhbmdlIHJlbGllcyBvbiB0
aGUgYmVoYXZpb3Igb2Ygc2Nyb2xsIHNuYXBwaW5nIHdoZW4KKyAgICAgICAgd2hlZWwgZXZlbnRz
IGNhdXNlIG1vbWVudHVtIHNjcm9sbGluZyB3aXRoIGEgdmVsb2NpdHkuIEl0J3MgdW5jbGVhciBo
b3cgdG8KKyAgICAgICAgdGVzdCB0aG9zZSBraW5kIG9mIGV2ZW50cyB3aXRoIHRoZSBFdmVudFNl
bmRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5
OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWlu
RnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAg
ICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERy
YWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorCiAyMDIxLTA1LTEz
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDR0Rpc3BsYXlMaXN0
IGRlYnVnIGNvbmZpZ3VyYXRpb24gZmFpbHMgdG8gYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IDM3
YjY2MzdiNDg2MGQ5OGNlMzgwNjhmNTFiMzFmZWNlNjhhYzZkMTUuLmExNjU5MDFhZjg2YmUwNmE5
MmI0YjMyNTZiMGMwMzVlOTViMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMTA2LDQ0ICsxMDYs
NDYgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJl
dHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBl
bmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4g
Y2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlvdXRU
eXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5
b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQordGVtcGxhdGUg
PHR5cGVuYW1lIFNlYXJjaFR5cGUsIHR5cGVuYW1lIEluZm9UeXBlLCB0eXBlbmFtZSBMYXlvdXRU
eXBlPgorc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gcnVuU25hcFBvaW50
U2VhcmNoKFNlYXJjaFR5cGUmIHNlYXJjaCwgY29uc3QgSW5mb1R5cGUmIGluZm8pCiB7Ci0gICAg
Y29uc3QgYXV0byYgc25hcE9mZnNldHMgPSBpbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOworICAg
IGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhzZWFyY2guYXhp
cyk7CiAgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNl
dCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAKLSAgICBpZiAob3JpZ2luYWxPZmZzZXRGb3JE
aXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkpIHsKLSAgICAgICAgYXV0byBmaXJzdFNuYXBT
dG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmRE
ZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFw
cGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpOworICAgIGlmIChzZWFyY2gub3JpZ2luYWxP
ZmZzZXQpIHsKKyAgICAgICAgYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmly
c3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywg
KnNlYXJjaC5vcmlnaW5hbE9mZnNldCwgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICAg
ICAgaWYgKGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleC5oYXNWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zmc2V0SW5k
ZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CiAgICAgfQogCi0gICAgaWYg
KHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQor
ICAgIGlmIChzZWFyY2guZGVzdGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5v
ZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgp
Lm9mZnNldCwgMHUpOwogCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBP
ZmZzZXRzLmxhc3QoKS5vZmZzZXQpCisgICAgaWYgKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCA+
PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7CiAK
ICAgICB1bnNpZ25lZCBsb3dlckluZGV4OwogICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7Ci0gICAg
aW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBzbmFwT2Zmc2V0cywgbG93ZXJJbmRleCwgdXBwZXJJbmRleCk7CisgICAgaW5kaWNl
c09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNl
dCwgc25hcE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwogICAgIExheW91dFR5cGUg
bG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7CiAgICAg
TGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdLm9m
ZnNldDsKIAotICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdo
dCgpOwotICAgIGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHk8TGF5b3V0VHlw
ZT4oaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgbG93ZXJTbmFwUG9z
aXRpb24sIHZpZXdwb3J0TGVuZ3RoKSkgewotICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0OworICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBzZWFyY2gu
YXhpcyAgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gc2VhcmNoLnZpZXdwb3J0U2l6
ZS53aWR0aCgpIDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoIWlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywg
c2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCBsb3dlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5n
dGgpKSB7CisgICAgICAgIGxvd2VyU25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zm
c2V0OwogICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9
CiAKLSAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+
KGluZm8uc3RyaWN0bmVzcywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHVwcGVyU25hcFBvc2l0
aW9uLCB2aWV3cG9ydExlbmd0aCkpIHsKLSAgICAgICAgdXBwZXJTbmFwUG9zaXRpb24gPSBzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldDsKKyAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zm
c2V0LCB1cHBlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7CisgICAgICAgIHVwcGVy
U25hcFBvc2l0aW9uID0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0OwogICAgICAgICB1cHBlcklu
ZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9CisKKyAgICBmbG9hdCB2ZWxvY2l0
eSA9IHNlYXJjaC52ZWxvY2l0eSgpOwogICAgIGlmICghc3RkOjphYnModmVsb2NpdHkpKSB7CiAg
ICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gKHVwcGVySW5kZXggPT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKLSAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dlclNu
YXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
KTsKKyAgICAgICAgICAgIHx8IChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgg
JiYgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0IC0gbG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJT
bmFwUG9zaXRpb24gLSBzZWFyY2guZGVzdGluYXRpb25PZmZzZXQpOwogICAgICAgICByZXR1cm4g
aXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9z
aXRpb24sIGxvd2VySW5kZXgpIDogc3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVw
cGVySW5kZXgpOwogICAgIH0KIApAQCAtMTUxLDEzICsxNTMsMTQgQEAgc3RhdGljIHN0ZDo6cGFp
cjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMo
Y29uc3QgSW4KICAgICAvLyBhcyBsb25nIGFzIGEgc2Nyb2xsIHNuYXAgb2Zmc2V0IGlzIGNsb3Nl
IGVub3VnaCBmb3IgcHJveGltaXR5IChvciB3ZSBhcmVuJ3QgdXNpbmcgcHJveGltaXR5KS4gSWYg
d2UgYXJlIGRvaW5nIGRpcmVjdGlvbmFsCiAgICAgLy8gc25hcHBpbmcsIHdlIHNob3VsZCBuZXZl
ciBzbmFwIHRvIGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9yaWdp
bmFsIHBvc2l0aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3JvbGwuCiAg
ICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBzbmFwIHBv
aW50cy4KKyAgICBib29sIGFsd2F5c0FsbG93RXNjYXBpbmdTbmFwUG9zaXRpb24gPSBpbmZvLnN0
cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSB8fCBzZWFyY2gudHlw
ZSA9PSBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbDsKICAgICBpZiAodmVsb2NpdHkg
PCAwKSAgewotICAgICAgICBpZiAodXBwZXJJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4
ICYmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9m
ZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQb3NpdGlvbikpCisgICAgICAg
IGlmICh1cHBlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFhbHdheXNBbGxv
d0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5vcmlnaW5hbE9mZnNldCA+IHVwcGVyU25h
cFBvc2l0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQ
b3NpdGlvbiwgdXBwZXJJbmRleCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dl
clNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7CiAgICAgfQogCi0gICAgaWYgKGxvd2VySW5kZXgg
IT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9u
YWxTbmFwcGluZyB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIDwgbG93
ZXJTbmFwUG9zaXRpb24pKQorICAgIGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXggJiYgKCFhbHdheXNBbGxvd0VzY2FwaW5nU25hcFBvc2l0aW9uIHx8IHNlYXJjaC5vcmln
aW5hbE9mZnNldCA8IGxvd2VyU25hcFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogfQpAQCAtMzU1LDE2ICsz
NTgsMTYgQEAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWMKIAogfQogCi10ZW1wbGF0ZSA8PiB0ZW1w
bGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25z
dCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDw+CitzdGQ6OnBhaXI8
TGF5b3V0VW5pdCwgdW5zaWduZWQ+IExheW91dFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0IExh
eW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNu
YXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9u
YWxTbmFwcGluZyk7CisgICAgcmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxMYXlvdXRTbmFwUG9p
bnRTZWFyY2gsIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgTGF5b3V0VW5pdD4oKnRoaXMs
IGluZm8pOwogfQogCi10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZTw+Ci1zdGQ6OnBhaXI8ZmxvYXQsIHVu
c2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDw+
CitzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVuKGNv
bnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBjbG9z
ZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcygqdGhpcywgYXhpcywgdmlld3BvcnRTaXplLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gcnVuU25hcFBvaW50U2VhcmNoPEZsb2F0U25h
cFBvaW50U2VhcmNoLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgZmxvYXQ+KCp0aGlzLCBp
bmZvKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkMTYwYzk1YmM0M2ZmOTgxYzBhNDdiZjM2MDNj
NDAwNmRjZWUzMWNjLi5kNjQxMzBmNGU3N2I3M2M0NTQ4ZjkyYTY5NTk4NjMzYmRlYWE2MzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaApAQCAtNzIsOCArNzIsNiBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlPiBPdXRwdXRUeXBl
IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFVuaXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBj
b25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9u
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1c2lu
ZyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5
b3V0VW5pdCwgTGF5b3V0UmVjdD47CkBAIC04MiwxNCArODAsNTcgQEAgdXNpbmcgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0UmVj
dD47CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZv
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2Vk
U2NhbGVGYWN0b3IgKi8pIGNvbnN0OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2Np
dHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykgY29uc3Q7CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7CiAK
K2VudW0gU25hcFBvaW50U2VhcmNoVHlwZSB7CisgICAgTm9uRGlyZWN0aW9uYWwsCisgICAgRGly
ZWN0aW9uYWwsCiAKLXRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1GbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Ci10ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotV0VCQ09S
RV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgTGF5
b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworICAgIC8vIE1vbWVudHVtIHNjcm9sbGluZyBp
cyBsaWtlIGRpcmVjdGlvbmFsIHNjcm9sbGluZywgYnV0IGRvZXMgbm90IGRvCisgICAgLy8gYW55
dGhpbmcgc3BlY2lhbCB0byBhbGxvdyBlc2NhcGluZyBzbmFwIHBvaW50cy4gSXQncyBhc3N1bWVk
IHRoYXQKKyAgICAvLyB0cmlnZ2VyaW5nIGEgbGFyZ2VyIGFtb3VudCBvZiBtb21lbnR1bSBzaG91
bGQgYmUgc3VmZmljaWVudCB0byBlc2NhcGUKKyAgICAvLyB0aGUgc25hcCBwb2ludC4KKyAgICBN
b21lbnR1bSwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBTaXpl
VHlwZSwgdHlwZW5hbWUgSW5mb1R5cGU+CitzdHJ1Y3QgU25hcFBvaW50U2VhcmNoIHsKKyAgICBT
Y3JvbGxFdmVudEF4aXMgYXhpczsKKyAgICBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxPZmZz
ZXQ7CisgICAgVW5pdFR5cGUgZGVzdGluYXRpb25PZmZzZXQ7CisgICAgU2l6ZVR5cGUgdmlld3Bv
cnRTaXplOworICAgIFNuYXBQb2ludFNlYXJjaFR5cGUgdHlwZTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+IHJ1bihjb25zdCBJbmZvVHlwZSYpOwor
CisgICAgc3RhdGljIFNuYXBQb2ludFNlYXJjaDxVbml0VHlwZSwgU2l6ZVR5cGUsIEluZm9UeXBl
PiBjcmVhdGVOb25EaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4aXMgYXhpcywgVW5pdFR5cGUgZGVz
dGluYXRpb25PZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB7IGF4aXMsIFdURjo6bnVsbG9wdCwgZGVzdGluYXRpb25PZmZzZXQsIHZpZXdwb3J0U2l6
ZSwgU25hcFBvaW50U2VhcmNoVHlwZTo6Tm9uRGlyZWN0aW9uYWwgfTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU25hcFBvaW50U2VhcmNoPFVuaXRUeXBlLCBTaXplVHlwZSwgSW5mb1R5cGU+IGNyZWF0
ZURpcmVjdGlvbmFsKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBVbml0VHlwZSBkZXN0aW5hdGlvbk9m
ZnNldCwgVW5pdFR5cGUgb3JpZ2luYWxPZmZzZXQsIFNpemVUeXBlIHZpZXdwb3J0U2l6ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7IGF4aXMsIG9yaWdpbmFsT2Zmc2V0LCBkZXN0aW5hdGlvbk9m
ZnNldCwgdmlld3BvcnRTaXplLCBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rpb25hbCB9Owor
ICAgIH0KKworICAgIHN0YXRpYyBTbmFwUG9pbnRTZWFyY2g8VW5pdFR5cGUsIFNpemVUeXBlLCBJ
bmZvVHlwZT4gY3JlYXRlTW9tZW50dW0oU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIFVuaXRUeXBlIGRl
c3RpbmF0aW9uT2Zmc2V0LCBVbml0VHlwZSBvcmlnaW5hbE9mZnNldCwgU2l6ZVR5cGUgdmlld3Bv
cnRTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgYXhpcywgb3JpZ2luYWxPZmZzZXQsIGRl
c3RpbmF0aW9uT2Zmc2V0LCB2aWV3cG9ydFNpemUsIFNuYXBQb2ludFNlYXJjaFR5cGU6Ok1vbWVu
dHVtIH07CisgICAgfQorCisgICAgZmxvYXQgdmVsb2NpdHkoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9yaWdpbmFsT2Zmc2V0ID8gZmxvYXQgeyBkZXN0aW5hdGlvbk9mZnNldCAtICpvcmlnaW5h
bE9mZnNldCB9IDogMC4wOworICAgIH0KK307CisKK3VzaW5nIExheW91dFNuYXBQb2ludFNlYXJj
aCA9IFNuYXBQb2ludFNlYXJjaDxMYXlvdXRVbml0LCBMYXlvdXRTaXplLCBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8+OwordXNpbmcgRmxvYXRTbmFwUG9pbnRTZWFyY2ggPSBTbmFwUG9pbnRT
ZWFyY2g8ZmxvYXQsIEZsb2F0U2l6ZSwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OwogCit0
ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTbmFwUG9pbnRTZWFyY2g6OnJ1bihjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mKTsKK3RlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQsIHVu
c2lnbmVkPiBGbG9hdFNuYXBQb2ludFNlYXJjaDo6cnVuKGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvJik7CiAKIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBV
SU5UX01BWDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA5MjU4ZTdlYWE0ZWRkNDdjNWU0MGNlMzZhMDJl
ZWQ4NjFhM2E0ODE0Li4zN2QxOTExYWYwYjA4MmY4ZTFlMTRkMmU4ZmVmN2M0NmNmYWU1NzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhLmNwcApAQCAtMTczLDggKzE3MywxMSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVs
RQogICAgICAgICBGbG9hdFBvaW50IG5ld0Zsb2F0T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1
cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSk7CiAgICAgICAg
IGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQobmV3RmxvYXRPZmZzZXQueCgpIC8gc2NhbGUs
IG5ld0Zsb2F0T2Zmc2V0LnkoKSAvIHNjYWxlKTsKIAotICAgICAgICBhdXRvIG9mZnNldFggPSBz
Y3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0Lngo
KSwgZGVsdGFYLCBvcmlnaW5hbE9mZnNldC54KCkpLmZpcnN0OwotICAgICAgICBhdXRvIG9mZnNl
dFkgPSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09mZnNl
dC55KCksIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKyAgICAgICAgYXV0byBz
ZWFyY2ggPSBGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGlyZWN0aW9uYWwoU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQueCgpLCBvcmlnaW5hbE9mZnNldC54KCksIHNj
cm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc2VhcmNoLnJ1bihz
Y3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OworCisgICAgICAgIHNlYXJj
aCA9IEZsb2F0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVEaXJlY3Rpb25hbChTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBvcmlnaW5hbE9mZnNldC55KCksIHNjcm9sbGFi
bGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgYXV0byBvZmZzZXRZID0gc2VhcmNoLnJ1bihzY3JvbGxp
bmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkpLmZpcnN0OwogCiAgICAgICAgIGRlbHRhWCA9IChv
ZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwogICAgICAgICBkZWx0YVkgPSAo
b2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA4ZDYyZTAyOTYzMGU0OWFiZGFjZTkwODhm
ZjMxZWFlODJlZjJjNzU5Li5mMTQ5ZGNjMmU0M2E2ZmExN2MzZmMxMWQ2MGMxNTBkMDY2NGI2ZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC05NCw5
ICs5NCw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAgICAgICAgYXV0byBjdXJyZW50T2Zm
c2V0ID0gb2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbigpKTsKICAgICAgICAgYXV0
byBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0ICsgZGVsdGE7CiAgICAgICAgIGlmIChvcmllbnRh
dGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFgo
bV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgbmV3T2Zmc2V0LngoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNldC54
KCkpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRYKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1
c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5ld09mZnNl
dC54KCksIGN1cnJlbnRPZmZzZXQueCgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5l
d09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtdWx0aXBsaWVyLCBjdXJy
ZW50T2Zmc2V0LnkoKSkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFkobV9zY3JvbGxDb250
cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IG5ld09mZnNldC55KCksIGN1cnJlbnRPZmZzZXQueSgpKSk7CiAgICAgICAgIGF1dG8gbmV3RGVs
dGEgPSBuZXdPZmZzZXQgLSBjdXJyZW50T2Zmc2V0OwogCiAgICAgICAgIGlmIChvcmllbnRhdGlv
biA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQpAQCAtNDE3LDE1ICs0MTcsMTMgQEAgZmxvYXQgU2Ny
b2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsKIAogICAgIE9wdGlvbmFs
PGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKLSAgICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAgIGlm
IChtZXRob2QgPT0gU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25hbCkg
ewogICAgICAgICBGbG9hdFNpemUgc2Nyb2xsT3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3JvbGxh
YmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7CiAgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24odGhpcy0+Y3VycmVudFBvc2l0
aW9uKCksIHNjcm9sbE9yaWdpbik7CiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0ID0gYXhpcyA9PSBT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBjdXJyZW50T2Zmc2V0LngoKSA6IGN1cnJlbnRP
ZmZzZXQueSgpOwotICAgICAgICB2ZWxvY2l0eSA9IG5ld09mZnNldCAtIChheGlzID09IFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IGN1cnJlbnRPZmZzZXQueCgpIDogY3VycmVudE9mZnNl
dC55KCkpOwogICAgIH0KIAotICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Ny
b2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXQp
OworICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24o
YXhpcywgbmV3T2Zmc2V0LCBvcmlnaW5hbE9mZnNldCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShtZXRob2QpOwogICAgIFVOVVNFRF9QQVJBTShheGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKaW5kZXggYjlkNmJiZDU0ODY0YTJmNTc3NGRjZWJm
Y2U1ZTA5ZTZmZjFhZTQyZi4uNWMyN2M2YmQ0OWFjZmY1NzBhNWRmNzY1OTU0MjdjN2EyNzRlMTU5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKQEAg
LTE1OCw5ICsxNTgsMTAgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xs
U25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5
b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0
KSwgc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCk7Ci0KICAgICBMYXlvdXRTaXplIHZpZXdwb3J0
U2l6ZShtX2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNp
emUoKS5oZWlnaHQoKSk7Ci0gICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25h
cE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGNsYW1w
ZWRPZmZzZXQsIDApLnNlY29uZDsKKyAgICBhdXRvIHNlYXJjaCA9IExheW91dFNuYXBQb2ludFNl
YXJjaDo6Y3JlYXRlTm9uRGlyZWN0aW9uYWwoYXhpcywgY2xhbXBlZE9mZnNldCwgdmlld3BvcnRT
aXplKTsKKworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc2VhcmNoLnJ1bihzbmFwU3RhdGUu
c25hcE9mZnNldEluZm8oKSkuc2Vjb25kOwogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2OCw3
ICsxNjksNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIHNldEFjdGl2ZVNjcm9sbFNu
YXBJbmRleEZvckF4aXMoYXhpcywgYWN0aXZlSW5kZXgpOwogfQogCi1mbG9hdCBTY3JvbGxDb250
cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxv
YXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3Jp
Z2luYWxPZmZzZXQpCitmbG9hdCBTY3JvbGxDb250cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0aW5h
dGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkp
CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKQEAgLTE3OCwxMiArMTc5LDE2IEBA
IGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgaWYgKCFzbmFwT2Zmc2V0cy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBkZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0czsKLSAgICBpZiAob3JpZ2luYWxPZmZzZXQu
aGFzVmFsdWUoKSkKLSAgICAgICAgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzID0gTGF5b3V0
VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAg
YXV0byBkZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KGRlc3RpbmF0
aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOworCiAgICAgTGF5b3V0U2l6
ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQu
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0
YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXpl
LCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9y
KCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJzdDsKLSAgICBy
ZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBzZWFy
Y2ggPSAgTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVOb25EaXJlY3Rpb25hbChheGlzLCBk
ZXN0aW5hdGlvbk9mZnNldEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgaWYgKG9y
aWdpbmFsT2Zmc2V0KSB7CisgICAgICAgIGF1dG8gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRz
ID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3Io
KSk7CisgICAgICAgIHNlYXJjaCA9IExheW91dFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlRGlyZWN0
aW9uYWwoYXhpcywgZGVzdGluYXRpb25PZmZzZXRJbkxheW91dFVuaXRzLCBvcmlnaW5hbE9mZnNl
dEluTGF5b3V0VW5pdHMsIHZpZXdwb3J0U2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHNlYXJj
aC5ydW4oc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkpLmZpcnN0ICogbV9jbGllbnQucGFnZVNj
YWxlRmFjdG9yKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5oCmluZGV4IDkzYWY1OGIzMzNlOGM0ZDMyZGUzZDEyNDAzM2E5NWFlZmJiMzE2YWEuLmJh
YjcwZDlhZTIyY2QyMzk2NWY0NWZjMDUwMzY0YzI0YTgyOGYxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXMpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFi
bGVBcmVhJik7CiAgICAgdm9pZCB1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwotICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNj
cm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxmbG9hdD4gb3JpZ2luYWxPZmZzZXQpOworICAgIGZsb2F0IGFkanVzdFNjcm9sbERl
c3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmNwcAppbmRleCA1YTA2ZDg4NzBhODU0ZDg1MjY0MTAwNGZkY2U4OWFmYmFhMDg2NzNhLi45MWE1
ZGVlZWU5MDZlNTcyZmJkM2U2NzI2NmY5YTc5MWIwY2YzNzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCkBAIC01MSw4ICs1
MSw4IEBAIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3Rh
dGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBjb25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRv
ciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29u
dGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsK
ICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5w
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBp
bml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2Fs
ZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9y
dFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
aGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJ
bmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9m
ZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNp
emUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJl
ZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgbV9hY3RpdmVTbmFwSW5kZXhY
KTsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWln
aHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3Rl
ZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwog
ICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFy
Z2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSw3ICs5MSw3
IEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRlZFNj
cm9sbE9mZnNldChNb25vdG9uaWNUaW1lIGN1CiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxjdWxh
dG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAotZmxv
YXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQg
bWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zmc2V0
LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2
ZVNuYXBJbmRleCkgY29uc3QKK2Zsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCB1bnNpZ25lZCYgb3V0QWN0
aXZlU25hcEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gbV9z
bmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CiAgICAgaWYgKHNuYXBPZmZzZXRz
LmlzRW1wdHkoKSkgewpAQCAtOTksNyArOTksOSBAQCBmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsCiAg
ICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihwcmVkaWN0ZWRPZmZzZXQsIDAsIG1heFNjcm9s
bE9mZnNldCk7CiAgICAgfQogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zmc2V0
c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9
LCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwg
TGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpLmZpcnN0OworICAgIGF1dG8gc2Vh
cmNoID0gTGF5b3V0U25hcFBvaW50U2VhcmNoOjpjcmVhdGVNb21lbnR1bShheGlzLCBMYXlvdXRV
bml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIExheW91dFVuaXQoc3RhcnRPZmZzZXQg
LyBwYWdlU2NhbGUpLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXplIH0pOworICAgIGZsb2F0IHRh
cmdldE9mZnNldCA9IHNlYXJjaC5ydW4obV9zbmFwT2Zmc2V0c0luZm8pLmZpcnN0OworCiAgICAg
ZmxvYXQgbWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zmc2V0
cy5maXJzdCgpLm9mZnNldCk7CiAgICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6
bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwog
ICAgIHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRh
cmdldE9mZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCBlNjIwY2U1MzE1MTRlMGIx
ZTVkZjk2YjllZGM3NTZiYmMxOWM2Y2M1Li4xYWE0MWUzNzJlYjcyMmU2NGRlYzBmOWVkYTBlMzM5
OGNlOGQ5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNp
dGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0
LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERl
bHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsKKyAgICBmbG9hdCB0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBm
bG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgdW5zaWduZWQmIG91dEFjdGl2
ZVNuYXBJbmRleCkgY29uc3Q7CiAgICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRlKFNj
cm9sbFNuYXBTdGF0ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNu
YXBTdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXplJiB2
aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQppbmRleCA1NWFjYjA5Y2I5OGMzMjU3MmNlMDM5MmIwMDVkMDllMzgxNmMw
YWIzLi4xMTJkZmEyZmEzYjZjYTY0ZTM4MjVkMGFjMDc0N2Q0ZGExZDk2YzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTU5Myw4
ICsxNTkzLDcgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICAgICAgICAgIG9ic2N1cmVk
SW5zZXQgPSBbc2VsZiBfY29tcHV0ZWRPYnNjdXJlZEluc2V0XTsKIAogICAgICAgICBDR1JlY3Qg
dW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3Qoc2VsZi5ib3VuZHMsIG9ic2N1
cmVkSW5zZXQpOwotCi0gICAgICAgIGNvb3JkaW5hdG9yLT5hZGp1c3RUYXJnZXRDb250ZW50T2Zm
c2V0Rm9yU25hcHBpbmcobWF4U2Nyb2xsT2Zmc2V0cywgdmVsb2NpdHksIHVub2JzY3VyZWRSZWN0
Lm9yaWdpbi55LCB0YXJnZXRDb250ZW50T2Zmc2V0KTsKKyAgICAgICAgY29vcmRpbmF0b3ItPmFk
anVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhtYXhTY3JvbGxPZmZzZXRzLCB1bm9i
c2N1cmVkUmVjdC5vcmlnaW4ueSwgc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCB0YXJnZXRDb250
ZW50T2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDBlNTZlNDlhYTcyZDNjOGVjNTY1NDJjNDUyMDM2
NDMxMWM1MGIxODIuLmUwNDhhMjRmZWVlN2EwNTE5ZTY3ZDI2NWFhYmRlMDAzYjllNmZkMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAtOTks
OSArOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRT
Y3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVO
b2RlRGlkRW5kU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLSAgICB2b2lkIGFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFw
cGluZyhDR1NpemUgbWF4U2Nyb2xsRGltZW5zaW9ucywgQ0dQb2ludCB2ZWxvY2l0eSwgQ0dGbG9h
dCB0b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCk7CisgICAgdm9pZCBhZGp1
c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbE9mZnNldHMs
IENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQgY3VycmVudENvbnRlbnRPZmZzZXQsIENHUG9pbnQq
IHRhcmdldENvbnRlbnRPZmZzZXQpOworCiAgICAgYm9vbCBoYXNBY3RpdmVTbmFwUG9pbnQoKSBj
b25zdDsKLSAgICBDR1BvaW50IG5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBP
ZmZzZXQoQ0dGbG9hdCB0b3BJbnNldCwgY29uc3QgQ0dQb2ludCYpIGNvbnN0OworICAgIENHUG9p
bnQgbmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0IHRv
cEluc2V0LCBjb25zdCBDR1BvaW50Jik7CiAgICAgYm9vbCBzaG91bGRTZXRTY3JvbGxWaWV3RGVj
ZWxlcmF0aW9uUmF0ZUZhc3QoKSBjb25zdDsKICNlbmRpZgogI2VuZGlmCkBAIC0xMjAsNyArMTIx
LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBz
aG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpcykg
Y29uc3Q7Ci0gICAgZmxvYXQgY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmco
V2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQg
dmVsb2NpdHksIHVuc2lnbmVkJiBjbG9zZXN0SW5kZXgpIGNvbnN0OworICAgIGZsb2F0IGNsb3Nl
c3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhp
cywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IGN1cnJlbnRTY3JvbGxPZmZzZXQsIHVu
c2lnbmVkJiBjbG9zZXN0SW5kZXgpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHNlbmRVSVN0
YXRlQ2hhbmdlZElmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggY2M0ZWFkNjU3M2VmMDAzZWVm
OTBmNzAyMzM3MzExZDMwMzM4YTllNy4uM2E3NDdkNGJiYTZjMDVmZjM3Y2U5NjI3MTRhZTI2M2Q3
NDY0NzE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMTg1LDE3ICsxODUsMTcgQEAgdm9pZCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5Ojplc3RhYmxpc2hMYXllclRyZWVTY3JvbGxpbmdSZWxhdGlv
bnMoY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFw
cGluZyhDR1NpemUgbWF4U2Nyb2xsT2Zmc2V0cywgQ0dQb2ludCB2ZWxvY2l0eSwgQ0dGbG9hdCB0
b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCkKK3ZvaWQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5n
KENHU2l6ZSBtYXhTY3JvbGxPZmZzZXRzLCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50IGN1cnJl
bnRDb250ZW50T2Zmc2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KQogewogICAgIC8v
IFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZzZXRzIGlzIHRvIGVuc3VyZSB0
aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5kaW5nIHdoZW4gc2Nyb2xsaW5n
IHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgogICAgIGlmIChzaG91bGRTbmFwRm9yTWFpbkZyYW1l
U2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpIHsKLSAgICAg
ICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWlu
RnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB0YXJn
ZXRDb250ZW50T2Zmc2V0LT54LCB2ZWxvY2l0eS54LCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0
U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwsIHRhcmdldENvbnRlbnRPZmZzZXQtPngsIGN1cnJlbnRDb250ZW50T2Zmc2V0
LngsIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIGlmICh0YXJn
ZXRDb250ZW50T2Zmc2V0LT54ID4gMCAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT54IDwgbWF4U2Ny
b2xsT2Zmc2V0cy53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBz
dGQ6Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0cy53aWR0aCwgcG90ZW50aWFsU25hcFBvc2l0
aW9uKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhX
ZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSkgewotICAgICAgICBmbG9hdCBwb3Rl
bnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGlu
ZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB0YXJnZXRDb250ZW50T2Zmc2V0
LT55LCB2ZWxvY2l0eS55LCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKKyAgICAg
ICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWlu
RnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdGFyZ2V0
Q29udGVudE9mZnNldC0+eSwgY3VycmVudENvbnRlbnRPZmZzZXQueSwgbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgICAgICBwb3RlbnRpYWxT
bmFwUG9zaXRpb24gLT0gdG9wSW5zZXQ7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxp
bmcoU2Nyb2xsRXZlbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotZmxvYXQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxp
bmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2
ZWxvY2l0eSwgdW5zaWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKK2Zsb2F0IFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xs
aW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQg
Y3VycmVudFNjcm9sbE9mZnNldCwgdW5zaWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKIHsKICAg
ICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsK
ICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKQEAgLTIz
MCw3ICsyMzAsOSBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9z
ZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhTYwogCiAgICAgZmxvYXQgc2NhbGVk
U2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRp
c3BsYXllZENvbnRlbnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0Owot
ICAgIHN0ZDo6dGllKHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc25hcE9m
ZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHJvb3RTY3JvbGxpbmdOb2RlLT5sYXlv
dXRWaWV3cG9ydCgpLnNpemUoKSwgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsK
KworICAgIGF1dG8gc2VhcmNoID0gV2ViQ29yZTo6RmxvYXRTbmFwUG9pbnRTZWFyY2g6OmNyZWF0
ZU1vbWVudHVtKGF4aXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCBjdXJyZW50U2Nyb2xsT2Zm
c2V0LCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXplKCkpOworICAgIHN0
ZDo6dGllKHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc2VhcmNoLnJ1bihz
bmFwT2Zmc2V0c0luZm8pOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAqIG1fd2Vi
UGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCkBAIC0yNTgsNyArMjYwLDcg
QEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpoYXNBY3RpdmVTbmFwUG9p
bnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotQ0dQb2ludCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRT
bmFwT2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQb2ludCkg
Y29uc3QKK0NHUG9pbnQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFj
dGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBjb25z
dCBDR1BvaW50JiBjdXJyZW50UG9pbnQpCiB7CiAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9IGN1
cnJlbnRQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IDhmYzY2MTVmNzZmM2M5ZmFkMDBmNTk0
YjM0YjEzZGQ0NGM5MjNjZDAuLjBlNTY4NzA3YzEyZmIyMWUwNGQ0N2FmZDI2ZDZkYTRmZDU1N2Ix
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTEwOSwxNCArMTA5LDE2IEBAIC0gKHZvaWQpc2Nyb2xs
Vmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2Np
dHk6KENHUG9pCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0U2l6ZShzdGF0aWNfY2Fz
dDxmbG9hdD4oQ0dSZWN0R2V0V2lkdGgoW3Njcm9sbFZpZXcgYm91bmRzXSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oQ0dSZWN0R2V0SGVpZ2h0KFtzY3JvbGxWaWV3IGJvdW5kc10pKSk7CiAgICAgY29u
c3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKTsKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5m
by5ob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVu
dGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zm
c2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBo
b3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBzZWFyY2ggPSBXZWJD
b3JlOjpGbG9hdFNuYXBQb2ludFNlYXJjaDo6Y3JlYXRlTW9tZW50dW0oV2ViQ29yZTo6U2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0LCBzY3JvbGxWaWV3LmNvbnRl
bnRPZmZzZXQueCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBv
c2l0aW9uLCBpbmRleF0gPSBzZWFyY2gucnVuKHNuYXBPZmZzZXRzSW5mbyk7CiAgICAgICAgIF9z
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0
ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRo
KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3Np
dGlvbjsKICAgICB9CiAKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGlu
ZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0
eS54KTsKKyAgICAgICAgYXV0byBzZWFyY2ggPSBXZWJDb3JlOjpGbG9hdFNuYXBQb2ludFNlYXJj
aDo6Y3JlYXRlTW9tZW50dW0oV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVy
dGljYWxUYXJnZXQsIHNjcm9sbFZpZXcuY29udGVudE9mZnNldC55LCB2aWV3cG9ydFNpemUpOwor
ICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNlYXJjaC5ydW4o
c25hcE9mZnNldHNJbmZvKTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAg
ICAgICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9s
bFZpZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNl
dC0+eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZjE0ZWM1YTRiOTE4NDE3Mzdk
Y2JlZTYyYzBiYmIxNTU4N2FkZTk0Li41ZTQzM2JjMjlhMDljNWUwMDNmZGEyZDk3OWU3ZGQyOTQx
NmQ1OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDUtMTMgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtTY3JvbGwgc25hcF0gcHJveGlt
aXR5IHNjcm9sbCBzbmFwcGluZyBpcyBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY0
NjEwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgU25hcFBvaW50U2VhcmNoIGRhdGEgc3RydWN0dXJlIHRoYXQgaG9sZHMgYWxsIGFyZ3Vt
ZW50cyBuZWNlc3NhcnkgZm9yIGRvaW5nCisgICAgICAgIGEgc25hcCBwb2ludCBzZWFyY2ggYW5k
IG5vdyBjYXJyaWVzIHRoZSB0eXBlIG9mIHNuYXAgcG9pbnQgc2VhcmNoIHRoYXQgaXMgdGFraW5n
CisgICAgICAgIHBsYWNlLiBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgbW9tZW50dW0gc2Nyb2xsaW5n
IHRvICJzdGljayIgdG8gc25hcCBwb2ludHMgd2hpbGUKKyAgICAgICAgbm9ybWFsIGRpcmVjdGlv
bmFsIHNuYXBwaW5nIGRvZXMgbm90LiBUaGlzIGFsc28gYWxsb3dzIHRoZSBzZWFyY2ggdG8gZWxp
bWluYXRlIHRoZQorICAgICAgICB2ZWxvY2l0eSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGRldGVybWlu
ZWQgYnkgbG9va2luZyBhdCB0aGUgb3JpZ2luYWwgc2Nyb2xsIG9mZnNldC4KKworICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0
eS1lc2NhcGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktZXNjYXBlLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTA1LTEzICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNPUyBXazFdIG1lZGlhL3ZpZGVvLXBsYXliYWNrLXF1YWxpdHkuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>