<?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>232961</bug_id>
          
          <creation_ts>2021-11-10 12:19:52 -0800</creation_ts>
          <short_desc>WKSystemPreviewView should be called WKUSDPreviewView</short_desc>
          <delta_ts>2021-11-11 09:22:36 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813745</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-10 12:19:52 -0800</bug_when>
    <thetext>WKSystemPreviewView is a uninformative name. WKUSDPreviewView is more accurate.

While here, change the WebCore code that looks for SystemPreview MIME types to reflect it is looking for USD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813746</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-10 12:20:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85265415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813754</commentid>
    <comment_count>2</comment_count>
      <attachid>443847</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-10 12:28:19 -0800</bug_when>
    <thetext>Created attachment 443847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813767</commentid>
    <comment_count>3</comment_count>
      <attachid>443855</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-10 12:56:24 -0800</bug_when>
    <thetext>Created attachment 443855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813808</commentid>
    <comment_count>4</comment_count>
      <attachid>443855</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-10 15:01:51 -0800</bug_when>
    <thetext>Comment on attachment 443855
Patch

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

r=me, but please make sure it builds.

&gt; Source/WebKit/SourcesCocoa.txt:509
&gt; +UIProcess/ios/WKUSDPreviewView.mm

This needs to be sorted.

&gt; Source/WebKit/UIProcess/SystemPreviewController.cpp:41
&gt;  bool SystemPreviewController::canPreview(const String&amp; mimeType) const

Should this class get renamed in the future as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814041</commentid>
    <comment_count>5</comment_count>
      <attachid>443855</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-11 08:25:06 -0800</bug_when>
    <thetext>Comment on attachment 443855
Patch

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

&gt;&gt; Source/WebKit/SourcesCocoa.txt:509
&gt;&gt; +UIProcess/ios/WKUSDPreviewView.mm
&gt; 
&gt; This needs to be sorted.

Nice catch.

&gt;&gt; Source/WebKit/UIProcess/SystemPreviewController.cpp:41
&gt;&gt;  bool SystemPreviewController::canPreview(const String&amp; mimeType) const
&gt; 
&gt; Should this class get renamed in the future as well?

Yes, that&apos;s coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814042</commentid>
    <comment_count>6</comment_count>
      <attachid>443949</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-11 08:26:58 -0800</bug_when>
    <thetext>Created attachment 443949
EWS test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814065</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-11 09:22:35 -0800</bug_when>
    <thetext>Committed r285635 (244136@main): &lt;https://commits.webkit.org/244136@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443949.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443847</attachid>
            <date>2021-11-10 12:28:19 -0800</date>
            <delta_ts>2021-11-10 12:56:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232961-20211111072817.patch</filename>
            <type>text/plain</type>
            <size>33120</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJjYTMxZDAyMzMzYzk0
YWUwNjVlNDYxZWQxMWE4NTRkMDJjYjQ1Yy4uYmE0ZDliNDM4ZTg2YmM2NTk3OTE4ZTA0NzYxMzA5
MDc4MTRlYzQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTExLTEwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBXS1N5c3RlbVByZXZpZXdWaWV3
IHNob3VsZCBiZSBjYWxsZWQgV0tVU0RQcmV2aWV3VmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84NTI2NTQxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW5hbWUgdGhlIFdlYkNvcmUgQVBJcyB0aGF0IGxvb2sgZm9yICJTeXN0ZW1QcmV2aWV3
IiBNSU1FLXR5cGVzCisgICAgICAgIHRvIGJlIGNsZWFyIHRoZXkgYXJlIGxvb2tpbmcgZm9yIFVT
RC4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNVU0RNSU1FVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSU1FVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKwogMjAyMS0x
MS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29y
a2Vycy5odG1sIGlzIGZsYWt5IGNyYXNoaW5nIGluIGRlYnVnCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMWE2YTAw
ZWJiZjlhMDI1MzJmZDUyYjZjZjVlNjRlMjZiZjFiZDYuLmU0YzAxZGVlY2I4YzQ5OTQ5YzhjYzg5
NGI2NzgyNDBlYmQyNmRiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMTEtMTAg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFdLU3lzdGVtUHJldmll
d1ZpZXcgc2hvdWxkIGJlIGNhbGxlZCBXS1VTRFByZXZpZXdWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg1MjY1NDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdLU3lzdGVtUHJldmlld1ZpZXcgaXMgYSB1bmluZm9ybWF0aXZlIG5hbWUuIFdL
VVNEUHJldmlld1ZpZXcgaXMgbW9yZSBhY2N1cmF0ZS4KKworICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eSBpbml0V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRy
b2xsZXI6OmNhblByZXZpZXcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tVU0RQ
cmV2aWV3Vmlldy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U3lzdGVtUHJldmlld1ZpZXcuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVVNEUHJldmll
d1ZpZXcubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0
ZW1QcmV2aWV3Vmlldy5tbS4KKyAgICAgICAgKGdldFVUSUZvclN5c3RlbVByZXZpZXdNSU1FVHlw
ZSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2luaXRXaXRoRnJhbWU6d2ViVmll
dzptaW1lVHlwZTpdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfc2V0Q29udGVu
dFByb3ZpZGVyRGF0YTpzdWdnZXN0ZWRGaWxlbmFtZTpdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2
aWV3VmlldyBfbGF5b3V0VGh1bWJuYWlsVmlld10pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdW
aWV3IHRodW1ibmFpbFZpZXc6d2FudHNUb1ByZXNlbnRQcmV2aWV3Q29udHJvbGxlcjpmb3JJdGVt
Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9jb250ZW50Vmlld10pOgorICAg
ICAgICAoK1tXS1VTRFByZXZpZXdWaWV3IHdlYl9yZXF1aXJlc0N1c3RvbVNuYXBzaG90dGluZ10p
OgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRNaW5pbXVtU2l6ZTpdKToKKyAg
ICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfc2V0T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0lu
c2V0Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9jb21wdXRlZENvbnRlbnRJ
bnNldERpZENoYW5nZV0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRGaXhl
ZE92ZXJsYXlWaWV3Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9kaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9p
c0JhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfY291bnRTdHJp
bmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1Zp
ZXcgd2ViX2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tVU0RQ
cmV2aWV3VmlldyB3ZWJfaGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3
IHByb3ZpZGVEYXRhRm9ySXRlbTpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMS0xMS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5kIHVubmVlZGVkIGJ1ZmZlciBh
bGxvY2F0aW9ucyBhbmQgY29weWluZyBpbiBVUkwgY29kZSwgYWxzbyByZW1vdmUgdW51c2VkIG1l
dGhvZHMgYW5kIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcAppbmRleCAyOWFhNWJmNmUxZjM4MDRkOTVkMGQ5Yzg3YmQzYjNmMWIzNTZiOGFj
Li42ZjdhZjEyN2NmY2UwNGUzYTA1Y2UwZmM2OTZhNzZiOGQwYWQxZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNjcwLDIyICs2NzAsMjIg
QEAgY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQogICAgIHJldHVybiBkZWZhdWx0TUlN
RVR5cGU7CiB9CiAKLWNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgc3lzdGVtUHJl
dmlld01JTUVUeXBlQXJyYXlbXSA9IHsKK2NvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVy
YWwgdXNkTUlNRVR5cGVBcnJheVtdID0gewogICAgICJtb2RlbC91c2QiLCAvLyBVbm9mZmljaWFs
LCBidXQgc3VwcG9ydGVkIGJlY2F1c2Ugd2UgZG9jdW1lbnRlZCB0aGlzLgogICAgICJtb2RlbC92
bmQucGl4YXIudXNkIiwgLy8gVW5vZmZpY2lhbCwgYnV0IHN1cHBvcnRlZCBiZWNhdXNlIHdlIGRv
Y3VtZW50ZWQgdGhpcy4KICAgICAibW9kZWwvdm5kLnJlYWxpdHkiLAogICAgICJtb2RlbC92bmQu
dXNkeit6aXAiLCAvLyBUaGUgb2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNz
aWdubWVudHMvbWVkaWEtdHlwZXMvbW9kZWwvdm5kLnVzZHoremlwCiB9OwogCi1GaXhlZFZlY3Rv
cjxjb25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygp
CitGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVz
KCkKIHsKLSAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHN5c3RlbVByZXZpZXdNSU1FVHlwZUFy
cmF5KTsKKyAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVzZE1JTUVUeXBlQXJyYXkpOwogfQog
Ci1ib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5
U2V0IHN5c3RlbVByZXZpZXdNSU1FVHlwZVNldCB7IHN5c3RlbVByZXZpZXdNSU1FVHlwZUFycmF5
IH07Ci0gICAgcmV0dXJuIHN5c3RlbVByZXZpZXdNSU1FVHlwZVNldC5jb250YWlucyhtaW1lVHlw
ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCB1c2RNSU1FVHlwZVNldCB7
IHVzZE1JTUVUeXBlQXJyYXkgfTsKKyAgICByZXR1cm4gdXNkTUlNRVR5cGVTZXQuY29udGFpbnMo
bWltZVR5cGUpOwogfQogCiAvLyBGSVhNRTogTm90IGdyZWF0IHRoYXQgQ1VSTCBuZWVkcyB0aGlz
IGNvbmNlcHQ7IG90aGVyIHBsYXRmb3JtcyBkbyBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNThjMTg4ZDY4YzU0MzEwMjA3NGU1YTFkOWExMmJh
NjViMjEwMGQ2Zi4uMGFkMjY5N2I5NmQyY2VhMmI3OGJiNjIxNTQyM2NjMmE1NjA1YTdjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtMTA2LDcgKzEw
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1Bvc3RTY3JpcHRNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1BE
Rk9yUG9zdFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNVU0RNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBh
IE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgc2hvd24gaW5zaWRlIGEgcGFnZS4KICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSgpLCBp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoKSwKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcGRmTUlNRVR5cGVzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRW
ZWN0b3I8Y29uc3QgY2hhcio+IHN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHVzZE1JTUVUeXBlcygpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZO
ZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbQppbmRleCBhNTVkNWEwNWU0ZGRjYmY1YzgxYzcxOTFiNGRjYjlkMmMzNDFl
Yjc1Li4wZTJmYmExYmUxMDY3NTRjZjY3OWYwNzY4MzQ5NTBiYWUzZWU0NzlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29h
Lm1tCkBAIC0xMDMsOSArMTAzLDkgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKLSAgICAvLyBTeXN0ZW0gUHJldmlld3MgYWNjZXB0IHNvbWUgbm9uLXN0YW5kYXJk
IE1JTUVUeXBlcywgc28gd2UgY2FuJ3QgcmVseSBvbgorICAgIC8vIFdlIGFjY2VwdCBzb21lIG5v
bi1zdGFuZGFyZCBVU0QgTUlNRVR5cGVzLCBzbyB3ZSBjYW4ndCByZWx5IG9uCiAgICAgLy8gdGhl
IGZpbGUgdHlwZSBtYXBwaW5ncy4KLSAgICBpZiAoaXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUodHlw
ZSkpCisgICAgaWYgKGlzVVNETUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiAidXNkeiJf
czsKIAogICAgIHJldHVybiBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10g
cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggMGNiZTM3ZmZhNzBmYTdjYjU2ZGVmMDk4MmRiYTBlM2Y0YmY5OGQy
YS4uMWJmZThiMGYwNzI4YmM4ZDczMzA1NDYxOTQ0ODc2OWJlMGRmNjA5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNTA2LDcgKzUwNiw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIubW0KIFVJUHJvY2Vzcy9p
b3MvV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbQogVUlQcm9jZXNzL2lvcy9XS1N5
bnRoZXRpY1RhcEdlc3R1cmVSZWNvZ25pemVyLm1tCi1VSVByb2Nlc3MvaW9zL1dLU3lzdGVtUHJl
dmlld1ZpZXcubW0KK1VJUHJvY2Vzcy9pb3MvV0tVU0RQcmV2aWV3Vmlldy5tbQogVUlQcm9jZXNz
L2lvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tU
ZXh0U2VsZWN0aW9uUmVjdC5tbQogVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDIwYzVjYjhjMzBmYzIzNzkwODc4MmY0NmE3
N2QyNDQ5ZjM0YjM1Y2YuLjY5NDIwZDc5Nzc0ZDE1ZDEwMDExZmVkM2NkYWU4ZjZhNzQwYjYyMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCkBAIC0yOSw3ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tQREZWaWV3LmgiCi0jaW1wb3J0
ICJXS1N5c3RlbVByZXZpZXdWaWV3LmgiCisjaW1wb3J0ICJXS1VTRFByZXZpZXdWaWV3LmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTU2LDgg
KzU2LDggQEAKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lU
X0lOVEVSTkFMUykKICAgICBpZiAoY29uZmlndXJhdGlvbi5fc3lzdGVtUHJldmlld0VuYWJsZWQp
IHsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
c3lzdGVtUHJldmlld01JTUVUeXBlcygpKQotICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92
aWRlcjpbV0tTeXN0ZW1QcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07Cisg
ICAgICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnVzZE1J
TUVUeXBlcygpKQorICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tVU0RQcmV2
aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07CiAgICAgfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNw
cAppbmRleCBiOGJiZjJiN2FhMDUzNTdlODQzZTMwYTQ5ZWQ2MTUyNTk2YjVjZTI5Li4xY2JhY2Vj
YmViZWJmMmI2ZjZjOTUyOTU1NTJkOGUyNjIzZjk4Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIAogYm9vbCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIHJldHVybiBX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlNRVR5cGUo
bWltZVR5cGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U3lzdGVtUHJldmlld1ZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYwNjRk
ZjI4MDE2ZWQxMzY1MWQyZGNhZGIyODY2M2RkZDQyNDcyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tT
eXN0ZW1QcmV2aWV3Vmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCi0KLSNpbXBvcnQgIldLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIgotI2lt
cG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCi0jaW1wb3J0IDxRdWlja0xvb2svUXVp
Y2tMb29rLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
UXVpY2tMb29rU1BJLmg+Ci0KLUBpbnRlcmZhY2UgV0tTeXN0ZW1QcmV2aWV3VmlldyA6IFdLQXBw
bGljYXRpb25TdGF0ZVRyYWNraW5nVmlldyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLCBRTFBy
ZXZpZXdJdGVtRGF0YVByb3ZpZGVyPgotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU3lzdGVtUHJldmlld1ZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzc4YWFmZmMwMzE3ZGE0YzBkNzVjOGE3Zjk1ODc1NjI2ZjRmZGY4
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDIwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIldLU3lzdGVtUHJldmlld1ZpZXcuaCIKLQotI2lmIFVTRShTWVNURU1fUFJFVklF
VykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLQotI2ltcG9ydCAiQVBJRmluZENs
aWVudC5oIgotI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKLSNpbXBvcnQgIldLV2ViVmlld0lPUy5o
IgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMv
TW9iaWxlQ29yZVNlcnZpY2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01JTUVU
eXBlUmVnaXN0cnkuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+Ci0jaW1wb3J0
IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oPgot
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1TT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwotU09GVF9MSU5LX0NMQVNTKEFz
c2V0Vmlld2VyLCBBU1ZUaHVtYm5haWxWaWV3KTsKLQotc3RhdGljIE5TU3RyaW5nICpnZXRVVElG
b3JTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBp
ZiAoIVdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKG1p
bWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBXZWJDb3JlOjpVVElG
cm9tTUlNRVR5cGUobWltZVR5cGUpOwotfQotCi1AaW50ZXJmYWNlIFdLU3lzdGVtUHJldmlld1Zp
ZXcgKCkgPEFTVlRodW1ibmFpbFZpZXdEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdLU3lzdGVtUHJldmlld1ZpZXcgewotICAgIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gX2l0
ZW1Qcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IF9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9t
aW1lVHlwZTsKLSAgICBSZXRhaW5QdHI8UUxJdGVtPiBfaXRlbTsKLSAgICBSZXRhaW5QdHI8QVNW
VGh1bWJuYWlsVmlldz4gX3RodW1ibmFpbFZpZXc7Ci0gICAgV0tXZWJWaWV3ICpfd2ViVmlldzsK
LX0KLQotLSAoaW5zdGFuY2V0eXBlKXdlYl9pbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQot
ewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSB3ZWJWaWV3Ondl
YlZpZXddKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFVJQ29sb3IgKmJhY2tncm91bmRD
b2xvciA9IFtVSUNvbG9yIGNvbG9yV2l0aFJlZDooMzguIC8gMjU1KSBncmVlbjooMzguIC8gMjU1
KSBibHVlOigzOC4gLyAyNTUpIGFscGhhOjFdOwotICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0g
YmFja2dyb3VuZENvbG9yOwotCi0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9taW1lVHlw
ZSA9IG1pbWVUeXBlOwotCi0gICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gd2ViVmlldy5z
Y3JvbGxWaWV3OwotICAgIFtzY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6MV07Ci0gICAg
W3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZToxXTsKLSAgICBbc2Nyb2xsVmlldyBzZXRC
YWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKXdlYl9zZXRDb250ZW50UHJvdmlkZXJEYXRhOihOU0RhdGEgKilkYXRhIHN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgX3N1Z2dlc3RlZEZpbGVu
YW1lID0gYWRvcHROUyhbZmlsZW5hbWUgY29weV0pOwotICAgIF9kYXRhID0gYWRvcHROUyhbZGF0
YSBjb3B5XSk7Ci0KLSAgICBOU1N0cmluZyAqY29udGVudFR5cGUgPSBnZXRVVElGb3JTeXN0ZW1Q
cmV2aWV3TUlNRVR5cGUoX21pbWVUeXBlLmdldCgpKTsKLQotICAgIF9pdGVtID0gYWRvcHROUyhb
UEFMOjphbGxvY1FMSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhUHJvdmlkZXI6c2VsZiBjb250
ZW50VHlwZTpjb250ZW50VHlwZSBwcmV2aWV3VGl0bGU6X3N1Z2dlc3RlZEZpbGVuYW1lLmdldCgp
XSk7Ci0gICAgW19pdGVtIHNldFVzZUxvYWRpbmdUaW1lb3V0Ok5PXTsKLQotICAgIF90aHVtYm5h
aWxWaWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZUaHVtYm5haWxWaWV3SW5zdGFuY2UoKSBpbml0XSk7
Ci0gICAgW190aHVtYm5haWxWaWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgIFtzZWxmIHNldEF1
dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVXaWR0aCB8IFVJVmlld0F1
dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0XTsKLQotICAgIFtzZWxmIHNldEF1dG9yZXNpemVzU3Vi
dmlld3M6WUVTXTsKLSAgICBbc2VsZiBzZXRDbGlwc1RvQm91bmRzOllFU107Ci0gICAgW3NlbGYg
YWRkU3VidmlldzpfdGh1bWJuYWlsVmlldy5nZXQoKV07Ci0gICAgW3NlbGYgX2xheW91dFRodW1i
bmFpbFZpZXddOwotCi0gICAgYXV0byBzY3JlZW5Cb3VuZHMgPSBVSVNjcmVlbi5tYWluU2NyZWVu
LmJvdW5kczsKLSAgICBDR0Zsb2F0IG1heERpbWVuc2lvbiA9IENHRmxvYXRNaW4oc2NyZWVuQm91
bmRzLnNpemUud2lkdGgsIHNjcmVlbkJvdW5kcy5zaXplLmhlaWdodCk7Ci0gICAgW190aHVtYm5h
aWxWaWV3IHNldE1heFRodW1ibmFpbFNpemU6Q0dTaXplTWFrZShtYXhEaW1lbnNpb24sIG1heERp
bWVuc2lvbildOwotCi0gICAgW190aHVtYm5haWxWaWV3IHNldFRodW1ibmFpbEl0ZW06X2l0ZW0u
Z2V0KCldOwotfQotCi0tICh2b2lkKV9sYXlvdXRUaHVtYm5haWxWaWV3Ci17Ci0gICAgaWYgKF90
aHVtYm5haWxWaWV3KSB7Ci0gICAgICAgIFVJRWRnZUluc2V0cyBzYWZlQXJlYUluc2V0cyA9IF93
ZWJWaWV3Ll9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwotICAgICAgICBVSUVkZ2VJ
bnNldHMgb2JzY3VyZWRBcmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkT2JzY3VyZWRJbnNl
dDsKLQotICAgICAgICBDR1JlY3QgbGF5b3V0RnJhbWUgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3Qo
c2VsZi5mcmFtZSwgc2FmZUFyZWFJbnNldHMpOwotCi0gICAgICAgIGxheW91dEZyYW1lLnNpemUu
d2lkdGggLT0gb2JzY3VyZWRBcmVhSW5zZXRzLmxlZnQgKyBvYnNjdXJlZEFyZWFJbnNldHMucmln
aHQ7Ci0gICAgICAgIGxheW91dEZyYW1lLnNpemUuaGVpZ2h0IC09IG9ic2N1cmVkQXJlYUluc2V0
cy50b3AgKyBvYnNjdXJlZEFyZWFJbnNldHMuYm90dG9tOwotCi0gICAgICAgIFtfdGh1bWJuYWls
VmlldyBzZXRGcmFtZTpsYXlvdXRGcmFtZV07Ci0gICAgICAgIFtfdGh1bWJuYWlsVmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOlVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodF07Ci0gICAgfQotfQotCi0jcHJhZ21hIG1hcmsgQVNW
VGh1bWJuYWlsVmlld0RlbGVnYXRlCi0KLS0gKHZvaWQpdGh1bWJuYWlsVmlldzooQVNWVGh1bWJu
YWlsVmlldyAqKXRodW1ibmFpbFZpZXcgd2FudHNUb1ByZXNlbnRQcmV2aWV3Q29udHJvbGxlcjoo
UUxQcmV2aWV3Q29udHJvbGxlciAqKXByZXZpZXdDb250cm9sbGVyIGZvckl0ZW06KFFMSXRlbSAq
KWl0ZW0KLXsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmll
dy0+X3BhZ2U7Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
ID0gcGFnZS0+dWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKLSAgICBbcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpwcmV2aWV3Q29udHJv
bGxlciBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwotfQotCi0jcHJhZ21hIG1hcmsgV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyIHByb3RvY29sCi0KLS0gKFVJVmlldyAqKXdlYl9jb250ZW50
VmlldwotewotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChCT09MKXdlYl9yZXF1aXJlc0N1c3Rv
bVNuYXBzaG90dGluZwotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0
TWluaW11bVNpemU6KENHU2l6ZSlzaXplCi17Ci19Ci0KLS0gKHZvaWQpd2ViX3NldE92ZXJsYWlk
QWNjZXNzb3J5Vmlld3NJbnNldDooQ0dTaXplKWluc2V0Ci17Ci19Ci0KLS0gKHZvaWQpd2ViX2Nv
bXB1dGVkQ29udGVudEluc2V0RGlkQ2hhbmdlCi17Ci0gICAgW3NlbGYgX2xheW91dFRodW1ibmFp
bFZpZXddOwotfQotCi0tICh2b2lkKXdlYl9zZXRGaXhlZE92ZXJsYXlWaWV3OihVSVZpZXcgKilm
aXhlZE92ZXJsYXlWaWV3Ci17Ci19Ci0KLS0gKHZvaWQpd2ViX2RpZFNhbWVEb2N1bWVudE5hdmln
YXRpb246KFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpbmF2aWdhdGlvblR5cGUKLXsKLX0K
LQotLSAoQk9PTCl3ZWJfaXNCYWNrZ3JvdW5kCi17Ci0gICAgcmV0dXJuIHNlbGYuaXNCYWNrZ3Jv
dW5kOwotfQotCi0jcHJhZ21hIG1hcmsgRmluZC1pbi1QYWdlCi0KLS0gKHZvaWQpd2ViX2NvdW50
U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMp
b3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAotewotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBwYWdlLT5maW5k
Q2xpZW50KCkuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHBhZ2UuZ2V0KCksIHN0cmluZywgMCk7Ci19
Ci0KLS0gKHZvaWQpd2ViX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9X
S0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKLXsKLSAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7Ci0g
ICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZhaWxUb0ZpbmRTdHJpbmcocGFnZS5nZXQoKSwgc3Ry
aW5nKTsKLX0KLQotLSAodm9pZCl3ZWJfaGlkZUZpbmRVSQotewotfQotCi0jcHJhZ21hIG1hcmsg
UUxQcmV2aWV3SXRlbURhdGFQcm92aWRlcgotCi0tIChOU0RhdGEgKilwcm92aWRlRGF0YUZvckl0
ZW06KFFMSXRlbSAqKWl0ZW0KLXsKLSAgICByZXR1cm4gX2RhdGEuZ2V0KCk7Ci19Ci0KLUBlbmQK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tVU0RQ
cmV2aWV3Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVVNEUHJldmlld1Zp
ZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MmZkYTkxODQ0ZWNhYWEwYWZmMmZkOTNkMjlhMGU4MWQ4MmNkZjZk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVVNEUHJl
dmlld1ZpZXcuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShTWVNURU1f
UFJFVklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKworI2ltcG9ydCAiV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXIuaCIKKyNpbXBvcnQgPFF1aWNrTG9vay9RdWlja0xvb2suaD4KKyNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KKworQGlu
dGVyZmFjZSBXS1VTRFByZXZpZXdWaWV3IDogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFFMUHJldmlld0l0ZW1EYXRhUHJvdmlkZXI+CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tVU0RQcmV2aWV3Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1VTRFBy
ZXZpZXdWaWV3Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZGU2NzJhMzQyYzQwMDUwNDllMmYxYWMxZjgxNzZi
OWIwZWMwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tVU0RQcmV2aWV3Vmlldy5tbQpAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1VTRFByZXZpZXdWaWV3LmgiCisKKyNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisKKyNp
bXBvcnQgIkFQSUZpbmRDbGllbnQuaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0
ICJXS1dlYlZpZXdJT1MuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxp
dGllcy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQg
PHBhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tT
b2Z0TGluay5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwor
U09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZUaHVtYm5haWxWaWV3KTsKKworc3RhdGlj
IE5TU3RyaW5nICpnZXRVVElGb3JTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKK3sKKyAgICBpZiAoIVdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlN
RVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFdlYkNv
cmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7Cit9CisKK0BpbnRlcmZhY2UgV0tVU0RQcmV2
aWV3VmlldyAoKSA8QVNWVGh1bWJuYWlsVmlld0RlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV0tVU0RQcmV2aWV3VmlldyB7CisgICAgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBf
aXRlbVByb3ZpZGVyOworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gX3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4g
X21pbWVUeXBlOworICAgIFJldGFpblB0cjxRTEl0ZW0+IF9pdGVtOworICAgIFJldGFpblB0cjxB
U1ZUaHVtYm5haWxWaWV3PiBfdGh1bWJuYWlsVmlldzsKKyAgICBXS1dlYlZpZXcgKl93ZWJWaWV3
OworfQorCistIChpbnN0YW5jZXR5cGUpd2ViX2luaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSB3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBl
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lIHdlYlZpZXc6
d2ViVmlld10pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVUlDb2xvciAqYmFja2dyb3Vu
ZENvbG9yID0gW1VJQ29sb3IgY29sb3JXaXRoUmVkOigzOC4gLyAyNTUpIGdyZWVuOigzOC4gLyAy
NTUpIGJsdWU6KDM4LiAvIDI1NSkgYWxwaGE6MV07CisgICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3Ig
PSBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgX21pbWVU
eXBlID0gbWltZVR5cGU7CisKKyAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3
LnNjcm9sbFZpZXc7CisgICAgW3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2FsZToxXTsKKyAg
ICBbc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOjFdOworICAgIFtzY3JvbGxWaWV3IHNl
dEJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3JdOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpd2ViX3NldENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEgc3Vn
Z2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKK3sKKyAgICBfc3VnZ2VzdGVkRmls
ZW5hbWUgPSBhZG9wdE5TKFtmaWxlbmFtZSBjb3B5XSk7CisgICAgX2RhdGEgPSBhZG9wdE5TKFtk
YXRhIGNvcHldKTsKKworICAgIE5TU3RyaW5nICpjb250ZW50VHlwZSA9IGdldFVUSUZvclVTRE1J
TUVUeXBlKF9taW1lVHlwZS5nZXQoKSk7CisKKyAgICBfaXRlbSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NRTEl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoRGF0YVByb3ZpZGVyOnNlbGYgY29udGVudFR5cGU6
Y29udGVudFR5cGUgcHJldmlld1RpdGxlOl9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKV0pOworICAg
IFtfaXRlbSBzZXRVc2VMb2FkaW5nVGltZW91dDpOT107CisKKyAgICBfdGh1bWJuYWlsVmlldyA9
IGFkb3B0TlMoW2FsbG9jQVNWVGh1bWJuYWlsVmlld0luc3RhbmNlKCkgaW5pdF0pOworICAgIFtf
dGh1bWJuYWlsVmlldyBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBzZXRBdXRvcmVzaXpp
bmdNYXNrOlVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdBdXRvcmVzaXpp
bmdGbGV4aWJsZUhlaWdodF07CisKKyAgICBbc2VsZiBzZXRBdXRvcmVzaXplc1N1YnZpZXdzOllF
U107CisgICAgW3NlbGYgc2V0Q2xpcHNUb0JvdW5kczpZRVNdOworICAgIFtzZWxmIGFkZFN1YnZp
ZXc6X3RodW1ibmFpbFZpZXcuZ2V0KCldOworICAgIFtzZWxmIF9sYXlvdXRUaHVtYm5haWxWaWV3
XTsKKworICAgIGF1dG8gc2NyZWVuQm91bmRzID0gVUlTY3JlZW4ubWFpblNjcmVlbi5ib3VuZHM7
CisgICAgQ0dGbG9hdCBtYXhEaW1lbnNpb24gPSBDR0Zsb2F0TWluKHNjcmVlbkJvdW5kcy5zaXpl
LndpZHRoLCBzY3JlZW5Cb3VuZHMuc2l6ZS5oZWlnaHQpOworICAgIFtfdGh1bWJuYWlsVmlldyBz
ZXRNYXhUaHVtYm5haWxTaXplOkNHU2l6ZU1ha2UobWF4RGltZW5zaW9uLCBtYXhEaW1lbnNpb24p
XTsKKworICAgIFtfdGh1bWJuYWlsVmlldyBzZXRUaHVtYm5haWxJdGVtOl9pdGVtLmdldCgpXTsK
K30KKworLSAodm9pZClfbGF5b3V0VGh1bWJuYWlsVmlldworeworICAgIGlmIChfdGh1bWJuYWls
VmlldykgeworICAgICAgICBVSUVkZ2VJbnNldHMgc2FmZUFyZWFJbnNldHMgPSBfd2ViVmlldy5f
Y29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldDsKKyAgICAgICAgVUlFZGdlSW5zZXRzIG9i
c2N1cmVkQXJlYUluc2V0cyA9IF93ZWJWaWV3Ll9jb21wdXRlZE9ic2N1cmVkSW5zZXQ7CisKKyAg
ICAgICAgQ0dSZWN0IGxheW91dEZyYW1lID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNlbGYuZnJh
bWUsIHNhZmVBcmVhSW5zZXRzKTsKKworICAgICAgICBsYXlvdXRGcmFtZS5zaXplLndpZHRoIC09
IG9ic2N1cmVkQXJlYUluc2V0cy5sZWZ0ICsgb2JzY3VyZWRBcmVhSW5zZXRzLnJpZ2h0OworICAg
ICAgICBsYXlvdXRGcmFtZS5zaXplLmhlaWdodCAtPSBvYnNjdXJlZEFyZWFJbnNldHMudG9wICsg
b2JzY3VyZWRBcmVhSW5zZXRzLmJvdHRvbTsKKworICAgICAgICBbX3RodW1ibmFpbFZpZXcgc2V0
RnJhbWU6bGF5b3V0RnJhbWVdOworICAgICAgICBbX3RodW1ibmFpbFZpZXcgc2V0QXV0b3Jlc2l6
aW5nTWFzazpVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6
aW5nRmxleGlibGVIZWlnaHRdOworICAgIH0KK30KKworI3ByYWdtYSBtYXJrIEFTVlRodW1ibmFp
bFZpZXdEZWxlZ2F0ZQorCistICh2b2lkKXRodW1ibmFpbFZpZXc6KEFTVlRodW1ibmFpbFZpZXcg
Kil0aHVtYm5haWxWaWV3IHdhbnRzVG9QcmVzZW50UHJldmlld0NvbnRyb2xsZXI6KFFMUHJldmll
d0NvbnRyb2xsZXIgKilwcmV2aWV3Q29udHJvbGxlciBmb3JJdGVtOihRTEl0ZW0gKilpdGVtCit7
CisgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdl
OworICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IHBhZ2Ut
PnVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CisgICAgW3ByZXNlbnRpbmdW
aWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6cHJldmlld0NvbnRyb2xsZXIgYW5p
bWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKK30KKworI3ByYWdtYSBtYXJrIFdLV2ViVmlld0Nv
bnRlbnRQcm92aWRlciBwcm90b2NvbAorCistIChVSVZpZXcgKil3ZWJfY29udGVudFZpZXcKK3sK
KyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoQk9PTCl3ZWJfcmVxdWlyZXNDdXN0b21TbmFwc2hv
dHRpbmcKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0gKHZvaWQpd2ViX3NldE1pbmltdW1T
aXplOihDR1NpemUpc2l6ZQoreworfQorCistICh2b2lkKXdlYl9zZXRPdmVybGFpZEFjY2Vzc29y
eVZpZXdzSW5zZXQ6KENHU2l6ZSlpbnNldAoreworfQorCistICh2b2lkKXdlYl9jb21wdXRlZENv
bnRlbnRJbnNldERpZENoYW5nZQoreworICAgIFtzZWxmIF9sYXlvdXRUaHVtYm5haWxWaWV3XTsK
K30KKworLSAodm9pZCl3ZWJfc2V0Rml4ZWRPdmVybGF5VmlldzooVUlWaWV3ICopZml4ZWRPdmVy
bGF5VmlldworeworfQorCistICh2b2lkKXdlYl9kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOihX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlCit7Cit9CisKKy0gKEJP
T0wpd2ViX2lzQmFja2dyb3VuZAoreworICAgIHJldHVybiBzZWxmLmlzQmFja2dyb3VuZDsKK30K
KworI3ByYWdtYSBtYXJrIEZpbmQtaW4tUGFnZQorCistICh2b2lkKXdlYl9jb3VudFN0cmluZ01h
dGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMg
bWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKK3sKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQ
YWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7CisgICAgcGFnZS0+ZmluZENsaWVudCgp
LmRpZENvdW50U3RyaW5nTWF0Y2hlcyhwYWdlLmdldCgpLCBzdHJpbmcsIDApOworfQorCistICh2
b2lkKXdlYl9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0
aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Cit7CisgICAgUmVmUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdlOworICAgIHBhZ2Ut
PmZpbmRDbGllbnQoKS5kaWRGYWlsVG9GaW5kU3RyaW5nKHBhZ2UuZ2V0KCksIHN0cmluZyk7Cit9
CisKKy0gKHZvaWQpd2ViX2hpZGVGaW5kVUkKK3sKK30KKworI3ByYWdtYSBtYXJrIFFMUHJldmll
d0l0ZW1EYXRhUHJvdmlkZXIKKworLSAoTlNEYXRhICopcHJvdmlkZURhdGFGb3JJdGVtOihRTEl0
ZW0gKilpdGVtCit7CisgICAgcmV0dXJuIF9kYXRhLmdldCgpOworfQorCitAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMDY3MjdlYWJlNjhiNTNjZGJlZmMxZTUyY2Y1YjU0OGM3ZDUyMzcwZC4uNGM4ZTY4NGQyYTYz
MWVkMzJmOTc0MjBlYzE3NTEwZWY4N2ZjNzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNyArNzQ4LDcgQEAKIAkJMzEzMTI2
MjExNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzEyNjFDMTQ4RkY4MkIwMEJB
MkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggKi87IH07CiAJCTMxNTVFRTBEMjY3M0Y0
RjAwMDg1RTU5QSAvKiBWaXNpb25LaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNTVFRTBDMjY3M0Y0RUYwMDg1RTU5QSAvKiBWaXNpb25LaXRT
UEkuaCAqLzsgfTsKIAkJMzE1NzEzNUYyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTU3MTM1RDIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCAq
LzsgfTsKLQkJMzE2QjhCNjQyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkI4QjYy
MjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi87IH07CisJCTMxNkI4
QjY0MjA1NEI1NTgwMEJENEE2MiAvKiBXS1VTRFByZXZpZXdWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIg
LyogV0tVU0RQcmV2aWV3Vmlldy5oICovOyB9OwogCQkzMTdGRTdDNTFDNDg3QTZDMDBBMENBODkg
LyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzIxQzQ4N0E2NjAwQTBDQTg5IC8qIEFQSUV4cGVyaW1l
bnRhbEZlYXR1cmUuaCAqLzsgfTsKIAkJMzE3RkU3Q0QxQzQ4N0RBRTAwQTBDQTg5IC8qIF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzkxQzQ4N0Q5RDAwQTBDQTg5IC8qIF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmVJbnRlcm5hbC5oICovOyB9OwogCQkzMTdGRTdDRjFDNDg3REJEMDBBMENBODkg
LyogX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzcxQzQ4N0Q5RDAwQTBDQTg5IC8qIF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzQzNyw4ICszNDM3LDggQEAKIAkJMzE1NzEzNUMyMDQwQTlCMjAwODRGOUNGIC8q
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTU3MTM1RDIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MDdGMzgxOTYyNzAwMjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Np
b25TdGF0ZUNvZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lT
ZXNzaW9uU3RhdGVDb2RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QjhC
NjEyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tOyBwYXRoID0gaW9zL1dLU3lzdGVtUHJl
dmlld1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkI4QjYyMjA1NEI1
NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3lz
dGVtUHJldmlld1ZpZXcuaDsgcGF0aCA9IGlvcy9XS1N5c3RlbVByZXZpZXdWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1VT
RFByZXZpZXdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tVU0RQcmV2aWV3Vmlldy5t
bTsgcGF0aCA9IGlvcy9XS1VTRFByZXZpZXdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1VTRFByZXZpZXdWaWV3Lmg7IHBhdGggPSBpb3MvV0tVU0RQcmV2aWV3
Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc4QUY5NzIwRTJBN0Y4MDA3
NERFOTQgLyogUERGS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBE
RktpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTdGRTdDMTFDNDg3QTY2
MDBBMENBODkgLyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3RkU3QzIxQzQ4N0E2NjAwQTBDQTg5IC8qIEFQSUV4cGVy
aW1lbnRhbEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXhw
ZXJpbWVudGFsRmVhdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Mywx
NCArNzY3MywxNCBAQAogCQkJCUNFNUI0Qzg3MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRp
Y0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tICovLAogCQkJCTI2RjEwQkU2MTkxODdFMkUwMDFEMEU2
OCAvKiBXS1N5bnRoZXRpY1RhcEdlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJMjZGMTBCRTcx
OTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIubW0gKi8s
Ci0JCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcuaCAq
LywKLQkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5t
bSAqLywKIAkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
aCAqLywKIAkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
bW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJl
Y3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9u
UmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8q
IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLywKKwkJCQkzMTZCOEI2MjIwNTRC
NTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5oICovLAorCQkJCTMxNkI4QjYxMjA1NEI1
NTgwMEJENEE2MiAvKiBXS1VTRFByZXZpZXdWaWV3Lm1tICovLAogCQkJCTJEMUU4MjIxMjE2RkZG
NTAwMEExNTI2NSAvKiBXS1dlYkV2ZW50LmggKi8sCiAJCQkJMkQxRTgyMjIyMTZGRkY1MTAwQTE1
MjY1IC8qIFdLV2ViRXZlbnQubW0gKi8sCiAJCQkpOwpAQCAtMTI5NjUsNyArMTI5NjUsNyBAQAog
CQkJCTk1OTM2NzVGMjUyRTVFMzEwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0
aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGMTBCRTgxOTE4
N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxNkI4QjY0MjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdW
aWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCOEI2NDIwNTRCNTU4MDBCRDRBNjIgLyogV0tV
U0RQcmV2aWV3Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGODg2QTYxRjJDMjI4MTAwQzE5
M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRDc1NUMxMUQ5
MUI4MTUwMDg0M0JEMSAvKiBXS1RleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ2
N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443855</attachid>
            <date>2021-11-10 12:56:24 -0800</date>
            <delta_ts>2021-11-10 15:01:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232961-20211111075623.patch</filename>
            <type>text/plain</type>
            <size>33120</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJjYTMxZDAyMzMzYzk0
YWUwNjVlNDYxZWQxMWE4NTRkMDJjYjQ1Yy4uYmE0ZDliNDM4ZTg2YmM2NTk3OTE4ZTA0NzYxMzA5
MDc4MTRlYzQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTExLTEwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBXS1N5c3RlbVByZXZpZXdWaWV3
IHNob3VsZCBiZSBjYWxsZWQgV0tVU0RQcmV2aWV3VmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84NTI2NTQxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW5hbWUgdGhlIFdlYkNvcmUgQVBJcyB0aGF0IGxvb2sgZm9yICJTeXN0ZW1QcmV2aWV3
IiBNSU1FLXR5cGVzCisgICAgICAgIHRvIGJlIGNsZWFyIHRoZXkgYXJlIGxvb2tpbmcgZm9yIFVT
RC4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNVU0RNSU1FVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSU1FVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKwogMjAyMS0x
MS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29y
a2Vycy5odG1sIGlzIGZsYWt5IGNyYXNoaW5nIGluIGRlYnVnCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMWE2YTAw
ZWJiZjlhMDI1MzJmZDUyYjZjZjVlNjRlMjZiZjFiZDYuLmU0YzAxZGVlY2I4YzQ5OTQ5YzhjYzg5
NGI2NzgyNDBlYmQyNmRiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMTEtMTAg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFdLU3lzdGVtUHJldmll
d1ZpZXcgc2hvdWxkIGJlIGNhbGxlZCBXS1VTRFByZXZpZXdWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg1MjY1NDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdLU3lzdGVtUHJldmlld1ZpZXcgaXMgYSB1bmluZm9ybWF0aXZlIG5hbWUuIFdL
VVNEUHJldmlld1ZpZXcgaXMgbW9yZSBhY2N1cmF0ZS4KKworICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eSBpbml0V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRy
b2xsZXI6OmNhblByZXZpZXcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tVU0RQ
cmV2aWV3Vmlldy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U3lzdGVtUHJldmlld1ZpZXcuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVVNEUHJldmll
d1ZpZXcubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0
ZW1QcmV2aWV3Vmlldy5tbS4KKyAgICAgICAgKGdldFVUSUZvclN5c3RlbVByZXZpZXdNSU1FVHlw
ZSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2luaXRXaXRoRnJhbWU6d2ViVmll
dzptaW1lVHlwZTpdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfc2V0Q29udGVu
dFByb3ZpZGVyRGF0YTpzdWdnZXN0ZWRGaWxlbmFtZTpdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2
aWV3VmlldyBfbGF5b3V0VGh1bWJuYWlsVmlld10pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdW
aWV3IHRodW1ibmFpbFZpZXc6d2FudHNUb1ByZXNlbnRQcmV2aWV3Q29udHJvbGxlcjpmb3JJdGVt
Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9jb250ZW50Vmlld10pOgorICAg
ICAgICAoK1tXS1VTRFByZXZpZXdWaWV3IHdlYl9yZXF1aXJlc0N1c3RvbVNuYXBzaG90dGluZ10p
OgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRNaW5pbXVtU2l6ZTpdKToKKyAg
ICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfc2V0T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0lu
c2V0Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9jb21wdXRlZENvbnRlbnRJ
bnNldERpZENoYW5nZV0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRGaXhl
ZE92ZXJsYXlWaWV3Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9kaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9p
c0JhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfY291bnRTdHJp
bmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1Zp
ZXcgd2ViX2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tVU0RQ
cmV2aWV3VmlldyB3ZWJfaGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3
IHByb3ZpZGVEYXRhRm9ySXRlbTpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMS0xMS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5kIHVubmVlZGVkIGJ1ZmZlciBh
bGxvY2F0aW9ucyBhbmQgY29weWluZyBpbiBVUkwgY29kZSwgYWxzbyByZW1vdmUgdW51c2VkIG1l
dGhvZHMgYW5kIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcAppbmRleCAyOWFhNWJmNmUxZjM4MDRkOTVkMGQ5Yzg3YmQzYjNmMWIzNTZiOGFj
Li42ZjdhZjEyN2NmY2UwNGUzYTA1Y2UwZmM2OTZhNzZiOGQwYWQxZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNjcwLDIyICs2NzAsMjIg
QEAgY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQogICAgIHJldHVybiBkZWZhdWx0TUlN
RVR5cGU7CiB9CiAKLWNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgc3lzdGVtUHJl
dmlld01JTUVUeXBlQXJyYXlbXSA9IHsKK2NvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVy
YWwgdXNkTUlNRVR5cGVBcnJheVtdID0gewogICAgICJtb2RlbC91c2QiLCAvLyBVbm9mZmljaWFs
LCBidXQgc3VwcG9ydGVkIGJlY2F1c2Ugd2UgZG9jdW1lbnRlZCB0aGlzLgogICAgICJtb2RlbC92
bmQucGl4YXIudXNkIiwgLy8gVW5vZmZpY2lhbCwgYnV0IHN1cHBvcnRlZCBiZWNhdXNlIHdlIGRv
Y3VtZW50ZWQgdGhpcy4KICAgICAibW9kZWwvdm5kLnJlYWxpdHkiLAogICAgICJtb2RlbC92bmQu
dXNkeit6aXAiLCAvLyBUaGUgb2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNz
aWdubWVudHMvbWVkaWEtdHlwZXMvbW9kZWwvdm5kLnVzZHoremlwCiB9OwogCi1GaXhlZFZlY3Rv
cjxjb25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygp
CitGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVz
KCkKIHsKLSAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHN5c3RlbVByZXZpZXdNSU1FVHlwZUFy
cmF5KTsKKyAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVzZE1JTUVUeXBlQXJyYXkpOwogfQog
Ci1ib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5
U2V0IHN5c3RlbVByZXZpZXdNSU1FVHlwZVNldCB7IHN5c3RlbVByZXZpZXdNSU1FVHlwZUFycmF5
IH07Ci0gICAgcmV0dXJuIHN5c3RlbVByZXZpZXdNSU1FVHlwZVNldC5jb250YWlucyhtaW1lVHlw
ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCB1c2RNSU1FVHlwZVNldCB7
IHVzZE1JTUVUeXBlQXJyYXkgfTsKKyAgICByZXR1cm4gdXNkTUlNRVR5cGVTZXQuY29udGFpbnMo
bWltZVR5cGUpOwogfQogCiAvLyBGSVhNRTogTm90IGdyZWF0IHRoYXQgQ1VSTCBuZWVkcyB0aGlz
IGNvbmNlcHQ7IG90aGVyIHBsYXRmb3JtcyBkbyBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNThjMTg4ZDY4YzU0MzEwMjA3NGU1YTFkOWExMmJh
NjViMjEwMGQ2Zi4uMGFkMjY5N2I5NmQyY2VhMmI3OGJiNjIxNTQyM2NjMmE1NjA1YTdjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtMTA2LDcgKzEw
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1Bvc3RTY3JpcHRNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1BE
Rk9yUG9zdFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNVU0RNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBh
IE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgc2hvd24gaW5zaWRlIGEgcGFnZS4KICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSgpLCBp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoKSwKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcGRmTUlNRVR5cGVzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRW
ZWN0b3I8Y29uc3QgY2hhcio+IHN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHVzZE1JTUVUeXBlcygpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZO
ZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbQppbmRleCBhNTVkNWEwNWU0ZGRjYmY1YzgxYzcxOTFiNGRjYjlkMmMzNDFl
Yjc1Li4wZTJmYmExYmUxMDY3NTRjZjY3OWYwNzY4MzQ5NTBiYWUzZWU0NzlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29h
Lm1tCkBAIC0xMDMsOSArMTAzLDkgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKLSAgICAvLyBTeXN0ZW0gUHJldmlld3MgYWNjZXB0IHNvbWUgbm9uLXN0YW5kYXJk
IE1JTUVUeXBlcywgc28gd2UgY2FuJ3QgcmVseSBvbgorICAgIC8vIFdlIGFjY2VwdCBzb21lIG5v
bi1zdGFuZGFyZCBVU0QgTUlNRVR5cGVzLCBzbyB3ZSBjYW4ndCByZWx5IG9uCiAgICAgLy8gdGhl
IGZpbGUgdHlwZSBtYXBwaW5ncy4KLSAgICBpZiAoaXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUodHlw
ZSkpCisgICAgaWYgKGlzVVNETUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiAidXNkeiJf
czsKIAogICAgIHJldHVybiBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10g
cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggMGNiZTM3ZmZhNzBmYTdjYjU2ZGVmMDk4MmRiYTBlM2Y0YmY5OGQy
YS4uMWJmZThiMGYwNzI4YmM4ZDczMzA1NDYxOTQ0ODc2OWJlMGRmNjA5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNTA2LDcgKzUwNiw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIubW0KIFVJUHJvY2Vzcy9p
b3MvV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbQogVUlQcm9jZXNzL2lvcy9XS1N5
bnRoZXRpY1RhcEdlc3R1cmVSZWNvZ25pemVyLm1tCi1VSVByb2Nlc3MvaW9zL1dLU3lzdGVtUHJl
dmlld1ZpZXcubW0KK1VJUHJvY2Vzcy9pb3MvV0tVU0RQcmV2aWV3Vmlldy5tbQogVUlQcm9jZXNz
L2lvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tU
ZXh0U2VsZWN0aW9uUmVjdC5tbQogVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDIwYzVjYjhjMzBmYzIzNzkwODc4MmY0NmE3
N2QyNDQ5ZjM0YjM1Y2YuLjY5NDIwZDc5Nzc0ZDE1ZDEwMDExZmVkM2NkYWU4ZjZhNzQwYjYyMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCkBAIC0yOSw3ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tQREZWaWV3LmgiCi0jaW1wb3J0
ICJXS1N5c3RlbVByZXZpZXdWaWV3LmgiCisjaW1wb3J0ICJXS1VTRFByZXZpZXdWaWV3LmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTU2LDgg
KzU2LDggQEAKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lU
X0lOVEVSTkFMUykKICAgICBpZiAoY29uZmlndXJhdGlvbi5fc3lzdGVtUHJldmlld0VuYWJsZWQp
IHsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
c3lzdGVtUHJldmlld01JTUVUeXBlcygpKQotICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92
aWRlcjpbV0tTeXN0ZW1QcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07Cisg
ICAgICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnVzZE1J
TUVUeXBlcygpKQorICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tVU0RQcmV2
aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07CiAgICAgfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNw
cAppbmRleCBiOGJiZjJiN2FhMDUzNTdlODQzZTMwYTQ5ZWQ2MTUyNTk2YjVjZTI5Li4xY2JhY2Vj
YmViZWJmMmI2ZjZjOTUyOTU1NTJkOGUyNjIzZjk4Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIAogYm9vbCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIHJldHVybiBX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlNRVR5cGUo
bWltZVR5cGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U3lzdGVtUHJldmlld1ZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYwNjRk
ZjI4MDE2ZWQxMzY1MWQyZGNhZGIyODY2M2RkZDQyNDcyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tT
eXN0ZW1QcmV2aWV3Vmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCi0KLSNpbXBvcnQgIldLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIgotI2lt
cG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCi0jaW1wb3J0IDxRdWlja0xvb2svUXVp
Y2tMb29rLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
UXVpY2tMb29rU1BJLmg+Ci0KLUBpbnRlcmZhY2UgV0tTeXN0ZW1QcmV2aWV3VmlldyA6IFdLQXBw
bGljYXRpb25TdGF0ZVRyYWNraW5nVmlldyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLCBRTFBy
ZXZpZXdJdGVtRGF0YVByb3ZpZGVyPgotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU3lzdGVtUHJldmlld1ZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzc4YWFmZmMwMzE3ZGE0YzBkNzVjOGE3Zjk1ODc1NjI2ZjRmZGY4
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDIwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIldLU3lzdGVtUHJldmlld1ZpZXcuaCIKLQotI2lmIFVTRShTWVNURU1fUFJFVklF
VykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLQotI2ltcG9ydCAiQVBJRmluZENs
aWVudC5oIgotI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKLSNpbXBvcnQgIldLV2ViVmlld0lPUy5o
IgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMv
TW9iaWxlQ29yZVNlcnZpY2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01JTUVU
eXBlUmVnaXN0cnkuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+Ci0jaW1wb3J0
IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oPgot
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1TT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwotU09GVF9MSU5LX0NMQVNTKEFz
c2V0Vmlld2VyLCBBU1ZUaHVtYm5haWxWaWV3KTsKLQotc3RhdGljIE5TU3RyaW5nICpnZXRVVElG
b3JTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBp
ZiAoIVdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKG1p
bWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBXZWJDb3JlOjpVVElG
cm9tTUlNRVR5cGUobWltZVR5cGUpOwotfQotCi1AaW50ZXJmYWNlIFdLU3lzdGVtUHJldmlld1Zp
ZXcgKCkgPEFTVlRodW1ibmFpbFZpZXdEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdLU3lzdGVtUHJldmlld1ZpZXcgewotICAgIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gX2l0
ZW1Qcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IF9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9t
aW1lVHlwZTsKLSAgICBSZXRhaW5QdHI8UUxJdGVtPiBfaXRlbTsKLSAgICBSZXRhaW5QdHI8QVNW
VGh1bWJuYWlsVmlldz4gX3RodW1ibmFpbFZpZXc7Ci0gICAgV0tXZWJWaWV3ICpfd2ViVmlldzsK
LX0KLQotLSAoaW5zdGFuY2V0eXBlKXdlYl9pbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQot
ewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSB3ZWJWaWV3Ondl
YlZpZXddKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFVJQ29sb3IgKmJhY2tncm91bmRD
b2xvciA9IFtVSUNvbG9yIGNvbG9yV2l0aFJlZDooMzguIC8gMjU1KSBncmVlbjooMzguIC8gMjU1
KSBibHVlOigzOC4gLyAyNTUpIGFscGhhOjFdOwotICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0g
YmFja2dyb3VuZENvbG9yOwotCi0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9taW1lVHlw
ZSA9IG1pbWVUeXBlOwotCi0gICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gd2ViVmlldy5z
Y3JvbGxWaWV3OwotICAgIFtzY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6MV07Ci0gICAg
W3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZToxXTsKLSAgICBbc2Nyb2xsVmlldyBzZXRC
YWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKXdlYl9zZXRDb250ZW50UHJvdmlkZXJEYXRhOihOU0RhdGEgKilkYXRhIHN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgX3N1Z2dlc3RlZEZpbGVu
YW1lID0gYWRvcHROUyhbZmlsZW5hbWUgY29weV0pOwotICAgIF9kYXRhID0gYWRvcHROUyhbZGF0
YSBjb3B5XSk7Ci0KLSAgICBOU1N0cmluZyAqY29udGVudFR5cGUgPSBnZXRVVElGb3JTeXN0ZW1Q
cmV2aWV3TUlNRVR5cGUoX21pbWVUeXBlLmdldCgpKTsKLQotICAgIF9pdGVtID0gYWRvcHROUyhb
UEFMOjphbGxvY1FMSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhUHJvdmlkZXI6c2VsZiBjb250
ZW50VHlwZTpjb250ZW50VHlwZSBwcmV2aWV3VGl0bGU6X3N1Z2dlc3RlZEZpbGVuYW1lLmdldCgp
XSk7Ci0gICAgW19pdGVtIHNldFVzZUxvYWRpbmdUaW1lb3V0Ok5PXTsKLQotICAgIF90aHVtYm5h
aWxWaWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZUaHVtYm5haWxWaWV3SW5zdGFuY2UoKSBpbml0XSk7
Ci0gICAgW190aHVtYm5haWxWaWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgIFtzZWxmIHNldEF1
dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVXaWR0aCB8IFVJVmlld0F1
dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0XTsKLQotICAgIFtzZWxmIHNldEF1dG9yZXNpemVzU3Vi
dmlld3M6WUVTXTsKLSAgICBbc2VsZiBzZXRDbGlwc1RvQm91bmRzOllFU107Ci0gICAgW3NlbGYg
YWRkU3VidmlldzpfdGh1bWJuYWlsVmlldy5nZXQoKV07Ci0gICAgW3NlbGYgX2xheW91dFRodW1i
bmFpbFZpZXddOwotCi0gICAgYXV0byBzY3JlZW5Cb3VuZHMgPSBVSVNjcmVlbi5tYWluU2NyZWVu
LmJvdW5kczsKLSAgICBDR0Zsb2F0IG1heERpbWVuc2lvbiA9IENHRmxvYXRNaW4oc2NyZWVuQm91
bmRzLnNpemUud2lkdGgsIHNjcmVlbkJvdW5kcy5zaXplLmhlaWdodCk7Ci0gICAgW190aHVtYm5h
aWxWaWV3IHNldE1heFRodW1ibmFpbFNpemU6Q0dTaXplTWFrZShtYXhEaW1lbnNpb24sIG1heERp
bWVuc2lvbildOwotCi0gICAgW190aHVtYm5haWxWaWV3IHNldFRodW1ibmFpbEl0ZW06X2l0ZW0u
Z2V0KCldOwotfQotCi0tICh2b2lkKV9sYXlvdXRUaHVtYm5haWxWaWV3Ci17Ci0gICAgaWYgKF90
aHVtYm5haWxWaWV3KSB7Ci0gICAgICAgIFVJRWRnZUluc2V0cyBzYWZlQXJlYUluc2V0cyA9IF93
ZWJWaWV3Ll9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwotICAgICAgICBVSUVkZ2VJ
bnNldHMgb2JzY3VyZWRBcmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkT2JzY3VyZWRJbnNl
dDsKLQotICAgICAgICBDR1JlY3QgbGF5b3V0RnJhbWUgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3Qo
c2VsZi5mcmFtZSwgc2FmZUFyZWFJbnNldHMpOwotCi0gICAgICAgIGxheW91dEZyYW1lLnNpemUu
d2lkdGggLT0gb2JzY3VyZWRBcmVhSW5zZXRzLmxlZnQgKyBvYnNjdXJlZEFyZWFJbnNldHMucmln
aHQ7Ci0gICAgICAgIGxheW91dEZyYW1lLnNpemUuaGVpZ2h0IC09IG9ic2N1cmVkQXJlYUluc2V0
cy50b3AgKyBvYnNjdXJlZEFyZWFJbnNldHMuYm90dG9tOwotCi0gICAgICAgIFtfdGh1bWJuYWls
VmlldyBzZXRGcmFtZTpsYXlvdXRGcmFtZV07Ci0gICAgICAgIFtfdGh1bWJuYWlsVmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOlVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodF07Ci0gICAgfQotfQotCi0jcHJhZ21hIG1hcmsgQVNW
VGh1bWJuYWlsVmlld0RlbGVnYXRlCi0KLS0gKHZvaWQpdGh1bWJuYWlsVmlldzooQVNWVGh1bWJu
YWlsVmlldyAqKXRodW1ibmFpbFZpZXcgd2FudHNUb1ByZXNlbnRQcmV2aWV3Q29udHJvbGxlcjoo
UUxQcmV2aWV3Q29udHJvbGxlciAqKXByZXZpZXdDb250cm9sbGVyIGZvckl0ZW06KFFMSXRlbSAq
KWl0ZW0KLXsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmll
dy0+X3BhZ2U7Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
ID0gcGFnZS0+dWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKLSAgICBbcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpwcmV2aWV3Q29udHJv
bGxlciBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwotfQotCi0jcHJhZ21hIG1hcmsgV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyIHByb3RvY29sCi0KLS0gKFVJVmlldyAqKXdlYl9jb250ZW50
VmlldwotewotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChCT09MKXdlYl9yZXF1aXJlc0N1c3Rv
bVNuYXBzaG90dGluZwotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLSAodm9pZCl3ZWJfc2V0
TWluaW11bVNpemU6KENHU2l6ZSlzaXplCi17Ci19Ci0KLS0gKHZvaWQpd2ViX3NldE92ZXJsYWlk
QWNjZXNzb3J5Vmlld3NJbnNldDooQ0dTaXplKWluc2V0Ci17Ci19Ci0KLS0gKHZvaWQpd2ViX2Nv
bXB1dGVkQ29udGVudEluc2V0RGlkQ2hhbmdlCi17Ci0gICAgW3NlbGYgX2xheW91dFRodW1ibmFp
bFZpZXddOwotfQotCi0tICh2b2lkKXdlYl9zZXRGaXhlZE92ZXJsYXlWaWV3OihVSVZpZXcgKilm
aXhlZE92ZXJsYXlWaWV3Ci17Ci19Ci0KLS0gKHZvaWQpd2ViX2RpZFNhbWVEb2N1bWVudE5hdmln
YXRpb246KFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpbmF2aWdhdGlvblR5cGUKLXsKLX0K
LQotLSAoQk9PTCl3ZWJfaXNCYWNrZ3JvdW5kCi17Ci0gICAgcmV0dXJuIHNlbGYuaXNCYWNrZ3Jv
dW5kOwotfQotCi0jcHJhZ21hIG1hcmsgRmluZC1pbi1QYWdlCi0KLS0gKHZvaWQpd2ViX2NvdW50
U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMp
b3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAotewotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBwYWdlLT5maW5k
Q2xpZW50KCkuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHBhZ2UuZ2V0KCksIHN0cmluZywgMCk7Ci19
Ci0KLS0gKHZvaWQpd2ViX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9X
S0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKLXsKLSAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7Ci0g
ICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZhaWxUb0ZpbmRTdHJpbmcocGFnZS5nZXQoKSwgc3Ry
aW5nKTsKLX0KLQotLSAodm9pZCl3ZWJfaGlkZUZpbmRVSQotewotfQotCi0jcHJhZ21hIG1hcmsg
UUxQcmV2aWV3SXRlbURhdGFQcm92aWRlcgotCi0tIChOU0RhdGEgKilwcm92aWRlRGF0YUZvckl0
ZW06KFFMSXRlbSAqKWl0ZW0KLXsKLSAgICByZXR1cm4gX2RhdGEuZ2V0KCk7Ci19Ci0KLUBlbmQK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tVU0RQ
cmV2aWV3Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVVNEUHJldmlld1Zp
ZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MmZkYTkxODQ0ZWNhYWEwYWZmMmZkOTNkMjlhMGU4MWQ4MmNkZjZk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVVNEUHJl
dmlld1ZpZXcuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShTWVNURU1f
UFJFVklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKworI2ltcG9ydCAiV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXIuaCIKKyNpbXBvcnQgPFF1aWNrTG9vay9RdWlja0xvb2suaD4KKyNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KKworQGlu
dGVyZmFjZSBXS1VTRFByZXZpZXdWaWV3IDogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFFMUHJldmlld0l0ZW1EYXRhUHJvdmlkZXI+CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tVU0RQcmV2aWV3Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1VTRFBy
ZXZpZXdWaWV3Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZGU2NzJhMzQyYzQwMDUwNDllMmYxYWMxZjgxNzZi
OWIwZWMwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tVU0RQcmV2aWV3Vmlldy5tbQpAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1VTRFByZXZpZXdWaWV3LmgiCisKKyNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisKKyNp
bXBvcnQgIkFQSUZpbmRDbGllbnQuaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0
ICJXS1dlYlZpZXdJT1MuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxp
dGllcy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQg
PHBhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tT
b2Z0TGluay5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwor
U09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZUaHVtYm5haWxWaWV3KTsKKworc3RhdGlj
IE5TU3RyaW5nICpnZXRVVElGb3JTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKK3sKKyAgICBpZiAoIVdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVVNETUlN
RVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFdlYkNv
cmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7Cit9CisKK0BpbnRlcmZhY2UgV0tVU0RQcmV2
aWV3VmlldyAoKSA8QVNWVGh1bWJuYWlsVmlld0RlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV0tVU0RQcmV2aWV3VmlldyB7CisgICAgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBf
aXRlbVByb3ZpZGVyOworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gX3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4g
X21pbWVUeXBlOworICAgIFJldGFpblB0cjxRTEl0ZW0+IF9pdGVtOworICAgIFJldGFpblB0cjxB
U1ZUaHVtYm5haWxWaWV3PiBfdGh1bWJuYWlsVmlldzsKKyAgICBXS1dlYlZpZXcgKl93ZWJWaWV3
OworfQorCistIChpbnN0YW5jZXR5cGUpd2ViX2luaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSB3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBl
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lIHdlYlZpZXc6
d2ViVmlld10pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVUlDb2xvciAqYmFja2dyb3Vu
ZENvbG9yID0gW1VJQ29sb3IgY29sb3JXaXRoUmVkOigzOC4gLyAyNTUpIGdyZWVuOigzOC4gLyAy
NTUpIGJsdWU6KDM4LiAvIDI1NSkgYWxwaGE6MV07CisgICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3Ig
PSBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgX21pbWVU
eXBlID0gbWltZVR5cGU7CisKKyAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3
LnNjcm9sbFZpZXc7CisgICAgW3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2FsZToxXTsKKyAg
ICBbc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOjFdOworICAgIFtzY3JvbGxWaWV3IHNl
dEJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3JdOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpd2ViX3NldENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEgc3Vn
Z2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKK3sKKyAgICBfc3VnZ2VzdGVkRmls
ZW5hbWUgPSBhZG9wdE5TKFtmaWxlbmFtZSBjb3B5XSk7CisgICAgX2RhdGEgPSBhZG9wdE5TKFtk
YXRhIGNvcHldKTsKKworICAgIE5TU3RyaW5nICpjb250ZW50VHlwZSA9IGdldFVUSUZvclVTRE1J
TUVUeXBlKF9taW1lVHlwZS5nZXQoKSk7CisKKyAgICBfaXRlbSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NRTEl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoRGF0YVByb3ZpZGVyOnNlbGYgY29udGVudFR5cGU6
Y29udGVudFR5cGUgcHJldmlld1RpdGxlOl9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKV0pOworICAg
IFtfaXRlbSBzZXRVc2VMb2FkaW5nVGltZW91dDpOT107CisKKyAgICBfdGh1bWJuYWlsVmlldyA9
IGFkb3B0TlMoW2FsbG9jQVNWVGh1bWJuYWlsVmlld0luc3RhbmNlKCkgaW5pdF0pOworICAgIFtf
dGh1bWJuYWlsVmlldyBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBzZXRBdXRvcmVzaXpp
bmdNYXNrOlVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdBdXRvcmVzaXpp
bmdGbGV4aWJsZUhlaWdodF07CisKKyAgICBbc2VsZiBzZXRBdXRvcmVzaXplc1N1YnZpZXdzOllF
U107CisgICAgW3NlbGYgc2V0Q2xpcHNUb0JvdW5kczpZRVNdOworICAgIFtzZWxmIGFkZFN1YnZp
ZXc6X3RodW1ibmFpbFZpZXcuZ2V0KCldOworICAgIFtzZWxmIF9sYXlvdXRUaHVtYm5haWxWaWV3
XTsKKworICAgIGF1dG8gc2NyZWVuQm91bmRzID0gVUlTY3JlZW4ubWFpblNjcmVlbi5ib3VuZHM7
CisgICAgQ0dGbG9hdCBtYXhEaW1lbnNpb24gPSBDR0Zsb2F0TWluKHNjcmVlbkJvdW5kcy5zaXpl
LndpZHRoLCBzY3JlZW5Cb3VuZHMuc2l6ZS5oZWlnaHQpOworICAgIFtfdGh1bWJuYWlsVmlldyBz
ZXRNYXhUaHVtYm5haWxTaXplOkNHU2l6ZU1ha2UobWF4RGltZW5zaW9uLCBtYXhEaW1lbnNpb24p
XTsKKworICAgIFtfdGh1bWJuYWlsVmlldyBzZXRUaHVtYm5haWxJdGVtOl9pdGVtLmdldCgpXTsK
K30KKworLSAodm9pZClfbGF5b3V0VGh1bWJuYWlsVmlldworeworICAgIGlmIChfdGh1bWJuYWls
VmlldykgeworICAgICAgICBVSUVkZ2VJbnNldHMgc2FmZUFyZWFJbnNldHMgPSBfd2ViVmlldy5f
Y29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldDsKKyAgICAgICAgVUlFZGdlSW5zZXRzIG9i
c2N1cmVkQXJlYUluc2V0cyA9IF93ZWJWaWV3Ll9jb21wdXRlZE9ic2N1cmVkSW5zZXQ7CisKKyAg
ICAgICAgQ0dSZWN0IGxheW91dEZyYW1lID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNlbGYuZnJh
bWUsIHNhZmVBcmVhSW5zZXRzKTsKKworICAgICAgICBsYXlvdXRGcmFtZS5zaXplLndpZHRoIC09
IG9ic2N1cmVkQXJlYUluc2V0cy5sZWZ0ICsgb2JzY3VyZWRBcmVhSW5zZXRzLnJpZ2h0OworICAg
ICAgICBsYXlvdXRGcmFtZS5zaXplLmhlaWdodCAtPSBvYnNjdXJlZEFyZWFJbnNldHMudG9wICsg
b2JzY3VyZWRBcmVhSW5zZXRzLmJvdHRvbTsKKworICAgICAgICBbX3RodW1ibmFpbFZpZXcgc2V0
RnJhbWU6bGF5b3V0RnJhbWVdOworICAgICAgICBbX3RodW1ibmFpbFZpZXcgc2V0QXV0b3Jlc2l6
aW5nTWFzazpVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6
aW5nRmxleGlibGVIZWlnaHRdOworICAgIH0KK30KKworI3ByYWdtYSBtYXJrIEFTVlRodW1ibmFp
bFZpZXdEZWxlZ2F0ZQorCistICh2b2lkKXRodW1ibmFpbFZpZXc6KEFTVlRodW1ibmFpbFZpZXcg
Kil0aHVtYm5haWxWaWV3IHdhbnRzVG9QcmVzZW50UHJldmlld0NvbnRyb2xsZXI6KFFMUHJldmll
d0NvbnRyb2xsZXIgKilwcmV2aWV3Q29udHJvbGxlciBmb3JJdGVtOihRTEl0ZW0gKilpdGVtCit7
CisgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdl
OworICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IHBhZ2Ut
PnVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CisgICAgW3ByZXNlbnRpbmdW
aWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6cHJldmlld0NvbnRyb2xsZXIgYW5p
bWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKK30KKworI3ByYWdtYSBtYXJrIFdLV2ViVmlld0Nv
bnRlbnRQcm92aWRlciBwcm90b2NvbAorCistIChVSVZpZXcgKil3ZWJfY29udGVudFZpZXcKK3sK
KyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoQk9PTCl3ZWJfcmVxdWlyZXNDdXN0b21TbmFwc2hv
dHRpbmcKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0gKHZvaWQpd2ViX3NldE1pbmltdW1T
aXplOihDR1NpemUpc2l6ZQoreworfQorCistICh2b2lkKXdlYl9zZXRPdmVybGFpZEFjY2Vzc29y
eVZpZXdzSW5zZXQ6KENHU2l6ZSlpbnNldAoreworfQorCistICh2b2lkKXdlYl9jb21wdXRlZENv
bnRlbnRJbnNldERpZENoYW5nZQoreworICAgIFtzZWxmIF9sYXlvdXRUaHVtYm5haWxWaWV3XTsK
K30KKworLSAodm9pZCl3ZWJfc2V0Rml4ZWRPdmVybGF5VmlldzooVUlWaWV3ICopZml4ZWRPdmVy
bGF5VmlldworeworfQorCistICh2b2lkKXdlYl9kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOihX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlCit7Cit9CisKKy0gKEJP
T0wpd2ViX2lzQmFja2dyb3VuZAoreworICAgIHJldHVybiBzZWxmLmlzQmFja2dyb3VuZDsKK30K
KworI3ByYWdtYSBtYXJrIEZpbmQtaW4tUGFnZQorCistICh2b2lkKXdlYl9jb3VudFN0cmluZ01h
dGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMg
bWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKK3sKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQ
YWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7CisgICAgcGFnZS0+ZmluZENsaWVudCgp
LmRpZENvdW50U3RyaW5nTWF0Y2hlcyhwYWdlLmdldCgpLCBzdHJpbmcsIDApOworfQorCistICh2
b2lkKXdlYl9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0
aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Cit7CisgICAgUmVmUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdlOworICAgIHBhZ2Ut
PmZpbmRDbGllbnQoKS5kaWRGYWlsVG9GaW5kU3RyaW5nKHBhZ2UuZ2V0KCksIHN0cmluZyk7Cit9
CisKKy0gKHZvaWQpd2ViX2hpZGVGaW5kVUkKK3sKK30KKworI3ByYWdtYSBtYXJrIFFMUHJldmll
d0l0ZW1EYXRhUHJvdmlkZXIKKworLSAoTlNEYXRhICopcHJvdmlkZURhdGFGb3JJdGVtOihRTEl0
ZW0gKilpdGVtCit7CisgICAgcmV0dXJuIF9kYXRhLmdldCgpOworfQorCitAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMDY3MjdlYWJlNjhiNTNjZGJlZmMxZTUyY2Y1YjU0OGM3ZDUyMzcwZC4uNGM4ZTY4NGQyYTYz
MWVkMzJmOTc0MjBlYzE3NTEwZWY4N2ZjNzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNyArNzQ4LDcgQEAKIAkJMzEzMTI2
MjExNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzEyNjFDMTQ4RkY4MkIwMEJB
MkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggKi87IH07CiAJCTMxNTVFRTBEMjY3M0Y0
RjAwMDg1RTU5QSAvKiBWaXNpb25LaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNTVFRTBDMjY3M0Y0RUYwMDg1RTU5QSAvKiBWaXNpb25LaXRT
UEkuaCAqLzsgfTsKIAkJMzE1NzEzNUYyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTU3MTM1RDIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCAq
LzsgfTsKLQkJMzE2QjhCNjQyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkI4QjYy
MjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi87IH07CisJCTMxNkI4
QjY0MjA1NEI1NTgwMEJENEE2MiAvKiBXS1VTRFByZXZpZXdWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIg
LyogV0tVU0RQcmV2aWV3Vmlldy5oICovOyB9OwogCQkzMTdGRTdDNTFDNDg3QTZDMDBBMENBODkg
LyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzIxQzQ4N0E2NjAwQTBDQTg5IC8qIEFQSUV4cGVyaW1l
bnRhbEZlYXR1cmUuaCAqLzsgfTsKIAkJMzE3RkU3Q0QxQzQ4N0RBRTAwQTBDQTg5IC8qIF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzkxQzQ4N0Q5RDAwQTBDQTg5IC8qIF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmVJbnRlcm5hbC5oICovOyB9OwogCQkzMTdGRTdDRjFDNDg3REJEMDBBMENBODkg
LyogX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE3RkU3QzcxQzQ4N0Q5RDAwQTBDQTg5IC8qIF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzQzNyw4ICszNDM3LDggQEAKIAkJMzE1NzEzNUMyMDQwQTlCMjAwODRGOUNGIC8q
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTU3MTM1RDIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MDdGMzgxOTYyNzAwMjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Np
b25TdGF0ZUNvZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lT
ZXNzaW9uU3RhdGVDb2RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QjhC
NjEyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tOyBwYXRoID0gaW9zL1dLU3lzdGVtUHJl
dmlld1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkI4QjYyMjA1NEI1
NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3lz
dGVtUHJldmlld1ZpZXcuaDsgcGF0aCA9IGlvcy9XS1N5c3RlbVByZXZpZXdWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1VT
RFByZXZpZXdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tVU0RQcmV2aWV3Vmlldy5t
bTsgcGF0aCA9IGlvcy9XS1VTRFByZXZpZXdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1VTRFByZXZpZXdWaWV3Lmg7IHBhdGggPSBpb3MvV0tVU0RQcmV2aWV3
Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc4QUY5NzIwRTJBN0Y4MDA3
NERFOTQgLyogUERGS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBE
RktpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTdGRTdDMTFDNDg3QTY2
MDBBMENBODkgLyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3RkU3QzIxQzQ4N0E2NjAwQTBDQTg5IC8qIEFQSUV4cGVy
aW1lbnRhbEZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXhw
ZXJpbWVudGFsRmVhdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Mywx
NCArNzY3MywxNCBAQAogCQkJCUNFNUI0Qzg3MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRp
Y0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tICovLAogCQkJCTI2RjEwQkU2MTkxODdFMkUwMDFEMEU2
OCAvKiBXS1N5bnRoZXRpY1RhcEdlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJMjZGMTBCRTcx
OTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIubW0gKi8s
Ci0JCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcuaCAq
LywKLQkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5t
bSAqLywKIAkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
aCAqLywKIAkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
bW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJl
Y3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9u
UmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8q
IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLywKKwkJCQkzMTZCOEI2MjIwNTRC
NTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5oICovLAorCQkJCTMxNkI4QjYxMjA1NEI1
NTgwMEJENEE2MiAvKiBXS1VTRFByZXZpZXdWaWV3Lm1tICovLAogCQkJCTJEMUU4MjIxMjE2RkZG
NTAwMEExNTI2NSAvKiBXS1dlYkV2ZW50LmggKi8sCiAJCQkJMkQxRTgyMjIyMTZGRkY1MTAwQTE1
MjY1IC8qIFdLV2ViRXZlbnQubW0gKi8sCiAJCQkpOwpAQCAtMTI5NjUsNyArMTI5NjUsNyBAQAog
CQkJCTk1OTM2NzVGMjUyRTVFMzEwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0
aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGMTBCRTgxOTE4
N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxNkI4QjY0MjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdW
aWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCOEI2NDIwNTRCNTU4MDBCRDRBNjIgLyogV0tV
U0RQcmV2aWV3Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGODg2QTYxRjJDMjI4MTAwQzE5
M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRDc1NUMxMUQ5
MUI4MTUwMDg0M0JEMSAvKiBXS1RleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ2
N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywK
</data>
<flag name="review"
          id="468677"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="468686"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443949</attachid>
            <date>2021-11-11 08:26:58 -0800</date>
            <delta_ts>2021-11-11 09:22:36 -0800</delta_ts>
            <desc>EWS test</desc>
            <filename>bug-232961-20211112032657.patch</filename>
            <type>text/plain</type>
            <size>33497</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NmY1ZDQyNjg5MGZi
OWE2NGY3NTY1ZGIyZWE5NTJmMDhlODMxNy4uNWRkZmY0ZmY1NGY4MTMzMjI5NTFjMThmNzYxMGY2
YjA0NTg5ZWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTExLTEwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBXS1N5c3RlbVByZXZpZXdWaWV3
IHNob3VsZCBiZSBjYWxsZWQgV0tVU0RQcmV2aWV3VmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84NTI2NTQxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAg
IFJlbmFtZSB0aGUgV2ViQ29yZSBBUElzIHRoYXQgbG9vayBmb3IgIlN5c3RlbVByZXZpZXciIE1J
TUUtdHlwZXMKKyAgICAgICAgdG8gYmUgY2xlYXIgdGhleSBhcmUgbG9va2luZyBmb3IgVVNELgor
CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1VTRE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgorCiAyMDIxLTExLTEw
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1zdGFu
ZGFyZCAtd2Via2l0LWJvcmRlci1maXQgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYWE4MzNl
MTcwMDYwYmI1MWM1NzI0ZmE5OTNiZmY4NzZmM2UyYjYuLjVjYWQ2NDEzM2E1NTkzMjFmNzRkYzFj
OTliYmIzNmU3MDFmOTNmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMTEtMTAg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFdLU3lzdGVtUHJldmll
d1ZpZXcgc2hvdWxkIGJlIGNhbGxlZCBXS1VTRFByZXZpZXdWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg1MjY1NDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAg
ICAgICAgV0tTeXN0ZW1QcmV2aWV3VmlldyBpcyBhIHVuaW5mb3JtYXRpdmUgbmFtZS4gV0tVU0RQ
cmV2aWV3VmlldyBpcyBtb3JlIGFjY3VyYXRlLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGlu
aXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cjo6Y2FuUHJldmlldyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1VTRFByZXZp
ZXdWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0
ZW1QcmV2aWV3Vmlldy5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tVU0RQcmV2aWV3Vmll
dy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5c3RlbVBy
ZXZpZXdWaWV3Lm1tLgorICAgICAgICAoZ2V0VVRJRm9yU3lzdGVtUHJldmlld01JTUVUeXBlKToK
KyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3ZWJfaW5pdFdpdGhGcmFtZTp3ZWJWaWV3Om1p
bWVUeXBlOl0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRDb250ZW50UHJv
dmlkZXJEYXRhOnN1Z2dlc3RlZEZpbGVuYW1lOl0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdW
aWV3IF9sYXlvdXRUaHVtYm5haWxWaWV3XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcg
dGh1bWJuYWlsVmlldzp3YW50c1RvUHJlc2VudFByZXZpZXdDb250cm9sbGVyOmZvckl0ZW06XSk6
CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2NvbnRlbnRWaWV3XSk6CisgICAgICAg
ICgrW1dLVVNEUHJldmlld1ZpZXcgd2ViX3JlcXVpcmVzQ3VzdG9tU25hcHNob3R0aW5nXSk6Cisg
ICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX3NldE1pbmltdW1TaXplOl0pOgorICAgICAg
ICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9zZXRPdmVybGFpZEFjY2Vzc29yeVZpZXdzSW5zZXQ6
XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2NvbXB1dGVkQ29udGVudEluc2V0
RGlkQ2hhbmdlXSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX3NldEZpeGVkT3Zl
cmxheVZpZXc6XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2RpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgd2ViX2lzQmFj
a2dyb3VuZF0pOgorICAgICAgICAoLVtXS1VTRFByZXZpZXdWaWV3IHdlYl9jb3VudFN0cmluZ01h
dGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tVU0RQcmV2aWV3VmlldyB3
ZWJfZmluZFN0cmluZzpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAoLVtXS1VTRFByZXZp
ZXdWaWV3IHdlYl9oaWRlRmluZFVJXSk6CisgICAgICAgICgtW1dLVVNEUHJldmlld1ZpZXcgcHJv
dmlkZURhdGFGb3JJdGVtOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTExLTEwICBQZXIgQXJuZSBWb2xsYW4gPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEJsb2NrIHNhbmRib3ggYWNjZXNzIHRvIGNvbnN1bWUgbWFjaCBleHRlbnNp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4
IDI5YWE1YmY2ZTFmMzgwNGQ5NWQwZDljODdiZDNiM2YxYjM1NmI4YWMuLjZmN2FmMTI3Y2ZjZTA0
ZTNhMDVjZTBmYzY5NmE3NmI4ZDBhZDFkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC02NzAsMjIgKzY3MCwyMiBAQCBjb25zdCBTdHJpbmcm
IGRlZmF1bHRNSU1FVHlwZSgpCiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZTsKIH0KIAotY29u
c3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVBcnJh
eVtdID0geworY29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCB1c2RNSU1FVHlwZUFy
cmF5W10gPSB7CiAgICAgIm1vZGVsL3VzZCIsIC8vIFVub2ZmaWNpYWwsIGJ1dCBzdXBwb3J0ZWQg
YmVjYXVzZSB3ZSBkb2N1bWVudGVkIHRoaXMuCiAgICAgIm1vZGVsL3ZuZC5waXhhci51c2QiLCAv
LyBVbm9mZmljaWFsLCBidXQgc3VwcG9ydGVkIGJlY2F1c2Ugd2UgZG9jdW1lbnRlZCB0aGlzLgog
ICAgICJtb2RlbC92bmQucmVhbGl0eSIsCiAgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCIsIC8vIFRo
ZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10
eXBlcy9tb2RlbC92bmQudXNkeit6aXAKIH07CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBN
SU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPGNv
bnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5Ojp1c2RNSU1FVHlwZXMoKQogewotICAgIHJldHVy
biBtYWtlRml4ZWRWZWN0b3Ioc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkpOworICAgIHJldHVy
biBtYWtlRml4ZWRWZWN0b3IodXNkTUlNRVR5cGVBcnJheSk7CiB9CiAKLWJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVU0RNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc3lzdGVtUHJldmll
d01JTUVUeXBlU2V0IHsgc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkgfTsKLSAgICByZXR1cm4g
c3lzdGVtUHJldmlld01JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNvcnRlZEFycmF5U2V0IHVzZE1JTUVUeXBlU2V0IHsgdXNkTUlNRVR5cGVBcnJh
eSB9OworICAgIHJldHVybiB1c2RNSU1FVHlwZVNldC5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAK
IC8vIEZJWE1FOiBOb3QgZ3JlYXQgdGhhdCBDVVJMIG5lZWRzIHRoaXMgY29uY2VwdDsgb3RoZXIg
cGxhdGZvcm1zIGRvIG5vdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAppbmRleCA1OGMxODhkNjhjNTQzMTAyMDc0ZTVhMWQ5YTEyYmE2NWIyMTAwZDZmLi4wYWQy
Njk3Yjk2ZDJjZWEyYjc4YmI2MjE1NDIzY2MyYTU2MDVhN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzUG9zdFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUERGT3JQb3N0U2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N5c3RlbVByZXZpZXdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1VTRE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBzaG93biBpbnNpZGUgYSBwYWdlLgogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBhbnkgb2YgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZSgpLApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBwZGZNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHVuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFy
Kj4gc3lzdGVtUHJldmlld01JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBG
aXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gdXNkTUlNRVR5cGVzKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmlu
ZGV4IGE1NWQ1YTA1ZTRkZGNiZjVjODFjNzE5MWI0ZGNiOWQyYzM0MWViNzUuLjBlMmZiYTFiZTEw
Njc1NGNmNjc5ZjA3NjgzNDk1MGJhZTNlZTQ3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTEwMyw5ICsx
MDMsOSBAQCBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9yTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6cHJl
ZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIC8v
IFN5c3RlbSBQcmV2aWV3cyBhY2NlcHQgc29tZSBub24tc3RhbmRhcmQgTUlNRVR5cGVzLCBzbyB3
ZSBjYW4ndCByZWx5IG9uCisgICAgLy8gV2UgYWNjZXB0IHNvbWUgbm9uLXN0YW5kYXJkIFVTRCBN
SU1FVHlwZXMsIHNvIHdlIGNhbid0IHJlbHkgb24KICAgICAvLyB0aGUgZmlsZSB0eXBlIG1hcHBp
bmdzLgotICAgIGlmIChpc1N5c3RlbVByZXZpZXdNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoaXNV
U0RNSU1FVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuICJ1c2R6Il9zOwogCiAgICAgcmV0dXJu
IFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBwcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZTooTlNTdHJpbmcgKil0eXBlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAwY2JlMzdmZmE3MGZhN2NiNTZkZWYwOTgyZGJhMGUzZjRiZjk4ZDJhLi4yOTFkNGUwMGY3MTAz
YWRjMjAxY2NkZWM4YWM5NTRhNzRhMDc0MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01
MDYsOSArNTA2LDkgQEAgVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KIFVJUHJvY2Vzcy9p
b3MvV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5tbQogVUlQcm9jZXNzL2lvcy9XS1N5bnRoZXRpY0Zs
YWdzQ2hhbmdlZFdlYkV2ZW50Lm1tCiBVSVByb2Nlc3MvaW9zL1dLU3ludGhldGljVGFwR2VzdHVy
ZVJlY29nbml6ZXIubW0KLVVJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbQogVUlQ
cm9jZXNzL2lvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorVUlQcm9jZXNzL2lvcy9XS1VTRFByZXZpZXdWaWV3
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQubW0KIAogVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0K
aW5kZXggMjBjNWNiOGMzMGZjMjM3OTA4NzgyZjQ2YTc3ZDI0NDlmMzRiMzVjZi4uNjk0MjBkNzk3
NzRkMTVkMTAwMTFmZWQzY2RhZThmNmE3NDBiNjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
UmVnaXN0cnkubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXS1BERlZpZXcuaCIKLSNpbXBvcnQgIldLU3lzdGVtUHJldmlld1ZpZXcuaCIK
KyNpbXBvcnQgIldLVVNEUHJldmlld1ZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgpAQCAtNTYsOCArNTYsOCBAQAogCiAjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQogICAgIGlmIChjb25m
aWd1cmF0aW9uLl9zeXN0ZW1QcmV2aWV3RW5hYmxlZCkgewotICAgICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkp
Ci0gICAgICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1N5c3RlbVByZXZpZXdWaWV3
IGNsYXNzXSBmb3JNSU1FVHlwZTpAKHR5cGUpXTsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDog
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkpCisgICAgICAgICAgICBb
c2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1VTRFByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlw
ZTpAKHR5cGUpXTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCmluZGV4IGI4YmJmMmI3YWEwNTM1N2U4
NDNlMzBhNDllZDYxNTI1OTZiNWNlMjkuLjFjYmFjZWNiZWJlYmYyYjZmNmM5NTI5NTU1MmQ4ZTI2
MjNmOThjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXI6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQog
CiBib29sIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpjYW5QcmV2aWV3KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6aXNVU0RNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5c3RlbVByZXZpZXdWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeXN0ZW1QcmV2aWV3Vmlldy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjA2NGRmMjgwMTZlZDEzNjUxZDJkY2FkYjI4NjYz
ZGRkNDI0NzI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5c3RlbVByZXZpZXdWaWV3LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFVTRShTWVNURU1fUFJF
VklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLQotI2ltcG9ydCAiV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmgiCi0jaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXIuaCIKLSNpbXBvcnQgPFF1aWNrTG9vay9RdWlja0xvb2suaD4KLSNpbXBvcnQgPFVJS2l0
L1VJS2l0Lmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KLQotQGludGVy
ZmFjZSBXS1N5c3RlbVByZXZpZXdWaWV3IDogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFFMUHJldmlld0l0ZW1EYXRhUHJvdmlkZXI+Ci0K
LUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tTeXN0ZW1QcmV2aWV3Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5
c3RlbVByZXZpZXdWaWV3Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzhhYWZm
YzAzMTdkYTRjMGQ3NWM4YTdmOTU4NzU2MjZmNGZkZjgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5
c3RlbVByZXZpZXdWaWV3Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tTeXN0ZW1QcmV2aWV3
Vmlldy5oIgotCi0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRf
SU5URVJOQUxTKQotCi0jaW1wb3J0ICJBUElGaW5kQ2xpZW50LmgiCi0jaW1wb3J0ICJBUElVSUNs
aWVudC5oIgotI2ltcG9ydCAiV0tXZWJWaWV3SU9TLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0
cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExp
bmsuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxw
YWwvc3BpL2lvcy9TeXN0ZW1QcmV2aWV3U1BJLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhB
c3NldFZpZXdlcik7Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVlRodW1ibmFpbFZp
ZXcpOwotCi1zdGF0aWMgTlNTdHJpbmcgKmdldFVUSUZvclN5c3RlbVByZXZpZXdNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmICghV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6aXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUobWltZVR5cGUpKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgcmV0dXJuIFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7Ci19
Ci0KLUBpbnRlcmZhY2UgV0tTeXN0ZW1QcmV2aWV3VmlldyAoKSA8QVNWVGh1bWJuYWlsVmlld0Rl
bGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tTeXN0ZW1QcmV2aWV3VmlldyB7Ci0g
ICAgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBfaXRlbVByb3ZpZGVyOwotICAgIFJldGFpblB0
cjxOU0RhdGE+IF9kYXRhOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3N1Z2dlc3RlZEZpbGVu
YW1lOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21pbWVUeXBlOwotICAgIFJldGFpblB0cjxR
TEl0ZW0+IF9pdGVtOwotICAgIFJldGFpblB0cjxBU1ZUaHVtYm5haWxWaWV3PiBfdGh1bWJuYWls
VmlldzsKLSAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwotfQotCi0tIChpbnN0YW5jZXR5cGUpd2Vi
X2luaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0V2l0aEZyYW1lOmZyYW1lIHdlYlZpZXc6d2ViVmlld10pKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgVUlDb2xvciAqYmFja2dyb3VuZENvbG9yID0gW1VJQ29sb3IgY29sb3JXaXRo
UmVkOigzOC4gLyAyNTUpIGdyZWVuOigzOC4gLyAyNTUpIGJsdWU6KDM4LiAvIDI1NSkgYWxwaGE6
MV07Ci0gICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7Ci0KLSAgICBf
d2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgX21pbWVUeXBlID0gbWltZVR5cGU7Ci0KLSAgICBVSVNj
cm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3LnNjcm9sbFZpZXc7Ci0gICAgW3Njcm9sbFZp
ZXcgc2V0TWluaW11bVpvb21TY2FsZToxXTsKLSAgICBbc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9v
bVNjYWxlOjFdOwotICAgIFtzY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5k
Q29sb3JdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpd2ViX3NldENvbnRlbnRQ
cm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICop
ZmlsZW5hbWUKLXsKLSAgICBfc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdE5TKFtmaWxlbmFtZSBj
b3B5XSk7Ci0gICAgX2RhdGEgPSBhZG9wdE5TKFtkYXRhIGNvcHldKTsKLQotICAgIE5TU3RyaW5n
ICpjb250ZW50VHlwZSA9IGdldFVUSUZvclN5c3RlbVByZXZpZXdNSU1FVHlwZShfbWltZVR5cGUu
Z2V0KCkpOwotCi0gICAgX2l0ZW0gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUUxJdGVtSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGFQcm92aWRlcjpzZWxmIGNvbnRlbnRUeXBlOmNvbnRlbnRUeXBlIHByZXZp
ZXdUaXRsZTpfc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCldKTsKLSAgICBbX2l0ZW0gc2V0VXNlTG9h
ZGluZ1RpbWVvdXQ6Tk9dOwotCi0gICAgX3RodW1ibmFpbFZpZXcgPSBhZG9wdE5TKFthbGxvY0FT
VlRodW1ibmFpbFZpZXdJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbX3RodW1ibmFpbFZpZXcgc2V0
RGVsZWdhdGU6c2VsZl07Ci0gICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFzazpVSVZpZXdBdXRv
cmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVIZWlnaHRd
OwotCi0gICAgW3NlbGYgc2V0QXV0b3Jlc2l6ZXNTdWJ2aWV3czpZRVNdOwotICAgIFtzZWxmIHNl
dENsaXBzVG9Cb3VuZHM6WUVTXTsKLSAgICBbc2VsZiBhZGRTdWJ2aWV3Ol90aHVtYm5haWxWaWV3
LmdldCgpXTsKLSAgICBbc2VsZiBfbGF5b3V0VGh1bWJuYWlsVmlld107Ci0KLSAgICBhdXRvIHNj
cmVlbkJvdW5kcyA9IFVJU2NyZWVuLm1haW5TY3JlZW4uYm91bmRzOwotICAgIENHRmxvYXQgbWF4
RGltZW5zaW9uID0gQ0dGbG9hdE1pbihzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91
bmRzLnNpemUuaGVpZ2h0KTsKLSAgICBbX3RodW1ibmFpbFZpZXcgc2V0TWF4VGh1bWJuYWlsU2l6
ZTpDR1NpemVNYWtlKG1heERpbWVuc2lvbiwgbWF4RGltZW5zaW9uKV07Ci0KLSAgICBbX3RodW1i
bmFpbFZpZXcgc2V0VGh1bWJuYWlsSXRlbTpfaXRlbS5nZXQoKV07Ci19Ci0KLS0gKHZvaWQpX2xh
eW91dFRodW1ibmFpbFZpZXcKLXsKLSAgICBpZiAoX3RodW1ibmFpbFZpZXcpIHsKLSAgICAgICAg
VUlFZGdlSW5zZXRzIHNhZmVBcmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXQ7Ci0gICAgICAgIFVJRWRnZUluc2V0cyBvYnNjdXJlZEFyZWFJbnNldHMg
PSBfd2ViVmlldy5fY29tcHV0ZWRPYnNjdXJlZEluc2V0OwotCi0gICAgICAgIENHUmVjdCBsYXlv
dXRGcmFtZSA9IFVJRWRnZUluc2V0c0luc2V0UmVjdChzZWxmLmZyYW1lLCBzYWZlQXJlYUluc2V0
cyk7Ci0KLSAgICAgICAgbGF5b3V0RnJhbWUuc2l6ZS53aWR0aCAtPSBvYnNjdXJlZEFyZWFJbnNl
dHMubGVmdCArIG9ic2N1cmVkQXJlYUluc2V0cy5yaWdodDsKLSAgICAgICAgbGF5b3V0RnJhbWUu
c2l6ZS5oZWlnaHQgLT0gb2JzY3VyZWRBcmVhSW5zZXRzLnRvcCArIG9ic2N1cmVkQXJlYUluc2V0
cy5ib3R0b207Ci0KLSAgICAgICAgW190aHVtYm5haWxWaWV3IHNldEZyYW1lOmxheW91dEZyYW1l
XTsKLSAgICAgICAgW190aHVtYm5haWxWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0
b3Jlc2l6aW5nRmxleGlibGVXaWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0
XTsKLSAgICB9Ci19Ci0KLSNwcmFnbWEgbWFyayBBU1ZUaHVtYm5haWxWaWV3RGVsZWdhdGUKLQot
LSAodm9pZCl0aHVtYm5haWxWaWV3OihBU1ZUaHVtYm5haWxWaWV3ICopdGh1bWJuYWlsVmlldyB3
YW50c1RvUHJlc2VudFByZXZpZXdDb250cm9sbGVyOihRTFByZXZpZXdDb250cm9sbGVyICopcHJl
dmlld0NvbnRyb2xsZXIgZm9ySXRlbTooUUxJdGVtICopaXRlbQotewotICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBVSVZpZXdDb250
cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBwYWdlLT51aUNsaWVudCgpLnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcigpOwotICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJl
c2VudFZpZXdDb250cm9sbGVyOnByZXZpZXdDb250cm9sbGVyIGFuaW1hdGVkOllFUyBjb21wbGV0
aW9uOm5pbF07Ci19Ci0KLSNwcmFnbWEgbWFyayBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgcHJv
dG9jb2wKLQotLSAoVUlWaWV3ICopd2ViX2NvbnRlbnRWaWV3Ci17Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLSsgKEJPT0wpd2ViX3JlcXVpcmVzQ3VzdG9tU25hcHNob3R0aW5nCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi0tICh2b2lkKXdlYl9zZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemUK
LXsKLX0KLQotLSAodm9pZCl3ZWJfc2V0T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OihDR1Np
emUpaW5zZXQKLXsKLX0KLQotLSAodm9pZCl3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRDaGFu
Z2UKLXsKLSAgICBbc2VsZiBfbGF5b3V0VGh1bWJuYWlsVmlld107Ci19Ci0KLS0gKHZvaWQpd2Vi
X3NldEZpeGVkT3ZlcmxheVZpZXc6KFVJVmlldyAqKWZpeGVkT3ZlcmxheVZpZXcKLXsKLX0KLQot
LSAodm9pZCl3ZWJfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbjooV0tTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZQotewotfQotCi0tIChCT09MKXdlYl9pc0JhY2tncm91
bmQKLXsKLSAgICByZXR1cm4gc2VsZi5pc0JhY2tncm91bmQ7Ci19Ci0KLSNwcmFnbWEgbWFyayBG
aW5kLWluLVBhZ2UKLQotLSAodm9pZCl3ZWJfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAq
KXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRl
Z2VyKW1heENvdW50Ci17Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0g
X3dlYlZpZXctPl9wYWdlOwotICAgIHBhZ2UtPmZpbmRDbGllbnQoKS5kaWRDb3VudFN0cmluZ01h
dGNoZXMocGFnZS5nZXQoKSwgc3RyaW5nLCAwKTsKLX0KLQotLSAodm9pZCl3ZWJfZmluZFN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhD
b3VudDooTlNVSW50ZWdlciltYXhDb3VudAotewotICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQ
cm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKLSAgICBwYWdlLT5maW5kQ2xpZW50KCkuZGlk
RmFpbFRvRmluZFN0cmluZyhwYWdlLmdldCgpLCBzdHJpbmcpOwotfQotCi0tICh2b2lkKXdlYl9o
aWRlRmluZFVJCi17Ci19Ci0KLSNwcmFnbWEgbWFyayBRTFByZXZpZXdJdGVtRGF0YVByb3ZpZGVy
Ci0KLS0gKE5TRGF0YSAqKXByb3ZpZGVEYXRhRm9ySXRlbTooUUxJdGVtICopaXRlbQotewotICAg
IHJldHVybiBfZGF0YS5nZXQoKTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1VTRFByZXZpZXdWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tVU0RQcmV2aWV3Vmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZmRhOTE4
NDRlY2FhYTBhZmYyZmQ5M2QyOWEwZTgxZDgyY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tVU0RQcmV2aWV3Vmlldy5oCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKSAmJiAhSEFWRShVSUtJVF9X
RUJLSVRfSU5URVJOQUxTKQorCisjaW1wb3J0ICJXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oIgorI2ltcG9ydCA8UXVp
Y2tMb29rL1F1aWNrTG9vay5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPHBh
bC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oPgorCitAaW50ZXJmYWNlIFdLVVNEUHJldmlld1ZpZXcg
OiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcgPFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
ciwgUUxQcmV2aWV3SXRlbURhdGFQcm92aWRlcj4KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1VTRFByZXZpZXdWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVVNEUHJldmlld1ZpZXcubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDE1YThmZTk0ZWYzNmVkNWViZjBjOGRmNjk1YmIxOWZiN2QwNzAzNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1VTRFByZXZpZXdWaWV3Lm1tCkBAIC0w
LDAgKzEsMjA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldLVVNEUHJldmlld1ZpZXcuaCIKKworI2lmIFVTRShTWVNURU1fUFJFVklFVykgJiYgIUhB
VkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKworI2ltcG9ydCAiQVBJRmluZENsaWVudC5oIgor
I2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIldLV2ViVmlld0lPUy5oIgorI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29y
ZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9pb3MvU3lzdGVtUHJldmll
d1NQSS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgorCisjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CisKK1NPRlRfTElOS19Q
UklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3
ZXIsIEFTVlRodW1ibmFpbFZpZXcpOworCitzdGF0aWMgTlNTdHJpbmcgKmdldFVUSUZvclVTRE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKCFXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1VTRE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIHJldHVybiBXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpOworfQor
CitAaW50ZXJmYWNlIFdLVVNEUHJldmlld1ZpZXcgKCkgPEFTVlRodW1ibmFpbFZpZXdEZWxlZ2F0
ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLVVNEUHJldmlld1ZpZXcgeworICAgIFJldGFp
blB0cjxOU0l0ZW1Qcm92aWRlcj4gX2l0ZW1Qcm92aWRlcjsKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBfZGF0YTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zdWdnZXN0ZWRGaWxlbmFtZTsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9taW1lVHlwZTsKKyAgICBSZXRhaW5QdHI8UUxJdGVtPiBf
aXRlbTsKKyAgICBSZXRhaW5QdHI8QVNWVGh1bWJuYWlsVmlldz4gX3RodW1ibmFpbFZpZXc7Cisg
ICAgV0tXZWJWaWV3ICpfd2ViVmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKXdlYl9pbml0V2l0
aEZyYW1lOihDR1JlY3QpZnJhbWUgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBtaW1lVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZSB3ZWJWaWV3OndlYlZpZXddKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFVJQ29sb3IgKmJhY2tncm91bmRDb2xvciA9IFtVSUNvbG9yIGNvbG9yV2l0aFJlZDooMzgu
IC8gMjU1KSBncmVlbjooMzguIC8gMjU1KSBibHVlOigzOC4gLyAyNTUpIGFscGhhOjFdOworICAg
IHNlbGYuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworCisgICAgX3dlYlZpZXcg
PSB3ZWJWaWV3OworICAgIF9taW1lVHlwZSA9IG1pbWVUeXBlOworCisgICAgVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3ID0gd2ViVmlldy5zY3JvbGxWaWV3OworICAgIFtzY3JvbGxWaWV3IHNldE1p
bmltdW1ab29tU2NhbGU6MV07CisgICAgW3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTox
XTsKKyAgICBbc2Nyb2xsVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsK
KworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXdlYl9zZXRDb250ZW50UHJvdmlkZXJE
YXRhOihOU0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1l
Cit7CisgICAgX3N1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHROUyhbZmlsZW5hbWUgY29weV0pOwor
ICAgIF9kYXRhID0gYWRvcHROUyhbZGF0YSBjb3B5XSk7CisKKyAgICBOU1N0cmluZyAqY29udGVu
dFR5cGUgPSBnZXRVVElGb3JVU0RNSU1FVHlwZShfbWltZVR5cGUuZ2V0KCkpOworCisgICAgX2l0
ZW0gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUUxJdGVtSW5zdGFuY2UoKSBpbml0V2l0aERhdGFQcm92
aWRlcjpzZWxmIGNvbnRlbnRUeXBlOmNvbnRlbnRUeXBlIHByZXZpZXdUaXRsZTpfc3VnZ2VzdGVk
RmlsZW5hbWUuZ2V0KCldKTsKKyAgICBbX2l0ZW0gc2V0VXNlTG9hZGluZ1RpbWVvdXQ6Tk9dOwor
CisgICAgX3RodW1ibmFpbFZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVlRodW1ibmFpbFZpZXdJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBbX3RodW1ibmFpbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07Cisg
ICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFzazpVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdp
ZHRoIHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVIZWlnaHRdOworCisgICAgW3NlbGYgc2V0
QXV0b3Jlc2l6ZXNTdWJ2aWV3czpZRVNdOworICAgIFtzZWxmIHNldENsaXBzVG9Cb3VuZHM6WUVT
XTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3Ol90aHVtYm5haWxWaWV3LmdldCgpXTsKKyAgICBbc2Vs
ZiBfbGF5b3V0VGh1bWJuYWlsVmlld107CisKKyAgICBhdXRvIHNjcmVlbkJvdW5kcyA9IFVJU2Ny
ZWVuLm1haW5TY3JlZW4uYm91bmRzOworICAgIENHRmxvYXQgbWF4RGltZW5zaW9uID0gQ0dGbG9h
dE1pbihzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNpemUuaGVpZ2h0KTsK
KyAgICBbX3RodW1ibmFpbFZpZXcgc2V0TWF4VGh1bWJuYWlsU2l6ZTpDR1NpemVNYWtlKG1heERp
bWVuc2lvbiwgbWF4RGltZW5zaW9uKV07CisKKyAgICBbX3RodW1ibmFpbFZpZXcgc2V0VGh1bWJu
YWlsSXRlbTpfaXRlbS5nZXQoKV07Cit9CisKKy0gKHZvaWQpX2xheW91dFRodW1ibmFpbFZpZXcK
K3sKKyAgICBpZiAoX3RodW1ibmFpbFZpZXcpIHsKKyAgICAgICAgVUlFZGdlSW5zZXRzIHNhZmVB
cmVhSW5zZXRzID0gX3dlYlZpZXcuX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQ7Cisg
ICAgICAgIFVJRWRnZUluc2V0cyBvYnNjdXJlZEFyZWFJbnNldHMgPSBfd2ViVmlldy5fY29tcHV0
ZWRPYnNjdXJlZEluc2V0OworCisgICAgICAgIENHUmVjdCBsYXlvdXRGcmFtZSA9IFVJRWRnZUlu
c2V0c0luc2V0UmVjdChzZWxmLmZyYW1lLCBzYWZlQXJlYUluc2V0cyk7CisKKyAgICAgICAgbGF5
b3V0RnJhbWUuc2l6ZS53aWR0aCAtPSBvYnNjdXJlZEFyZWFJbnNldHMubGVmdCArIG9ic2N1cmVk
QXJlYUluc2V0cy5yaWdodDsKKyAgICAgICAgbGF5b3V0RnJhbWUuc2l6ZS5oZWlnaHQgLT0gb2Jz
Y3VyZWRBcmVhSW5zZXRzLnRvcCArIG9ic2N1cmVkQXJlYUluc2V0cy5ib3R0b207CisKKyAgICAg
ICAgW190aHVtYm5haWxWaWV3IHNldEZyYW1lOmxheW91dEZyYW1lXTsKKyAgICAgICAgW190aHVt
Ym5haWxWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6VUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVX
aWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0XTsKKyAgICB9Cit9CisKKyNw
cmFnbWEgbWFyayBBU1ZUaHVtYm5haWxWaWV3RGVsZWdhdGUKKworLSAodm9pZCl0aHVtYm5haWxW
aWV3OihBU1ZUaHVtYm5haWxWaWV3ICopdGh1bWJuYWlsVmlldyB3YW50c1RvUHJlc2VudFByZXZp
ZXdDb250cm9sbGVyOihRTFByZXZpZXdDb250cm9sbGVyICopcHJldmlld0NvbnRyb2xsZXIgZm9y
SXRlbTooUUxJdGVtICopaXRlbQoreworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4g
cGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKKyAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIgPSBwYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cigpOworICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVy
OnByZXZpZXdDb250cm9sbGVyIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07Cit9CisKKyNw
cmFnbWEgbWFyayBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgcHJvdG9jb2wKKworLSAoVUlWaWV3
ICopd2ViX2NvbnRlbnRWaWV3Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKEJPT0wpd2Vi
X3JlcXVpcmVzQ3VzdG9tU25hcHNob3R0aW5nCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCist
ICh2b2lkKXdlYl9zZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemUKK3sKK30KKworLSAodm9pZCl3
ZWJfc2V0T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OihDR1NpemUpaW5zZXQKK3sKK30KKwor
LSAodm9pZCl3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRDaGFuZ2UKK3sKKyAgICBbc2VsZiBf
bGF5b3V0VGh1bWJuYWlsVmlld107Cit9CisKKy0gKHZvaWQpd2ViX3NldEZpeGVkT3ZlcmxheVZp
ZXc6KFVJVmlldyAqKWZpeGVkT3ZlcmxheVZpZXcKK3sKK30KKworLSAodm9pZCl3ZWJfZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbjooV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSluYXZpZ2F0
aW9uVHlwZQoreworfQorCistIChCT09MKXdlYl9pc0JhY2tncm91bmQKK3sKKyAgICByZXR1cm4g
c2VsZi5pc0JhY2tncm91bmQ7Cit9CisKKyNwcmFnbWEgbWFyayBGaW5kLWluLVBhZ2UKKworLSAo
dm9pZCl3ZWJfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihf
V0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Cit7Cisg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdlOwor
ICAgIHBhZ2UtPmZpbmRDbGllbnQoKS5kaWRDb3VudFN0cmluZ01hdGNoZXMocGFnZS5nZXQoKSwg
c3RyaW5nLCAwKTsKK30KKworLSAodm9pZCl3ZWJfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlcilt
YXhDb3VudAoreworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJW
aWV3LT5fcGFnZTsKKyAgICBwYWdlLT5maW5kQ2xpZW50KCkuZGlkRmFpbFRvRmluZFN0cmluZyhw
YWdlLmdldCgpLCBzdHJpbmcpOworfQorCistICh2b2lkKXdlYl9oaWRlRmluZFVJCit7Cit9CisK
KyNwcmFnbWEgbWFyayBRTFByZXZpZXdJdGVtRGF0YVByb3ZpZGVyCisKKy0gKE5TRGF0YSAqKXBy
b3ZpZGVEYXRhRm9ySXRlbTooUUxJdGVtICopaXRlbQoreworICAgIHJldHVybiBfZGF0YS5nZXQo
KTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NzI3ZWFiZTY4YjUzY2RiZWZjMWU1MmNmNWI1NDhj
N2Q1MjM3MGQuLmM1YjkwYmVjYjU0ZmUwYzIxOTQxMDA1MmMwOTJiZmFjYTNiNzczYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ4
LDcgKzc0OCw3IEBACiAJCTMxMzEyNjIxMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTMxMjYxQzE0OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oICov
OyB9OwogCQkzMTU1RUUwRDI2NzNGNEYwMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTU1RUUwQzI2NzNGNEVG
MDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggKi87IH07CiAJCTMxNTcxMzVGMjA0MEE5QjIwMDg0
RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmggKi87IH07Ci0JCTMxNkI4QjY0MjA1NEI1NTgwMEJENEE2MiAv
KiBXS1N5c3RlbVByZXZpZXdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3
Vmlldy5oICovOyB9OworCQkzMTZCOEI2NDIwNTRCNTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLVVNEUHJldmlld1ZpZXcuaCAqLzsgfTsKIAkJMzE3
RkU3QzUxQzQ4N0E2QzAwQTBDQTg5IC8qIEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0ZFN0MyMUM0ODdBNjYw
MEEwQ0E4OSAvKiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmggKi87IH07CiAJCTMxN0ZFN0NEMUM0
ODdEQUUwMEEwQ0E4OSAvKiBfV0tFeHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0ZFN0M5MUM0ODdEOUQw
MEEwQ0E4OSAvKiBfV0tFeHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCAqLzsgfTsKIAkJMzE3
RkU3Q0YxQzQ4N0RCRDAwQTBDQTg5IC8qIF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxN0ZFN0M3MUM0ODdEOUQw
MEEwQ0E4OSAvKiBfV0tFeHBlcmltZW50YWxGZWF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0MzcsOCArMzQzNyw4IEBACiAJCTMxNTcx
MzVDMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1NzEzNUQyMDQwQTlCMjAwODRGOUNGIC8qIFN5
c3RlbVByZXZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjA3RjM4MTk2MjcwMDIw
MDlCODdEQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZp
ZXdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbTsg
cGF0aCA9IGlvcy9XS1N5c3RlbVByZXZpZXdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1N5c3RlbVByZXZpZXdWaWV3Lmg7IHBhdGggPSBpb3MvV0tTeXN0
ZW1QcmV2aWV3Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCOEI2MTIw
NTRCNTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdLVVNEUHJldmlld1ZpZXcubW07IHBhdGggPSBpb3MvV0tVU0RQcmV2aWV3Vmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8q
IFdLVVNEUHJldmlld1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tVU0RQcmV2aWV3Vmlldy5oOyBw
YXRoID0gaW9zL1dLVVNEUHJldmlld1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzE3OEFGOTcyMEUyQTdGODAwNzRERTk0IC8qIFBERktpdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQREZLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzE3RkU3QzExQzQ4N0E2NjAwQTBDQTg5IC8qIEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRXhwZXJpbWVudGFs
RmVhdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxN0ZFN0MyMUM0ODdB
NjYwMEEwQ0E4OSAvKiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc2NzMsMTQgKzc2NzMsMTQgQEAKIAkJCQlDRTVCNEM4NzIxQjczRDg3
MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbSAqLywKIAkJCQky
NkYxMEJFNjE5MTg3RTJFMDAxRDBFNjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2duaXpl
ci5oICovLAogCQkJCTI2RjEwQkU3MTkxODdFMkUwMDFEMEU2OCAvKiBXS1N5bnRoZXRpY1RhcEdl
c3R1cmVSZWNvZ25pemVyLm1tICovLAotCQkJCTMxNkI4QjYyMjA1NEI1NTgwMEJENEE2MiAvKiBX
S1N5c3RlbVByZXZpZXdWaWV3LmggKi8sCi0JCQkJMzE2QjhCNjEyMDU0QjU1ODAwQkQ0QTYyIC8q
IFdLU3lzdGVtUHJldmlld1ZpZXcubW0gKi8sCiAJCQkJQ0UyMTIxNUQyNDBFRTU3MTAwNkVENDQz
IC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8sCiAJCQkJQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQz
IC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovLAogCQkJCUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5
RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8sCiAJCQkJQ0U0NTk0NUIyNDBGODVCOTAwNzgw
MTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8sCiAJCQkJNzFBNjc2QTQyMkM2MjMxODAw
N0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovLAogCQkJCTcxQTY3
NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0g
Ki8sCisJCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLVVNEUHJldmlld1ZpZXcuaCAq
LywKKwkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tVU0RQcmV2aWV3Vmlldy5tbSAq
LywKIAkJCQkyRDFFODIyMTIxNkZGRjUwMDBBMTUyNjUgLyogV0tXZWJFdmVudC5oICovLAogCQkJ
CTJEMUU4MjIyMjE2RkZGNTEwMEExNTI2NSAvKiBXS1dlYkV2ZW50Lm1tICovLAogCQkJKTsKQEAg
LTEyOTY1LDcgKzEyOTY1LDYgQEAKIAkJCQk5NTkzNjc1RjI1MkU1RTMxMDBEM0YwQTAgLyogV0tT
dHlsdXNEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U1QjRDODgyMUI3M0Q4
NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI2RjEwQkU4MTkxODdFMkUwMDFEMEU2OCAvKiBXS1N5bnRoZXRpY1RhcEdlc3R1
cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCOEI2NDIwNTRCNTU4MDBCRDRB
NjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGODg2QTYx
RjJDMjI4MTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxRDc1NUMxMUQ5MUI4MTUwMDg0M0JEMSAvKiBXS1RleHRDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyREQ2N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyOTg4LDYgKzEyOTg3LDcgQEAKIAkJCQk1MUQxMjQzNDFFNkRG
NjQzMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVUYXNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzYyRkRGOTFFRkMyNzFDMDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QjhCNjQyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLVVNE
UHJldmlld1ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkEzQUM5MThFNjFDNjEwMDNDQ0JB
RSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4
QTQxOTI2ODJEQTAwQjYzOTBDIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDODlEMkI2MUE2QjBERDkwMDNBNUZERSAvKiBXS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>