<?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>203175</bug_id>
          
          <creation_ts>2019-10-18 17:28:36 -0700</creation_ts>
          <short_desc>macCatalyst: Cursor should send mouse events, not touch events</short_desc>
          <delta_ts>2019-10-18 22:48:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581633</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 17:28:36 -0700</bug_when>
    <thetext>macCatalyst: Cursor should send mouse events, not touch events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581634</commentid>
    <comment_count>1</comment_count>
      <attachid>381353</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 17:29:14 -0700</bug_when>
    <thetext>Created attachment 381353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581635</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 17:29:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/56321134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581652</commentid>
    <comment_count>3</comment_count>
      <attachid>381358</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 17:53:22 -0700</bug_when>
    <thetext>Created attachment 381358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581654</commentid>
    <comment_count>4</comment_count>
      <attachid>381358</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-18 18:03:35 -0700</bug_when>
    <thetext>Comment on attachment 381358
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKMouseGestureRecognizer.mm:57
&gt; +    Optional&lt;WebKit::NativeWebMouseEvent&gt; _lastEvent;

std::unique_ptr&lt;&gt;?

&gt; Source/WebKit/UIProcess/ios/WKMouseGestureRecognizer.mm:146
&gt; +    auto timestamp = WallTime::fromRawSeconds(GSCurrentEventTimestamp() / 1000000000.0);

Don&apos;t we have a nanosecondsToMumble?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581658</commentid>
    <comment_count>5</comment_count>
      <attachid>381359</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 18:22:35 -0700</bug_when>
    <thetext>Created attachment 381359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581659</commentid>
    <comment_count>6</comment_count>
      <attachid>381360</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-18 18:23:56 -0700</bug_when>
    <thetext>Created attachment 381360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581676</commentid>
    <comment_count>7</comment_count>
      <attachid>381360</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 22:48:21 -0700</bug_when>
    <thetext>Comment on attachment 381360
Patch

Clearing flags on attachment: 381360

Committed r251320: &lt;https://trac.webkit.org/changeset/251320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581677</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 22:48:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381353</attachid>
            <date>2019-10-18 17:29:14 -0700</date>
            <delta_ts>2019-10-18 17:53:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203175-20191018172914.patch</filename>
            <type>text/plain</type>
            <size>38221</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRmZDE5NDI1NDUyZTI5
NTIyNDdhM2QxN2EwYTBjOTYwNDZmZmVjOS4uZjgyMmRhYjQyMjVmZjFiMGQ0YmY0MjFmZDNiYzE0
YWU2ODc0YThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkSWdub3JlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cmVz
ZXQpOgorICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBwbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IHRvdWNoIGV2ZW50cyBhbmQgcGxhdGZvcm1zIHRoYXQgZG9uJ3Q7CisgICAgICAgIHdlIHdh
bnQgdG8gYmUgYWJsZSB0byBkaXNwYXRjaCBwb2ludGVyIGV2ZW50cyB0aGF0IG9yaWdpbmF0ZSBm
cm9tIG1vdXNlIGV2ZW50cworICAgICAgICBpbiBtYWNDYXRhbHlzdCBkZXNwaXRlIHRvdWNoIGV2
ZW50cyBiZWluZyBlbmFibGVkIChieSB2aXJ0dWUgb2YgYmVpbmcgaU9TIFdlYktpdCksCisgICAg
ICAgIHNvIHVuLWlmZGVmIHRoYXQgY29kZS4KKwogMjAxOS0xMC0xNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
KGV4cGVyaW1lbnRhbCk6IEJsb2NrIGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIG9uIHdlYnNpdGVz
IHdpdGhvdXQgcHJpb3IgdXNlciBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzYjc0NzZmM2Y4YTk5
ZjdlYzlkOTk3ZTIyMTgxODdkMDY5Nzg3NDg0Li43ZGMyMjMzOTk0NDJmYmQ0ODY4NTNjNmE3NTVm
MDY3ZTQ2YWYyZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL2lv
cy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJN
b3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgQWRkIGEgTmF0aXZlV2Vi
TW91c2VFdmVudCBjb25zdHJ1Y3RvciB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgd3JhcCBhIG5hdGl2
ZSBldmVudCwKKyAgICAgICAgZm9yIGNyZWF0aW5nIHRvdGFsbHktc3ludGhldGljIGV2ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlLZXlNb2RpZmllckZsYWdz
KToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGluaXRXaXRoVGFyZ2V0OmFj
dGlvbjpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNldFZpZXc6XSk6
CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VFdmVudF0pOgor
ICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgbGFzdE1vdXNlTG9jYXRpb25dKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIG1vdXNlVG91Y2hdKToKKyAgICAg
ICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF93YW50c0hvdmVyRXZlbnRzXSk6CisgICAg
ICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciByZXNldF0pOgorICAgICAgICAoLVtXS01v
dXNlR2VzdHVyZVJlY29nbml6ZXIgX3Nob3VsZFJlY2VpdmVUb3VjaDpmb3JFdmVudDpyZWNvZ25p
emVyVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9zaG91bGRS
ZWNlaXZlUHJlc3M6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjcmVh
dGVNb3VzZUV2ZW50V2l0aFR5cGU6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2du
aXplciB0b3VjaGVzQmVnYW46d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgdG91Y2hlc01vdmVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNFbmRlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgt
W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciB0b3VjaGVzQ2FuY2VsbGVkOndpdGhFdmVudDpdKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9ob3ZlckVudGVyZWQ6d2l0aEV2
ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVyTW92ZWQ6
d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVy
RXhpdGVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
IF9ob3ZlckNhbmNlbGxlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyIGNhblByZXZlbnRHZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjpd
KToKKyAgICAgICAgSW5zdGVhZCBvZiBqdXN0IHVzaW5nIFVJSG92ZXJHZXN0dXJlUmVjb2duaXpl
ciwgaW50cm9kdWNlIGEgbmV3IGdlc3R1cmUKKyAgICAgICAgcmVjb2duaXplciB0aGF0IGRvZXMg
d2hhdCBpdCBkaWQsIGJ1dCBhbHNvIHN1cHBvcnRzIGNhc2VzIHdoZXJlIHRoZSBidXR0b24KKyAg
ICAgICAgaXMgcHJlc3NlZCAoc28sIG1vdXNlZG93biBhbmQgbW91c2V1cCBpbnN0ZWFkIG9mIGp1
c3QgbW91c2Vtb3ZlKSwKKyAgICAgICAgYW5kIHN5bnRoZXNpemVzIG1vdXNlIGV2ZW50cyBmb3Ig
YWxsIHN0YXRlIHRyYW5zaXRpb25zLiBUaGVzZSBldmVudHMKKyAgICAgICAgc2hvdWxkIGxvb2sg
cm91Z2hseSBpZGVudGljYWwgdG8gd2hhdCBhIG5vbi1tYWNDYXRhbHlzdCBhcHAgd291bGQgZ2V0
CisgICAgICAgIGluIEFwcEtpdCdzIG1vdXNlVXAvbW91c2VEb3duL21vdXNlTW92ZWQgTlNSZXNw
b25kZXIgbWV0aG9kcy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZURlZmF1
bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWRkRGVm
YXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1
cmVSZWNvZ25pemVyOnNob3VsZFJlY2VpdmVUb3VjaDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVvdXNseVdpdGhH
ZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1NoYXJl
U2hlZXQ6aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKToKKyAgICAgICAgKHdlYkV2ZW50
RmxhZ3NGb3JVSUtleU1vZGlmaWVyRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSB1c2Ug
b2YgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHRvIHBsdW1iIHRoZSBzeW50aGVzaXplZCBldmVu
dHMgZGlyZWN0bHkKKyAgICAgICAgdG8gdGhlIG1hY09TLXN0eWxlICJoYW5kbGVNb3VzZUV2ZW50
IiBjb2RlcGF0aCwgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIHRoZSB0b3VjaCBl
dmVudHMgcGF0aCAoYW5kIHRoZW4gc3Vic2VxdWVudGx5IGdlbmVyYXRpbmcgc3ludGhldGljIGNs
aWNrcykuCisgICAgICAgIEFsc28sIGVuc3VyZSB0aGF0IG90aGVyIGdlc3R1cmUgcmVjb2duaXpl
cnMgaWdub3JlIHRoZSBtb3VzZSAidG91Y2giIGVudGlyZWx5CisgICAgICAgIGJ5IHJldHVybmlu
ZyBOTyBpbiBzaG91bGRSZWNlaXZlVG91Y2guCisKIDIwMTktMTAtMTYgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBzZW5kLXNpZ25h
bCBmcm9tIG1hY2gtbG9va3VwIHJ1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5NjVjNDBl
YjE1ZGNlYzNmOTY2ZGE2MWE0MmMzYjA4NTEyZjM4NzNiLi4yZmRiOTQ1YmIwMTRhODQzZTU1Zjdj
Nzc5ZWNiNGY0MjIxYzA4NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDMsNyArMzAz
LDcgQEAgc3RhdGljIGJvb2wgaXNGb3JjZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcm1FdmVudCkKICAgICByZXR1cm4gcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6TW91c2VGb3JjZUNoYW5nZWQgfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZURvd24gfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZVVwOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KSAmJiAhRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiBz
dGF0aWMgYm9vbCBpc0NvbXBhdGliaWxpdHlNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMv
I2NvbXBhdGliaWxpdHktbWFwcGluZy13aXRoLW1vdXNlLWV2ZW50cwpAQCAtMzEyLDQ0ICszMTIs
NTEgQEAgc3RhdGljIGJvb2wgaXNDb21wYXRpYmlsaXR5TW91c2VFdmVudChjb25zdCBNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogfQogI2VuZGlmCiAKLWJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KQor
c3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTW91c2VFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIGJvb2wmIGRpZE5vdFN3YWxsb3dFdmVudCkKIHsKLSAgICBpZiAoaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpc0ZvcmNl
RXZlbnQocGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlRm9yRXZl
bnRUeXBlKHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmVmPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRldGFpbCwgcmVs
YXRlZFRhcmdldCk7Ci0KLSAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCi0KLSAgICBib29sIGRpZE5v
dFN3YWxsb3dFdmVudCA9IHRydWU7Ci0KICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucG9pbnRlckV2ZW50
c0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkg
ewogICAgICAgICAgICAgYXV0byYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyID0gcGFnZS0+cG9p
bnRlckNhcHR1cmVDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAg
ICAgICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQg
JiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRzQ29tcGF0aWJpbGl0eU1vdXNlRXZl
bnRzRm9ySWRlbnRpZmllcihwbGF0Zm9ybUV2ZW50LnBvaW50ZXJJZCgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQorICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQu
cG9pbnRlcklkKCkgIT0gbW91c2VQb2ludGVySUQgJiYgbW91c2VFdmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQgJiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRz
Q29tcGF0aWJpbGl0eU1vdXNlRXZlbnRzRm9ySWRlbnRpZmllcihwbGF0Zm9ybUV2ZW50LnBvaW50
ZXJJZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgICAgICAg
ICAgaWYgKGF1dG8gcG9pbnRlckV2ZW50ID0gcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnBvaW50
ZXJFdmVudEZvck1vdXNlRXZlbnQobW91c2VFdmVudCkpIHsKLSAgICAgICAgICAgICAgICBwb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXIuZGlzcGF0Y2hFdmVudCgqcG9pbnRlckV2ZW50LCB0aGlzKTsK
KyAgICAgICAgICAgICAgICBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuZGlzcGF0Y2hFdmVudCgq
cG9pbnRlckV2ZW50LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0aWJp
bGl0eU1vdXNlRXZlbnQobW91c2VFdmVudCkgJiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnBy
ZXZlbnRzQ29tcGF0aWJpbGl0eU1vdXNlRXZlbnRzRm9ySWRlbnRpZmllcihwb2ludGVyRXZlbnQt
PnBvaW50ZXJJZCgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAocG9pbnRlckV2
ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgcG9pbnRlckV2ZW50LT5kZWZhdWx0SGFuZGxlZCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZE5vdFN3YWxsb3dFdmVudCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgICAgICBpZiAocG9pbnRlckV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LnBvaW50ZXJkb3duRXZlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgaW50IGRldGFpbCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkKK3sKKyAgICBpZiAo
aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChpc0ZvcmNlRXZlbnQocGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJU
eXBlRm9yRXZlbnRUeXBlKHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgUmVmPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVh
dGUoZXZlbnRUeXBlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRl
dGFpbCwgcmVsYXRlZFRhcmdldCk7CisKKyAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCisKKyAgICBi
b29sIGRpZE5vdFN3YWxsb3dFdmVudCA9IHRydWU7CisKKyAgICBpZiAoc2hvdWxkSWdub3JlTW91
c2VFdmVudCgqdGhpcywgbW91c2VFdmVudC5nZXQoKSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dh
bGxvd0V2ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQVNTRVJUKCFtb3VzZUV2
ZW50LT50YXJnZXQoKSB8fCBtb3VzZUV2ZW50LT50YXJnZXQoKSAhPSByZWxhdGVkVGFyZ2V0KTsK
ICAgICBkaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChtb3VzZUV2ZW50LT5kZWZh
dWx0UHJldmVudGVkKCkgfHwgbW91c2VFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAppbmRleCBmZGE4
MGQ1ZTlhZTkzMjU3ZjY3MjI5YTYxYzllNzJjM2MzODY1N2EyLi4xNmY0MzJhZjg4OGRkYjZjODcy
ZjY1OTM0MzQyNTYwN2FlYjZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0xNTksMTEgKzE1OSwxMCBAQCB2b2lkIFBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlcjo6ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkK
IHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpyZXNldCgpCiB7CiAgICAgbV9hY3RpdmVQ
b2ludGVySWRzVG9DYXB0dXJpbmdEYXRhLmNsZWFyKCk7Ci0jaWYgIUVOQUJMRShUT1VDSF9FVkVO
VFMpCisKICAgICBDYXB0dXJpbmdEYXRhIGNhcHR1cmluZ0RhdGE7CiAgICAgY2FwdHVyaW5nRGF0
YS5wb2ludGVyVHlwZSA9IFBvaW50ZXJFdmVudDo6bW91c2VQb2ludGVyVHlwZSgpOwogICAgIG1f
YWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5hZGQobW91c2VQb2ludGVySUQsIGNhcHR1
cmluZ0RhdGEpOwotI2VuZGlmCiB9CiAKIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjp0
b3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChQb2ludGVySUQgcG9pbnRlcklkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAzZWFmNDYwODFkNmMyZjYz
YmY0ZDQ1N2FjODNlMGMyNjg4NTY1YjI3Li5mMDg2ZDRkYTNiOGFhNDc4NzY3OGE0OGM3NzcyNjQ3
YzVjMWNmZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApA
QCAtMTExNiw2ICsxMTE2LDIwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIFVJV0tE
b2N1bWVudFJlcXVlc3RGbGFncykgewogLSAodm9pZClfdXBkYXRlU2FmZUFyZWFJbnNldHM7CiBA
ZW5kCiAKK0BpbnRlcmZhY2UgVUlHZXN0dXJlUmVjb2duaXplciAoSVBJKQorLSAoQk9PTClfcGF1
c2VkOworQHByb3BlcnR5IChub25hdG9taWMpIFVJVmlldyAqdmlldzsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24sIGdldHRlcj1fYWNjZXB0c0ZhaWx1cmVSZXF1aXJlbWVudHMsIHNldHRl
cj1fc2V0QWNjZXB0c0ZhaWx1cmVSZXF1aW1lbnRzOikgQk9PTCBfYWNjZXB0c0ZhaWx1cmVSZXF1
aXJlbWVudHM7CitAZW5kCisKK0BpbnRlcmZhY2UgVUlIb3ZlckV2ZW50IDogVUlFdmVudAorLSAo
dm9pZClzZXROZWVkc0hpdFRlc3RSZXNldDsKK0BlbmQKKworQGludGVyZmFjZSBVSUFwcGxpY2F0
aW9uIChJUEkpCistIChVSUhvdmVyRXZlbnQgKilfaG92ZXJFdmVudEZvcldpbmRvdzooVUlXaW5k
b3cgKil3aW5kb3c7CitAZW5kCisKIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChJUEkpCiAtIChD
R0Zsb2F0KV9ydWJiZXJCYW5kT2Zmc2V0Rm9yT2Zmc2V0OihDR0Zsb2F0KW5ld09mZnNldCBtYXhP
ZmZzZXQ6KENHRmxvYXQpbWF4T2Zmc2V0IG1pbk9mZnNldDooQ0dGbG9hdCltaW5PZmZzZXQgcmFu
Z2U6KENHRmxvYXQpcmFuZ2Ugb3V0c2lkZTooQk9PTCAqKW91dHNpZGU7CiAtICh2b2lkKV9hZGp1
c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8gYW5pbWF0ZWQ6
KEJPT0wpYW5pbWF0ZWQgbGFzdEFkanVzdG1lbnQ6KENHRmxvYXQqKWxhc3RBZGp1c3RtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGJiZGRkOTQ4
MjZlNDg2MjljZmJlYzhmODNjNGU2ODY5ODcyMzFkYmYuLmJhN2Y5M2M5MjRmZWZkYWU3ZTQyYzcx
ZmVhOTNiNDljZmU2ZGE0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2
ZVdlYk1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3Vz
ZUV2ZW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqLCBpbnQpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChU
eXBlLCBCdXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBm
bG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwg
T3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wLCBkb3VibGUgZm9yY2UpOwog
I2VsaWYgVVNFKExJQldQRSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVfaW5w
dXRfcG9pbnRlcl9ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKICNlbGlmIFBMQVRG
T1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJN
b3VzZUV2ZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNl
RXZlbnRJT1MubW0KaW5kZXggYjliY2YxYmM0YzU3NDFiZTg4YTU5OTQ3MDI4NDkzMGFiM2EzNWU5
MC4uN2RiMDBmMTVhYmIyM2JkNjVjNzIyMTNmODBjMWY3OGRjMTA2NDA1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KQEAgLTM4
LDYgKzM4LDExIEBAIE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoOjpX
ZWJFdmVudCAqZXZlbnQpCiB7CiB9CiAKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRl
bHRhWiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxs
VGltZSB0aW1lc3RhbXAsIGRvdWJsZSBmb3JjZSkKKyAgICA6IFdlYk1vdXNlRXZlbnQodHlwZSwg
YnV0dG9uLCBidXR0b25zLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhWCwgZGVsdGFZ
LCBkZWx0YVosIGNsaWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBmb3JjZSkKK3sKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDMyN2VhNGUyODNiZTQwNjk3MmJhMzEzY2VhZGMz
YzAxMTUxZmFiY2UuLjI1N2U4Mjg0ZTJjMmFhNmQ3NTczZjY0ZDI2YTg1MTZkOTEzN2IwNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyNiw2ICs0MjYsNyBAQCBVSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lv
cy9XS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9z
L1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9z
L1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQorVUlQcm9jZXNzL2lvcy9XS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcubW0KIFVJUHJv
Y2Vzcy9pb3MvV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1tCiBVSVByb2Nlc3MvaW9zL1dLUERG
Vmlldy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDEwZmU2MTk1NTE3YzhjZGY4NzlmZDhlNzRkMjljNTM1
ZGNiNmU0MWMuLjFhNzg0YTZlYjc3ZTk3ZTg3YjgxODRlMTc1NTYwMzU3OTMxODU0ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTk5LDcgKzk5LDYgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dDsKIAogQGNsYXNzIF9VSUxvb2t1cEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIF9VSUhpZ2hs
aWdodFZpZXc7Ci1AY2xhc3MgVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIFVJVGFy
Z2V0ZWRQcmV2aWV3OwogQGNsYXNzIFdlYkV2ZW50OwogQGNsYXNzIFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQ7CkBAIC0xMDksNiArMTA4LDcgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dDsKIEBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9u
OwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CitAY2xhc3Mg
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyOwogCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21w
bGV0aW9uSGFuZGxlcikoVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwpA
QCAtMjM2LDggKzIzNiw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZW5kaWYK
IAogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIFJldGFpblB0cjxVSUhv
dmVyR2VzdHVyZVJlY29nbml6ZXI+IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyOwotICAgIENHUG9p
bnQgX2xhc3RIb3ZlckxvY2F0aW9uOworICAgIFJldGFpblB0cjxXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXI+IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8
VUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBiMmQ1NTAzYzE4YWJjMDY4N2ZlZGU3OTI4NzM1MjQxMTA2YmY0NWRj
Li5kNDA4NzVkODM4NDQ5MGY1Yzc1Y2VhZTdjNWQ1MzMwNTgzM2M1NDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIldLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgiCisjaW1w
b3J0ICJXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKICNpbXBvcnQgIldLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAi
V0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmgiCkBAIC0xMzMsMTEgKzEzNCw2IEBACiAjaW1w
b3J0IDxVSUtpdC9fVUlMb29rdXBHZXN0dXJlUmVjb2duaXplci5oPgogI2VuZGlmCiAKLSNpZiBI
QVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZl
bnQuaCIKLSNpbXBvcnQgPFVJS2l0L1VJSG92ZXJHZXN0dXJlUmVjb2duaXplci5oPgotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbXBvcnQgIldLRm9ybUNvbG9yQ29u
dHJvbC5oIgogI2VuZGlmCkBAIC03NDUsOSArNzQxLDkgQEAgLSAodm9pZClzZXR1cEludGVyYWN0
aW9uCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSAg
ICBfaG92ZXJHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSUhvdmVyR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaG92ZXJH
ZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KV0pOwotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaG92
ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgX21vdXNlR2VzdHVyZVJlY29nbml6ZXIg
PSBhZG9wdE5TKFtbV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdl
dDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOild
KTsKKyAgICBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkgICAgCkBAIC04OTcsOCArODkz
LDggQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAogI2lmIEhB
VkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9o
b3Zlckdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbX21vdXNlR2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpf
bW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKSAgICAKQEAgLTEwMTQsNyArMTAxMCw3IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1
bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgW3NlbGYgcmVt
b3ZlR2VzdHVyZVJlY29nbml6ZXI6X2hvdmVyR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAg
IFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFtzZWxmIHJlbW92
ZUdlc3R1cmVSZWNvZ25pemVyOl9sb29rdXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CkBAIC0x
MDQwLDcgKzEwMzYsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAg
ICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVz
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQotICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1
cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbW91
c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbG9va3VwR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwpAQCAtMTQ0OSwxNyArMTQ0NSwyMiBAQCAtICh2b2lkKV9oYW5kbGVUb3Vj
aEFjdGlvbnNGb3JUb3VjaEV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQm
KXRvdQogCiAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICop
Z2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkUmVjZWl2ZVRvdWNoOihVSVRvdWNoICopdG91Y2gKIHsK
LSAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVy
ZVJlY29nbml6ZXIgJiYgZ2VzdHVyZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lw
ZUdlc3R1cmVSZWNvZ25pemVyICYmIGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEFjdGlvblVw
U3dpcGVHZXN0dXJlUmVjb2duaXplciAmJiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hBY3Rp
b25Eb3duU3dpcGVHZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGdlc3R1cmVSZWNvZ25pemVyICE9IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyICYmIFtfbW91
c2VHZXN0dXJlUmVjb2duaXplciBtb3VzZVRvdWNoXSA9PSB0b3VjaCkKKyAgICAgICAgcmV0dXJu
IE5POworCisgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvbkxlZnRTd2lw
ZUdlc3R1cmVSZWNvZ25pemVyIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvblJp
Z2h0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hB
Y3Rpb25VcFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3Rv
dWNoQWN0aW9uRG93blN3aXBlR2VzdHVyZVJlY29nbml6ZXIpIHsKIAotICAgIC8vIFdlIHVwZGF0
ZSB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgdmFyaW91cyBzd2lwZSBnZXN0dXJlIHJlY29nbml6
ZXJzIHN1Y2ggdGhhdCBpZiB3ZSBoYXZlIGEgdW5pZGlyZWN0aW9uYWwgdG91Y2gtYWN0aW9uCi0g
ICAgLy8gc3BlY2lmaWVkIChvbmx5IHBhbi14IG9yIG9ubHkgcGFuLXkpIHdlIGVuYWJsZSB0aGUg
dHdvIHJlY29nbml6ZXJzIGluIHRoZSBvcHBvc2l0ZSBheGlzIHRvIHByZXZlbnQgc2Nyb2xsaW5n
IGZyb20gc3RhcnRpbmcKLSAgICAvLyBpZiB0aGUgaW5pdGlhbCBnZXN0dXJlIGlzIHN1Y2ggYSBz
d2lwZS4gU2luY2UgdGhlIHJlY29nbml6ZXJzIGFyZSBzcGVjaWZpZWQgdG8gdXNlIGEgc2luZ2xl
IGZpbmdlciBmb3IgcmVjb2duaXRpb24sIHdlIGRvbid0Ci0gICAgLy8gbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGUgY2FzZSB3aGVyZSB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIGEgc2luZ2xlIHRvdWNo
IGZvciBhIGdpdmVuIFVJU2Nyb2xsVmlldy4KLSAgICBhdXRvIHRvdWNoQWN0aW9ucyA9IFdlYktp
dDo6dG91Y2hBY3Rpb25zRm9yUG9pbnQoc2VsZiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFt0
b3VjaCBsb2NhdGlvbkluVmlldzpzZWxmXSkpOwotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9
PSBfdG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2du
aXplciA9PSBfdG91Y2hBY3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAg
IHJldHVybiB0b3VjaEFjdGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblk7Ci0gICAg
cmV0dXJuIHRvdWNoQWN0aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWDsKKyAgICAg
ICAgLy8gV2UgdXBkYXRlIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSB2YXJpb3VzIHN3aXBlIGdl
c3R1cmUgcmVjb2duaXplcnMgc3VjaCB0aGF0IGlmIHdlIGhhdmUgYSB1bmlkaXJlY3Rpb25hbCB0
b3VjaC1hY3Rpb24KKyAgICAgICAgLy8gc3BlY2lmaWVkIChvbmx5IHBhbi14IG9yIG9ubHkgcGFu
LXkpIHdlIGVuYWJsZSB0aGUgdHdvIHJlY29nbml6ZXJzIGluIHRoZSBvcHBvc2l0ZSBheGlzIHRv
IHByZXZlbnQgc2Nyb2xsaW5nIGZyb20gc3RhcnRpbmcKKyAgICAgICAgLy8gaWYgdGhlIGluaXRp
YWwgZ2VzdHVyZSBpcyBzdWNoIGEgc3dpcGUuIFNpbmNlIHRoZSByZWNvZ25pemVycyBhcmUgc3Bl
Y2lmaWVkIHRvIHVzZSBhIHNpbmdsZSBmaW5nZXIgZm9yIHJlY29nbml0aW9uLCB3ZSBkb24ndAor
ICAgICAgICAvLyBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIG1heSBi
ZSBtb3JlIHRoYW4gYSBzaW5nbGUgdG91Y2ggZm9yIGEgZ2l2ZW4gVUlTY3JvbGxWaWV3LgorICAg
ICAgICBhdXRvIHRvdWNoQWN0aW9ucyA9IFdlYktpdDo6dG91Y2hBY3Rpb25zRm9yUG9pbnQoc2Vs
ZiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFt0b3VjaCBsb2NhdGlvbkluVmlldzpzZWxmXSkp
OworICAgICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBl
R2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uUmln
aHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyKQorICAgICAgICAgICAgcmV0dXJuIHRvdWNoQWN0aW9u
cyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWTsKKyAgICAgICAgcmV0dXJuIHRvdWNoQWN0
aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWDsKKyAgICB9CisKKyAgICByZXR1cm4g
WUVTOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJE
ZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbgpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNo
b3VsZFJlY29nbmkKICAgICAgICAgcmV0dXJuIFlFUzsKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQotICAgIGlmIChbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpb
VUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0gfHwgW290aGVyR2VzdHVyZVJlY29nbml6
ZXIgaXNLaW5kT2ZDbGFzczpbVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0pCisgICAg
aWYgKFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIgY2xhc3NdXSB8fCBbb3RoZXJHZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltX
S01vdXNlR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNl
bmRpZgogCkBAIC02MzU1LDggKzYzNTYsMTAgQEAgLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNv
bnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKWRhdGEgaW5SZWN0OihXVEYKIAog
I2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQogICAgIGlmICghcmVjdCkgewotICAg
ICAgICBhdXRvIGhvdmVyTG9jYXRpb25JbldlYlZpZXcgPSBbc2VsZiBjb252ZXJ0UG9pbnQ6X2xh
c3RIb3ZlckxvY2F0aW9uIHRvVmlldzpfd2ViVmlld107Ci0gICAgICAgIHJlY3QgPSBXZWJDb3Jl
OjpGbG9hdFJlY3QoaG92ZXJMb2NhdGlvbkluV2ViVmlldy54LCBob3ZlckxvY2F0aW9uSW5XZWJW
aWV3LnksIDEsIDEpOworICAgICAgICBpZiAoYXV0byBsYXN0TW91c2VMb2NhdGlvbiA9IFtfbW91
c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VMb2NhdGlvbl0pIHsKKyAgICAgICAgICAgIGF1
dG8gaG92ZXJMb2NhdGlvbkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1vdXNl
TG9jYXRpb24gdG9WaWV3Ol93ZWJWaWV3XTsKKyAgICAgICAgICAgIHJlY3QgPSBXZWJDb3JlOjpG
bG9hdFJlY3QoaG92ZXJMb2NhdGlvbkluV2ViVmlldy54LCBob3ZlckxvY2F0aW9uSW5XZWJWaWV3
LnksIDEsIDEpOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC03NzUzLDQ2ICs3
NzU2LDEzIEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICNlbmRpZgogCiAjaWYgSEFWRShIT1ZFUl9HRVNU
VVJFX1JFQ09HTklaRVIpCi1zdGF0aWMgV2ViRXZlbnRGbGFncyB3ZWJFdmVudEZsYWdzRm9yVUlL
ZXlNb2RpZmllckZsYWdzKFVJS2V5TW9kaWZpZXJGbGFncyBmbGFncykKLXsKLSAgICBXZWJFdmVu
dEZsYWdzIGV2ZW50RmxhZ3MgPSAwOwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJTaGlm
dCkKLSAgICAgICAgZXZlbnRGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5Owot
ICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb250cm9sKQotICAgICAgICBldmVudEZsYWdz
IHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0Q29udHJvbEtleTsKLSAgICBpZiAoZmxhZ3MgJiBVSUtl
eU1vZGlmaWVyQWx0ZXJuYXRlKQotICAgICAgICBldmVudEZsYWdzIHw9IFdlYkV2ZW50RmxhZ01h
c2tMZWZ0T3B0aW9uS2V5OwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb21tYW5kKQot
ICAgICAgICBldmVudEZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0Q29tbWFuZEtleTsKLSAg
ICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWxwaGFTaGlmdCkKLSAgICAgICAgZXZlbnRGbGFn
cyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdENhcHNMb2NrS2V5OwotICAgIHJldHVybiBldmVudEZs
YWdzOwotfQotCi0tICh2b2lkKV9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooVUlHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCistICh2b2lkKV9tb3VzZUdlc3R1cmVS
ZWNvZ25pemVyQ2hhbmdlZDooV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKIHsKICAgICBpZiAoIV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBNYWtlIGEgdGltZXN0YW1wIHRoYXQgbWF0Y2hlcyBVSVRvdWNoIGFu
ZCBVSUV2ZW50LgotICAgIENGVGltZUludGVydmFsIHRpbWVzdGFtcCA9IEdTQ3VycmVudEV2ZW50
VGltZXN0YW1wKCkgLyAxMDAwMDAwMDAwLjA7Ci0KLSAgICBDR1BvaW50IHBvaW50OwotICAgIHN3
aXRjaCAoZ2VzdHVyZVJlY29nbml6ZXIuc3RhdGUpIHsKLSAgICBjYXNlIFVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUJlZ2FuOgotICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdl
ZDoKLSAgICAgICAgcG9pbnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2Vs
Zl07Ci0gICAgICAgIF9sYXN0SG92ZXJMb2NhdGlvbiA9IHBvaW50OwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOgotICAgIGNhc2UgVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHBvaW50
ID0gQ0dQb2ludE1ha2UoLTEsIC0xKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgYXV0
byBldmVudCA9IGFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRU
eXBlOldlYkV2ZW50TW91c2VNb3ZlZCB0aW1lU3RhbXA6dGltZXN0YW1wIGxvY2F0aW9uOnBvaW50
IG1vZGlmaWVyczp3ZWJFdmVudEZsYWdzRm9yVUlLZXlNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNv
Z25pemVyTW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplcikpXSk7Ci0gICAgX3BhZ2UtPmhh
bmRsZU1vdXNlRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LmdldCgpKSk7
CisgICAgaWYgKGF1dG8gZXZlbnQgPSBnZXN0dXJlUmVjb2duaXplci5sYXN0TW91c2VFdmVudCkK
KyAgICAgICAgX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQoKmV2ZW50KTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNv
Z25pemVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNv
Z25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBhYTRjNWIyMjU0NDUwODY4YTY2NGU1ZmY3ZTdkYjhkODdj
YjU4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01v
dXNlR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVD
T0dOSVpFUikKKworI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorCitAaW50ZXJmYWNl
IFdLTW91c2VHZXN0dXJlUmVjb2duaXplciA6IFVJR2VzdHVyZVJlY29nbml6ZXIKKworLSAoV1RG
OjpPcHRpb25hbDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbjsKKy0gKFdURjo6T3B0aW9uYWw8
V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50PilsYXN0TW91c2VFdmVudDsKKworLSAoVUlUb3Vj
aCAqKW1vdXNlVG91Y2g7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42Yzg0OWEwZGY5YzUzMGFkMDhmMmU5ZDkyMmI3YjViODMyZDVkYjgyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXpl
ci5tbQpAQCAtMCwwICsxLDI1MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLTW91c2VHZXN0dXJl
UmVjb2duaXplci5oIgorCisjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisKKyNp
bXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1w
b3J0IDx3dGYvT3B0aW9uYWwuaD4KKworc3RhdGljIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50
OjpNb2RpZmllcj4gd2ViRXZlbnRNb2RpZmllcnNGb3JVSUtleU1vZGlmaWVyRmxhZ3MoVUlLZXlN
b2RpZmllckZsYWdzIGZsYWdzKQoreworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpN
b2RpZmllcj4gbW9kaWZpZXJzOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJTaGlmdCkK
KyAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6U2hpZnRL
ZXkpOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb250cm9sKQorICAgICAgICBtb2Rp
ZmllcnMuYWRkKFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpDb250cm9sS2V5KTsKKyAgICBp
ZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWx0ZXJuYXRlKQorICAgICAgICBtb2RpZmllcnMuYWRk
KFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOworICAgIGlmIChmbGFncyAmIFVJ
S2V5TW9kaWZpZXJDb21tYW5kKQorICAgICAgICBtb2RpZmllcnMuYWRkKFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWxw
aGFTaGlmdCkKKyAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmll
cjo6Q2Fwc0xvY2tLZXkpOworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK0BpbXBsZW1lbnRh
dGlvbiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgeworICAgIFJldGFpblB0cjxVSUhvdmVyRXZl
bnQ+IF9jdXJyZW50SG92ZXJFdmVudDsKKyAgICBSZXRhaW5QdHI8VUlUb3VjaD4gX2N1cnJlbnRU
b3VjaDsKKworICAgIEJPT0wgX3RvdWNoaW5nOworCisgICAgT3B0aW9uYWw8V2ViS2l0OjpOYXRp
dmVXZWJNb3VzZUV2ZW50PiBfbGFzdEV2ZW50OworICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9sYXN0
TG9jYXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFRhcmdldDooaWQpdGFyZ2V0
IGFjdGlvbjooU0VMKWFjdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhUYXJnZXQ6
dGFyZ2V0IGFjdGlvbjphY3Rpb25dOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIFtzZWxmIF9zZXRBY2NlcHRzRmFpbHVyZVJlcXVpbWVudHM6Tk9dOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmlldzooVUlWaWV3ICopdmlldworeworICAg
IGlmICh2aWV3ID09IHNlbGYudmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N1cGVyIHNl
dFZpZXc6dmlld107CisKKyAgICBpZiAodmlldy5fd2luZG93KSB7CisgICAgICAgIFVJSG92ZXJF
dmVudCAqaG92ZXJFdmVudCA9IFtVSUFwcCBfaG92ZXJFdmVudEZvcldpbmRvdzp2aWV3Ll93aW5k
b3ddOworICAgICAgICBbaG92ZXJFdmVudCBzZXROZWVkc0hpdFRlc3RSZXNldF07CisgICAgfQor
fQorCistIChXVEY6Ok9wdGlvbmFsPFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudD4pbGFzdE1v
dXNlRXZlbnQKK3sKKyAgICByZXR1cm4gX2xhc3RFdmVudDsKK30KKworLSAoV1RGOjpPcHRpb25h
bDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbgoreworICAgIHJldHVybiBfbGFzdExvY2F0aW9u
OworfQorCistIChVSVRvdWNoICopbW91c2VUb3VjaAoreworICAgIHJldHVybiBfY3VycmVudFRv
dWNoLmdldCgpOworfQorCistIChCT09MKV93YW50c0hvdmVyRXZlbnRzCit7CisgICAgcmV0dXJu
IFlFUzsKK30KKworLSAodm9pZClyZXNldAoreworICAgIFtzdXBlciByZXNldF07CisgICAgX2N1
cnJlbnRIb3ZlckV2ZW50ID0gbmlsOworICAgIF9jdXJyZW50VG91Y2ggPSBuaWw7Cit9CisKKy0g
KEJPT0wpX3Nob3VsZFJlY2VpdmVUb3VjaDooVUlUb3VjaCAqKXRvdWNoIGZvckV2ZW50OihVSUV2
ZW50ICopZXZlbnQgcmVjb2duaXplclZpZXc6KFVJVmlldyAqKXJlY29nbml6ZXJWaWV3Cit7Cisg
ICAgcmV0dXJuIHRvdWNoID09IF9jdXJyZW50VG91Y2g7Cit9CisKKy0gKEJPT0wpX3Nob3VsZFJl
Y2VpdmVQcmVzczooVUlQcmVzcyAqKXByZXNzCit7CisgICAgcmV0dXJuIE5POworfQorCistIChX
ZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQpY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOihXZWJL
aXQ6OldlYkV2ZW50OjpUeXBlKXR5cGUKK3sKKyAgICBhdXRvIG1vZGlmaWVycyA9IHdlYkV2ZW50
TW9kaWZpZXJzRm9yVUlLZXlNb2RpZmllckZsYWdzKHNlbGYubW9kaWZpZXJGbGFncyk7CisgICAg
Qk9PTCBoYXNDb250cm9sTW9kaWZpZXIgPSBtb2RpZmllcnMuY29udGFpbnMoV2ViS2l0OjpXZWJF
dmVudDo6TW9kaWZpZXI6OkNvbnRyb2xLZXkpOworCisgICAgYXV0byBidXR0b24gPSBbJl0gewor
ICAgICAgICBpZiAoIV90b3VjaGluZyB8fCB0eXBlID09IFdlYktpdDo6V2ViRXZlbnQ6OlR5cGU6
Ok1vdXNlVXApCisgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpOb0J1
dHRvbjsKKyAgICAgICAgaWYgKGhhc0NvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOworICAgICAgICByZXR1cm4gV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIH0oKTsKKworICAgIGF1dG8gYnV0
dG9ucyA9IFsmXSB7CisgICAgICAgIGlmICghX3RvdWNoaW5nKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGlmIChoYXNDb250cm9sTW9kaWZpZXIpCisgICAgICAgICAgICByZXR1cm4g
MjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSgpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQgeyBbc2VsZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddIH07CisKKyAgICAvLyBNYWtl
IGEgdGltZXN0YW1wIHRoYXQgbWF0Y2hlcyBVSVRvdWNoIGFuZCBVSUV2ZW50LgorICAgIGF1dG8g
dGltZXN0YW1wID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKEdTQ3VycmVudEV2ZW50VGltZXN0
YW1wKCkgLyAxMDAwMDAwMDAwLjApOworCisgICAgcmV0dXJuIFdlYktpdDo6TmF0aXZlV2ViTW91
c2VFdmVudCh0eXBlLCBidXR0b24sIGJ1dHRvbnMsIHBvaW50LCBwb2ludCwgMCwgMCwgMCwgW19j
dXJyZW50VG91Y2ggdGFwQ291bnRdLCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgMCk7Cit9CisKKy0g
KHZvaWQpdG91Y2hlc0JlZ2FuOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6
KFVJRXZlbnQgKilldmVudAoreworICAgIF90b3VjaGluZyA9IFlFUzsKKworICAgIF9sYXN0RXZl
bnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6TW91
c2VEb3duXTsKKyAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52
aWV3XTsKKworICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2Vk
OworfQorCistICh2b2lkKXRvdWNoZXNNb3ZlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMg
d2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3Jl
YXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisgICAg
X2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmlld107CisKKyAgICBz
ZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKK30KKworLSAodm9p
ZCl0b3VjaGVzRW5kZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlF
dmVudCAqKWV2ZW50Cit7CisgICAgX3RvdWNoaW5nID0gTk87CisKKyAgICBfbGFzdEV2ZW50ID0g
W3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlVXBd
OworICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddOwor
CisgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7Cit9CisK
Ky0gKHZvaWQpdG91Y2hlc0NhbmNlbGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0
aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBbc2VsZiB0b3VjaGVzRW5kZWQ6dG91Y2hl
cyB3aXRoRXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKV9ob3ZlckVudGVyZWQ6KE5TU2V0PFVJ
VG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgX2xh
c3RFdmVudCA9IFtzZWxmIGNyZWF0ZU1vdXNlRXZlbnRXaXRoVHlwZTpXZWJLaXQ6OldlYkV2ZW50
OjpNb3VzZU1vdmVdOworCisgICAgaWYgKF9jdXJyZW50SG92ZXJFdmVudCA9PSBuaWwgJiYgdG91
Y2hlcy5jb3VudCA9PSAxICYmIFtldmVudCBpc0tpbmRPZkNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5n
KEAiVUlIb3ZlckV2ZW50IildKSB7CisgICAgICAgIF9jdXJyZW50SG92ZXJFdmVudCA9IChVSUhv
dmVyRXZlbnQgKilldmVudDsKKyAgICAgICAgX2N1cnJlbnRUb3VjaCA9IHRvdWNoZXMuYW55T2Jq
ZWN0OworICAgICAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52
aWV3XTsKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2Fu
OworICAgIH0KKworICAgIFtzdXBlciBfaG92ZXJFbnRlcmVkOnRvdWNoZXMgd2l0aEV2ZW50OmV2
ZW50XTsKK30KKworLSAodm9pZClfaG92ZXJNb3ZlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNo
ZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3RvdWNoaW5nKSB7Cisg
ICAgICAgIF9sYXN0RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktp
dDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0
aW9uSW5WaWV3OnNlbGYudmlld107CisKKyAgICBpZiAoX2N1cnJlbnRIb3ZlckV2ZW50ID09IGV2
ZW50ICYmIFt0b3VjaGVzIGNvbnRhaW5zT2JqZWN0Ol9jdXJyZW50VG91Y2guZ2V0KCldKQorICAg
ICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKKworICAg
IFtzdXBlciBfaG92ZXJNb3ZlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZv
aWQpX2hvdmVyRXhpdGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJ
RXZlbnQgKilldmVudAoreworICAgIF9sYXN0RXZlbnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2ZW50
V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6TW91c2VNb3ZlXTsKKyAgICBfbGFzdExvY2F0aW9u
ID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsKKworICAgIGlmIChfY3VycmVudEhv
dmVyRXZlbnQgPT0gZXZlbnQpIHsKKyAgICAgICAgX2N1cnJlbnRIb3ZlckV2ZW50ID0gbmlsOwor
ICAgICAgICBfY3VycmVudFRvdWNoID0gbmlsOworICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlRW5kZWQ7CisgICAgfQorCisgICAgW3N1cGVyIF9ob3ZlckV4aXRl
ZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX2hvdmVyQ2FuY2VsbGVk
OihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAor
eworICAgIFtzZWxmIF9ob3ZlckV4aXRlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07CisgICAg
W3N1cGVyIF9ob3ZlckNhbmNlbGxlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0g
KENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIV9jdXJy
ZW50VG91Y2gpCisgICAgICAgIHJldHVybiBDR1BvaW50TWFrZSgtMSwgLTEpOworICAgIHJldHVy
biBbX2N1cnJlbnRUb3VjaCBsb2NhdGlvbkluVmlldzp2aWV3XTsKK30KKworLSAoQk9PTCljYW5Q
cmV2ZW50R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplcgoreworICAgIHJldHVybiBOTzsKK30KKworLSAoQk9PTCljYW5CZVBy
ZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50
aW5nR2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKK0BlbmQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmOTk1MmMxZjRhMDVlMmU5OWZiMGI3NWVlOWI5YzE0OTYxYTM4Y2IyLi40ZmUwZjNlN2U1
ODdmMWI0ZDVjNzAwMWYxNzE1MWEzMTk0YTc1NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwNSw2ICs3MDUsNyBAQAogCQkyREFD
RTY0RTE4QURCRkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYw
MDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggKi87IH07CiAJCTJEQUYwNkQ2
MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENDE4QkQxQTQ3
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQkyREI3
NjY3MTIxQjVFNDhBMDA0NUREQjEgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjc2NjcwMjFCNUU0OEEw
MDQ1RERCMSAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OworCQkyREI5NDI5OTIz
NEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREI5NDI5NzIzNEU3QTdGMDBFNzc2
QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCTJEQzE4RkFEMjE4OTEw
NDkwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5n
Vmlldy5oICovOyB9OwogCQkyREMxOEZCMDIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZB
RjIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggKi87IH07CiAJCTJEQzE4RkIzMjE4
QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMThGQjEyMThBNkU5RTAwMjVBODhEIC8q
IFJlbW90ZUxheWVyVHJlZVZpZXdzLmggKi87IH07CkBAIC0yODU2LDYgKzI4NTcsOCBAQAogCQky
REFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
OyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRCNzY2NzAyMUI1RTQ4QTAwNDVEREIxIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTdXBwb3J0
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk3MjM0RTdBN0YwMEU3
NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk4MjM0RTdBN0YwMEU3NzZB
RCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVSZWNv
Z25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZBQjIxODkxMDQ4
MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0RyYXdpbmdWaWV3Lmg7IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZBQzIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3
aW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJh
d2luZ1ZpZXcubW07IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5jaWxLaXRTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMzcsNiArNjE0MCw4IEBACiAJCQkJQTU0MjkzQTMx
OTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
Lm1tICovLAogCQkJCTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaCAqLywKIAkJCQkyREQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovLAorCQkJCTJEQjk0Mjk3MjM0RTdBN0YwMEU3NzZB
RCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQkyREI5NDI5ODIzNEU3QTdG
MDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCUExNUVFREU0
MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLAogCQkJCUExNUVFREUzMUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5tbSAqLywKIAkJCQkyRDZBQjUzRjE5MkIx
QzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi8sCkBAIC0xMDI1Nyw2
ICsxMDI2Miw3IEBACiAJCQkJNUNBQkRDODYyMkM0MEZERTAwMUVERThFIC8qIFdLTWVzc2FnZUxp
c3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyog
V0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExQThEREIyMERERDFBQzAwNjBE
MzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREI5NDI5OTIz
NEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDlBRTVFOTEyNTI1N0MyMDAyNTgyNUQgLyog
V0tOYXRpdmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381358</attachid>
            <date>2019-10-18 17:53:22 -0700</date>
            <delta_ts>2019-10-18 18:22:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203175-20191018175321.patch</filename>
            <type>text/plain</type>
            <size>38263</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRmZDE5NDI1NDUyZTI5
NTIyNDdhM2QxN2EwYTBjOTYwNDZmZmVjOS4uZjgyMmRhYjQyMjVmZjFiMGQ0YmY0MjFmZDNiYzE0
YWU2ODc0YThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkSWdub3JlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cmVz
ZXQpOgorICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBwbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IHRvdWNoIGV2ZW50cyBhbmQgcGxhdGZvcm1zIHRoYXQgZG9uJ3Q7CisgICAgICAgIHdlIHdh
bnQgdG8gYmUgYWJsZSB0byBkaXNwYXRjaCBwb2ludGVyIGV2ZW50cyB0aGF0IG9yaWdpbmF0ZSBm
cm9tIG1vdXNlIGV2ZW50cworICAgICAgICBpbiBtYWNDYXRhbHlzdCBkZXNwaXRlIHRvdWNoIGV2
ZW50cyBiZWluZyBlbmFibGVkIChieSB2aXJ0dWUgb2YgYmVpbmcgaU9TIFdlYktpdCksCisgICAg
ICAgIHNvIHVuLWlmZGVmIHRoYXQgY29kZS4KKwogMjAxOS0xMC0xNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
KGV4cGVyaW1lbnRhbCk6IEJsb2NrIGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIG9uIHdlYnNpdGVz
IHdpdGhvdXQgcHJpb3IgdXNlciBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzYjc0NzZmM2Y4YTk5
ZjdlYzlkOTk3ZTIyMTgxODdkMDY5Nzg3NDg0Li43ZGMyMjMzOTk0NDJmYmQ0ODY4NTNjNmE3NTVm
MDY3ZTQ2YWYyZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL2lv
cy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJN
b3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgQWRkIGEgTmF0aXZlV2Vi
TW91c2VFdmVudCBjb25zdHJ1Y3RvciB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgd3JhcCBhIG5hdGl2
ZSBldmVudCwKKyAgICAgICAgZm9yIGNyZWF0aW5nIHRvdGFsbHktc3ludGhldGljIGV2ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlLZXlNb2RpZmllckZsYWdz
KToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGluaXRXaXRoVGFyZ2V0OmFj
dGlvbjpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNldFZpZXc6XSk6
CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VFdmVudF0pOgor
ICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgbGFzdE1vdXNlTG9jYXRpb25dKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIG1vdXNlVG91Y2hdKToKKyAgICAg
ICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF93YW50c0hvdmVyRXZlbnRzXSk6CisgICAg
ICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciByZXNldF0pOgorICAgICAgICAoLVtXS01v
dXNlR2VzdHVyZVJlY29nbml6ZXIgX3Nob3VsZFJlY2VpdmVUb3VjaDpmb3JFdmVudDpyZWNvZ25p
emVyVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9zaG91bGRS
ZWNlaXZlUHJlc3M6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjcmVh
dGVNb3VzZUV2ZW50V2l0aFR5cGU6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2du
aXplciB0b3VjaGVzQmVnYW46d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgdG91Y2hlc01vdmVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNFbmRlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgt
W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciB0b3VjaGVzQ2FuY2VsbGVkOndpdGhFdmVudDpdKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9ob3ZlckVudGVyZWQ6d2l0aEV2
ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVyTW92ZWQ6
d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVy
RXhpdGVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
IF9ob3ZlckNhbmNlbGxlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyIGNhblByZXZlbnRHZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjpd
KToKKyAgICAgICAgSW5zdGVhZCBvZiBqdXN0IHVzaW5nIFVJSG92ZXJHZXN0dXJlUmVjb2duaXpl
ciwgaW50cm9kdWNlIGEgbmV3IGdlc3R1cmUKKyAgICAgICAgcmVjb2duaXplciB0aGF0IGRvZXMg
d2hhdCBpdCBkaWQsIGJ1dCBhbHNvIHN1cHBvcnRzIGNhc2VzIHdoZXJlIHRoZSBidXR0b24KKyAg
ICAgICAgaXMgcHJlc3NlZCAoc28sIG1vdXNlZG93biBhbmQgbW91c2V1cCBpbnN0ZWFkIG9mIGp1
c3QgbW91c2Vtb3ZlKSwKKyAgICAgICAgYW5kIHN5bnRoZXNpemVzIG1vdXNlIGV2ZW50cyBmb3Ig
YWxsIHN0YXRlIHRyYW5zaXRpb25zLiBUaGVzZSBldmVudHMKKyAgICAgICAgc2hvdWxkIGxvb2sg
cm91Z2hseSBpZGVudGljYWwgdG8gd2hhdCBhIG5vbi1tYWNDYXRhbHlzdCBhcHAgd291bGQgZ2V0
CisgICAgICAgIGluIEFwcEtpdCdzIG1vdXNlVXAvbW91c2VEb3duL21vdXNlTW92ZWQgTlNSZXNw
b25kZXIgbWV0aG9kcy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZURlZmF1
bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWRkRGVm
YXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1
cmVSZWNvZ25pemVyOnNob3VsZFJlY2VpdmVUb3VjaDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVvdXNseVdpdGhH
ZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1NoYXJl
U2hlZXQ6aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKToKKyAgICAgICAgKHdlYkV2ZW50
RmxhZ3NGb3JVSUtleU1vZGlmaWVyRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSB1c2Ug
b2YgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHRvIHBsdW1iIHRoZSBzeW50aGVzaXplZCBldmVu
dHMgZGlyZWN0bHkKKyAgICAgICAgdG8gdGhlIG1hY09TLXN0eWxlICJoYW5kbGVNb3VzZUV2ZW50
IiBjb2RlcGF0aCwgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIHRoZSB0b3VjaCBl
dmVudHMgcGF0aCAoYW5kIHRoZW4gc3Vic2VxdWVudGx5IGdlbmVyYXRpbmcgc3ludGhldGljIGNs
aWNrcykuCisgICAgICAgIEFsc28sIGVuc3VyZSB0aGF0IG90aGVyIGdlc3R1cmUgcmVjb2duaXpl
cnMgaWdub3JlIHRoZSBtb3VzZSAidG91Y2giIGVudGlyZWx5CisgICAgICAgIGJ5IHJldHVybmlu
ZyBOTyBpbiBzaG91bGRSZWNlaXZlVG91Y2guCisKIDIwMTktMTAtMTYgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBzZW5kLXNpZ25h
bCBmcm9tIG1hY2gtbG9va3VwIHJ1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5NjVjNDBl
YjE1ZGNlYzNmOTY2ZGE2MWE0MmMzYjA4NTEyZjM4NzNiLi5kMWI0N2VhYWFkZTkxMTFmZTQ1ZDM3
ODFkYjliNmE3OWVmZDRkNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDMsNyArMzAz
LDcgQEAgc3RhdGljIGJvb2wgaXNGb3JjZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcm1FdmVudCkKICAgICByZXR1cm4gcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6TW91c2VGb3JjZUNoYW5nZWQgfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZURvd24gfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZVVwOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KSAmJiAhRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiBz
dGF0aWMgYm9vbCBpc0NvbXBhdGliaWxpdHlNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMv
I2NvbXBhdGliaWxpdHktbWFwcGluZy13aXRoLW1vdXNlLWV2ZW50cwpAQCAtMzEyLDQ0ICszMTIs
NTMgQEAgc3RhdGljIGJvb2wgaXNDb21wYXRpYmlsaXR5TW91c2VFdmVudChjb25zdCBNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogfQogI2VuZGlmCiAKLWJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KQor
c3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTW91c2VFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIGJvb2wmIGRpZE5vdFN3YWxsb3dFdmVudCkKIHsKLSAgICBpZiAoaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpc0ZvcmNl
RXZlbnQocGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlRm9yRXZl
bnRUeXBlKHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmVmPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRldGFpbCwgcmVs
YXRlZFRhcmdldCk7Ci0KLSAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCi0KLSAgICBib29sIGRpZE5v
dFN3YWxsb3dFdmVudCA9IHRydWU7Ci0KICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucG9pbnRlckV2ZW50
c0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkg
ewogICAgICAgICAgICAgYXV0byYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyID0gcGFnZS0+cG9p
bnRlckNhcHR1cmVDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAg
ICAgICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQg
JiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRzQ29tcGF0aWJpbGl0eU1vdXNlRXZl
bnRzRm9ySWRlbnRpZmllcihwbGF0Zm9ybUV2ZW50LnBvaW50ZXJJZCgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudC5wb2ludGVy
SWQoKSAhPSBtb3VzZVBvaW50ZXJJRCAmJiBtb3VzZUV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCAmJiBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIucHJldmVudHNDb21wYXRp
YmlsaXR5TW91c2VFdmVudHNGb3JJZGVudGlmaWVyKHBsYXRmb3JtRXZlbnQucG9pbnRlcklkKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShwbGF0Zm9ybUV2ZW50KTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKGF1dG8gcG9p
bnRlckV2ZW50ID0gcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnBvaW50ZXJFdmVudEZvck1vdXNl
RXZlbnQobW91c2VFdmVudCkpIHsKLSAgICAgICAgICAgICAgICBwb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuZGlzcGF0Y2hFdmVudCgqcG9pbnRlckV2ZW50LCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuZGlzcGF0Y2hFdmVudCgqcG9pbnRlckV2ZW50LCAm
ZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0aWJpbGl0eU1vdXNlRXZlbnQo
bW91c2VFdmVudCkgJiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRzQ29tcGF0aWJp
bGl0eU1vdXNlRXZlbnRzRm9ySWRlbnRpZmllcihwb2ludGVyRXZlbnQtPnBvaW50ZXJJZCgpKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAocG9pbnRlckV2ZW50LT5kZWZhdWx0UHJl
dmVudGVkKCkgfHwgcG9pbnRlckV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGRpZE5vdFN3YWxsb3dFdmVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICBpZiAocG9pbnRlckV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnBvaW50ZXJkb3duRXZl
bnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50IGRl
dGFpbCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkKK3sKKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc0ZvcmNlRXZlbnQo
cGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBl
KHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVm
PE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBk
b2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRldGFpbCwgcmVsYXRlZFRh
cmdldCk7CisKKyAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCisKKyAgICBib29sIGRpZE5vdFN3YWxs
b3dFdmVudCA9IHRydWU7CisKKyAgICBpZiAoc2hvdWxkSWdub3JlTW91c2VFdmVudCgqdGhpcywg
bW91c2VFdmVudC5nZXQoKSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQVNTRVJUKCFtb3VzZUV2ZW50LT50YXJnZXQoKSB8
fCBtb3VzZUV2ZW50LT50YXJnZXQoKSAhPSByZWxhdGVkVGFyZ2V0KTsKICAgICBkaXNwYXRjaEV2
ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChtb3VzZUV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkg
fHwgbW91c2VFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAppbmRleCBmZGE4MGQ1ZTlhZTkzMjU3ZjY3
MjI5YTYxYzllNzJjM2MzODY1N2EyLi4xNmY0MzJhZjg4OGRkYjZjODcyZjY1OTM0MzQyNTYwN2Fl
YjZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC0xNTksMTEgKzE1OSwxMCBAQCB2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJv
bGxlcjo6ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyOjpyZXNldCgpCiB7CiAgICAgbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0
dXJpbmdEYXRhLmNsZWFyKCk7Ci0jaWYgIUVOQUJMRShUT1VDSF9FVkVOVFMpCisKICAgICBDYXB0
dXJpbmdEYXRhIGNhcHR1cmluZ0RhdGE7CiAgICAgY2FwdHVyaW5nRGF0YS5wb2ludGVyVHlwZSA9
IFBvaW50ZXJFdmVudDo6bW91c2VQb2ludGVyVHlwZSgpOwogICAgIG1fYWN0aXZlUG9pbnRlcklk
c1RvQ2FwdHVyaW5nRGF0YS5hZGQobW91c2VQb2ludGVySUQsIGNhcHR1cmluZ0RhdGEpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjp0b3VjaFdpdGhJZGVudGlm
aWVyV2FzUmVtb3ZlZChQb2ludGVySUQgcG9pbnRlcklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAzZWFmNDYwODFkNmMyZjYzYmY0ZDQ1N2FjODNlMGMy
Njg4NTY1YjI3Li5mMDg2ZDRkYTNiOGFhNDc4NzY3OGE0OGM3NzcyNjQ3YzVjMWNmZTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTExNiw2ICsxMTE2
LDIwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIFVJV0tEb2N1bWVudFJlcXVlc3RG
bGFncykgewogLSAodm9pZClfdXBkYXRlU2FmZUFyZWFJbnNldHM7CiBAZW5kCiAKK0BpbnRlcmZh
Y2UgVUlHZXN0dXJlUmVjb2duaXplciAoSVBJKQorLSAoQk9PTClfcGF1c2VkOworQHByb3BlcnR5
IChub25hdG9taWMpIFVJVmlldyAqdmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24s
IGdldHRlcj1fYWNjZXB0c0ZhaWx1cmVSZXF1aXJlbWVudHMsIHNldHRlcj1fc2V0QWNjZXB0c0Zh
aWx1cmVSZXF1aW1lbnRzOikgQk9PTCBfYWNjZXB0c0ZhaWx1cmVSZXF1aXJlbWVudHM7CitAZW5k
CisKK0BpbnRlcmZhY2UgVUlIb3ZlckV2ZW50IDogVUlFdmVudAorLSAodm9pZClzZXROZWVkc0hp
dFRlc3RSZXNldDsKK0BlbmQKKworQGludGVyZmFjZSBVSUFwcGxpY2F0aW9uIChJUEkpCistIChV
SUhvdmVyRXZlbnQgKilfaG92ZXJFdmVudEZvcldpbmRvdzooVUlXaW5kb3cgKil3aW5kb3c7CitA
ZW5kCisKIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChJUEkpCiAtIChDR0Zsb2F0KV9ydWJiZXJC
YW5kT2Zmc2V0Rm9yT2Zmc2V0OihDR0Zsb2F0KW5ld09mZnNldCBtYXhPZmZzZXQ6KENHRmxvYXQp
bWF4T2Zmc2V0IG1pbk9mZnNldDooQ0dGbG9hdCltaW5PZmZzZXQgcmFuZ2U6KENHRmxvYXQpcmFu
Z2Ugb3V0c2lkZTooQk9PTCAqKW91dHNpZGU7CiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNL
ZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
bGFzdEFkanVzdG1lbnQ6KENHRmxvYXQqKWxhc3RBZGp1c3RtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGJiZGRkOTQ4MjZlNDg2MjljZmJlYzhm
ODNjNGU2ODY5ODcyMzFkYmYuLmJhN2Y5M2M5MjRmZWZkYWU3ZTQyYzcxZmVhOTNiNDljZmU2ZGE0
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTYz
LDYgKzYzLDcgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBp
bnQpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
KDo6V2ViRXZlbnQgKik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChUeXBlLCBCdXR0b24sIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZs
b2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgT3B0aW9uU2V0PE1vZGlm
aWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wLCBkb3VibGUgZm9yY2UpOwogI2VsaWYgVVNFKExJQldQ
RSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfcG9pbnRlcl9ldmVu
dCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KaW5k
ZXggYjliY2YxYmM0YzU3NDFiZTg4YTU5OTQ3MDI4NDkzMGFiM2EzNWU5MC4uN2RiMDBmMTVhYmIy
M2JkNjVjNzIyMTNmODBjMWY3OGRjMTA2NDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KQEAgLTM4LDYgKzM4LDExIEBAIE5h
dGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAqZXZlbnQp
CiB7CiB9CiAKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0
eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNr
Q291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAs
IGRvdWJsZSBmb3JjZSkKKyAgICA6IFdlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBidXR0b25z
LCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNsaWNr
Q291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBmb3JjZSkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDMyN2VhNGUyODNiZTQwNjk3MmJhMzEzY2VhZGMzYzAxMTUxZmFiY2UuLjI1
N2U4Mjg0ZTJjMmFhNmQ3NTczZjY0ZDI2YTg1MTZkOTEzN2IwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQyNiw2ICs0MjYsNyBAQCBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5tbQorVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLm1tCiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCmluZGV4IDEwZmU2MTk1NTE3YzhjZGY4NzlmZDhlNzRkMjljNTM1ZGNiNmU0MWMuLjFhNzg0
YTZlYjc3ZTk3ZTg3YjgxODRlMTc1NTYwMzU3OTMxODU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTk5
LDcgKzk5LDYgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIAogQGNsYXNzIF9V
SUxvb2t1cEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIF9VSUhpZ2hsaWdodFZpZXc7Ci1AY2xh
c3MgVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIFVJVGFyZ2V0ZWRQcmV2aWV3Owog
QGNsYXNzIFdlYkV2ZW50OwogQGNsYXNzIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ7CkBAIC0xMDks
NiArMTA4LDcgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIEBjbGFzcyBXS0Zv
cm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOwogQGNsYXNzIFdLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CitAY2xhc3MgV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyOwogQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
OwogCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciko
VUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwpAQCAtMjM2LDggKzIzNiw3
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZW5kaWYKIAogI2lmIEhBVkUoSE9W
RVJfR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIFJldGFpblB0cjxVSUhvdmVyR2VzdHVyZVJlY29n
bml6ZXI+IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyOwotICAgIENHUG9pbnQgX2xhc3RIb3Zlckxv
Y2F0aW9uOworICAgIFJldGFpblB0cjxXS01vdXNlR2VzdHVyZVJlY29nbml6ZXI+IF9tb3VzZUdl
c3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8VUlXS1RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCBiMmQ1NTAzYzE4YWJjMDY4N2ZlZGU3OTI4NzM1MjQxMTA2YmY0NWRjLi5kNDA4NzVkODM4NDQ5
MGY1Yzc1Y2VhZTdjNWQ1MzMwNTgzM2M1NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU1LDYgKzU1
LDcgQEAKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCIK
ICNpbXBvcnQgIldLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLSW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgiCisjaW1wb3J0ICJXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldL
UHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9u
SXRlbUludGVybmFsLmgiCkBAIC0xMzMsMTEgKzEzNCw2IEBACiAjaW1wb3J0IDxVSUtpdC9fVUlM
b29rdXBHZXN0dXJlUmVjb2duaXplci5oPgogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RV
UkVfUkVDT0dOSVpFUikKLSNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKLSNpbXBvcnQg
PFVJS2l0L1VJSG92ZXJHZXN0dXJlUmVjb2duaXplci5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKICNpbXBvcnQgIldLRm9ybUNvbG9yQ29udHJvbC5oIgogI2VuZGlm
CkBAIC03NDUsOSArNzQxLDkgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBfaG92ZXJHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaG92ZXJHZXN0dXJlUmVjb2duaXpl
ckNoYW5nZWQ6KV0pOwotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisgICAgX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpA
c2VsZWN0b3IoX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOildKTsKKyAgICBbX21vdXNl
R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3NlbGYgYWRkR2VzdHVy
ZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUNDQVRBTFlTVCkgICAgCkBAIC04OTcsOCArODkzLDggQEAgLSAodm9pZClj
bGVhbnVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdG91
Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpu
aWxdOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKKyAgICBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
bmlsXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAgICAK
QEAgLTEwMTQsNyArMTAxMCw3IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2du
aXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjaWYgSEFW
RShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29n
bml6ZXI6X2hvdmVyR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9sb29rdXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CkBAIC0xMDQwLDcgKzEwMzYsNyBA
QCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgYWRkR2Vz
dHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQot
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBbc2Vs
ZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbG9va3VwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpA
QCAtMTQ0OSwxNyArMTQ0NSwyMiBAQCAtICh2b2lkKV9oYW5kbGVUb3VjaEFjdGlvbnNGb3JUb3Vj
aEV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmKXRvdQogCiAtIChCT09M
KWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6
ZXIgc2hvdWxkUmVjZWl2ZVRvdWNoOihVSVRvdWNoICopdG91Y2gKIHsKLSAgICBpZiAoZ2VzdHVy
ZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgJiYg
Z2VzdHVyZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lwZUdlc3R1cmVSZWNvZ25p
emVyICYmIGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEFjdGlvblVwU3dpcGVHZXN0dXJlUmVj
b2duaXplciAmJiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hBY3Rpb25Eb3duU3dpcGVHZXN0
dXJlUmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGdlc3R1cmVSZWNv
Z25pemVyICE9IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyICYmIFtfbW91c2VHZXN0dXJlUmVjb2du
aXplciBtb3VzZVRvdWNoXSA9PSB0b3VjaCkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYg
KGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvbkxlZnRTd2lwZUdlc3R1cmVSZWNvZ25p
emVyIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvblJpZ2h0U3dpcGVHZXN0dXJl
UmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hBY3Rpb25VcFN3aXBlR2Vz
dHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uRG93blN3
aXBlR2VzdHVyZVJlY29nbml6ZXIpIHsKIAotICAgIC8vIFdlIHVwZGF0ZSB0aGUgZW5hYmxlZCBz
dGF0ZSBvZiB0aGUgdmFyaW91cyBzd2lwZSBnZXN0dXJlIHJlY29nbml6ZXJzIHN1Y2ggdGhhdCBp
ZiB3ZSBoYXZlIGEgdW5pZGlyZWN0aW9uYWwgdG91Y2gtYWN0aW9uCi0gICAgLy8gc3BlY2lmaWVk
IChvbmx5IHBhbi14IG9yIG9ubHkgcGFuLXkpIHdlIGVuYWJsZSB0aGUgdHdvIHJlY29nbml6ZXJz
IGluIHRoZSBvcHBvc2l0ZSBheGlzIHRvIHByZXZlbnQgc2Nyb2xsaW5nIGZyb20gc3RhcnRpbmcK
LSAgICAvLyBpZiB0aGUgaW5pdGlhbCBnZXN0dXJlIGlzIHN1Y2ggYSBzd2lwZS4gU2luY2UgdGhl
IHJlY29nbml6ZXJzIGFyZSBzcGVjaWZpZWQgdG8gdXNlIGEgc2luZ2xlIGZpbmdlciBmb3IgcmVj
b2duaXRpb24sIHdlIGRvbid0Ci0gICAgLy8gbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIGEgc2luZ2xlIHRvdWNoIGZvciBhIGdpdmVuIFVJ
U2Nyb2xsVmlldy4KLSAgICBhdXRvIHRvdWNoQWN0aW9ucyA9IFdlYktpdDo6dG91Y2hBY3Rpb25z
Rm9yUG9pbnQoc2VsZiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFt0b3VjaCBsb2NhdGlvbklu
VmlldzpzZWxmXSkpOwotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hBY3Rpb25M
ZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hB
Y3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAgIHJldHVybiB0b3VjaEFj
dGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblk7Ci0gICAgcmV0dXJuIHRvdWNoQWN0
aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWDsKKyAgICAgICAgLy8gV2UgdXBkYXRl
IHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSB2YXJpb3VzIHN3aXBlIGdlc3R1cmUgcmVjb2duaXpl
cnMgc3VjaCB0aGF0IGlmIHdlIGhhdmUgYSB1bmlkaXJlY3Rpb25hbCB0b3VjaC1hY3Rpb24KKyAg
ICAgICAgLy8gc3BlY2lmaWVkIChvbmx5IHBhbi14IG9yIG9ubHkgcGFuLXkpIHdlIGVuYWJsZSB0
aGUgdHdvIHJlY29nbml6ZXJzIGluIHRoZSBvcHBvc2l0ZSBheGlzIHRvIHByZXZlbnQgc2Nyb2xs
aW5nIGZyb20gc3RhcnRpbmcKKyAgICAgICAgLy8gaWYgdGhlIGluaXRpYWwgZ2VzdHVyZSBpcyBz
dWNoIGEgc3dpcGUuIFNpbmNlIHRoZSByZWNvZ25pemVycyBhcmUgc3BlY2lmaWVkIHRvIHVzZSBh
IHNpbmdsZSBmaW5nZXIgZm9yIHJlY29nbml0aW9uLCB3ZSBkb24ndAorICAgICAgICAvLyBuZWVk
IHRvIHdvcnJ5IGFib3V0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gYSBz
aW5nbGUgdG91Y2ggZm9yIGEgZ2l2ZW4gVUlTY3JvbGxWaWV3LgorICAgICAgICBhdXRvIHRvdWNo
QWN0aW9ucyA9IFdlYktpdDo6dG91Y2hBY3Rpb25zRm9yUG9pbnQoc2VsZiwgV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KFt0b3VjaCBsb2NhdGlvbkluVmlldzpzZWxmXSkpOworICAgICAgICBpZiAo
Z2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVyZVJlY29nbml6
ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lwZUdlc3R1cmVS
ZWNvZ25pemVyKQorICAgICAgICAgICAgcmV0dXJuIHRvdWNoQWN0aW9ucyA9PSBXZWJDb3JlOjpU
b3VjaEFjdGlvbjo6UGFuWTsKKyAgICAgICAgcmV0dXJuIHRvdWNoQWN0aW9ucyA9PSBXZWJDb3Jl
OjpUb3VjaEFjdGlvbjo6UGFuWDsKKyAgICB9CisKKyAgICByZXR1cm4gWUVTOwogfQogCiAjcHJh
Z21hIG1hcmsgLSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZSBpbXBsZW1l
bnRhdGlvbgpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjoo
VUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZFJlY29nbmkKICAg
ICAgICAgcmV0dXJuIFlFUzsKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQot
ICAgIGlmIChbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbVUlIb3Zlckdlc3R1cmVS
ZWNvZ25pemVyIGNsYXNzXV0gfHwgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFz
czpbVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0pCisgICAgaWYgKFtnZXN0dXJlUmVj
b2duaXplciBpc0tpbmRPZkNsYXNzOltXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSB8
fCBbb3RoZXJHZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltXS01vdXNlR2VzdHVyZVJl
Y29nbml6ZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgogCkBAIC02MzU1
LDggKzYzNTYsMTAgQEAgLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNvbnN0IFdlYkNvcmU6OlNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmKWRhdGEgaW5SZWN0OihXVEYKIAogI2lmIEhBVkUoSE9WRVJf
R0VTVFVSRV9SRUNPR05JWkVSKQogICAgIGlmICghcmVjdCkgewotICAgICAgICBhdXRvIGhvdmVy
TG9jYXRpb25JbldlYlZpZXcgPSBbc2VsZiBjb252ZXJ0UG9pbnQ6X2xhc3RIb3ZlckxvY2F0aW9u
IHRvVmlldzpfd2ViVmlld107Ci0gICAgICAgIHJlY3QgPSBXZWJDb3JlOjpGbG9hdFJlY3QoaG92
ZXJMb2NhdGlvbkluV2ViVmlldy54LCBob3ZlckxvY2F0aW9uSW5XZWJWaWV3LnksIDEsIDEpOwor
ICAgICAgICBpZiAoYXV0byBsYXN0TW91c2VMb2NhdGlvbiA9IFtfbW91c2VHZXN0dXJlUmVjb2du
aXplciBsYXN0TW91c2VMb2NhdGlvbl0pIHsKKyAgICAgICAgICAgIGF1dG8gaG92ZXJMb2NhdGlv
bkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1vdXNlTG9jYXRpb24gdG9WaWV3
Ol93ZWJWaWV3XTsKKyAgICAgICAgICAgIHJlY3QgPSBXZWJDb3JlOjpGbG9hdFJlY3QoaG92ZXJM
b2NhdGlvbkluV2ViVmlldy54LCBob3ZlckxvY2F0aW9uSW5XZWJWaWV3LnksIDEsIDEpOworICAg
ICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC03NzUzLDQ2ICs3NzU2LDEzIEBAIC0gKHZv
aWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKICNlbmRpZgogCiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIp
Ci1zdGF0aWMgV2ViRXZlbnRGbGFncyB3ZWJFdmVudEZsYWdzRm9yVUlLZXlNb2RpZmllckZsYWdz
KFVJS2V5TW9kaWZpZXJGbGFncyBmbGFncykKLXsKLSAgICBXZWJFdmVudEZsYWdzIGV2ZW50Rmxh
Z3MgPSAwOwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJTaGlmdCkKLSAgICAgICAgZXZl
bnRGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OwotICAgIGlmIChmbGFncyAm
IFVJS2V5TW9kaWZpZXJDb250cm9sKQotICAgICAgICBldmVudEZsYWdzIHw9IFdlYkV2ZW50Rmxh
Z01hc2tMZWZ0Q29udHJvbEtleTsKLSAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWx0ZXJu
YXRlKQotICAgICAgICBldmVudEZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0T3B0aW9uS2V5
OwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb21tYW5kKQotICAgICAgICBldmVudEZs
YWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0Q29tbWFuZEtleTsKLSAgICBpZiAoZmxhZ3MgJiBV
SUtleU1vZGlmaWVyQWxwaGFTaGlmdCkKLSAgICAgICAgZXZlbnRGbGFncyB8PSBXZWJFdmVudEZs
YWdNYXNrTGVmdENhcHNMb2NrS2V5OwotICAgIHJldHVybiBldmVudEZsYWdzOwotfQotCi0tICh2
b2lkKV9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooVUlHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pemVyCistICh2b2lkKV9tb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdl
ZDooV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBp
ZiAoIV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBNYWtlIGEgdGltZXN0YW1wIHRoYXQgbWF0Y2hlcyBVSVRvdWNoIGFuZCBVSUV2ZW50LgotICAg
IENGVGltZUludGVydmFsIHRpbWVzdGFtcCA9IEdTQ3VycmVudEV2ZW50VGltZXN0YW1wKCkgLyAx
MDAwMDAwMDAwLjA7Ci0KLSAgICBDR1BvaW50IHBvaW50OwotICAgIHN3aXRjaCAoZ2VzdHVyZVJl
Y29nbml6ZXIuc3RhdGUpIHsKLSAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2Fu
OgotICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDoKLSAgICAgICAgcG9p
bnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2VsZl07Ci0gICAgICAgIF9s
YXN0SG92ZXJMb2NhdGlvbiA9IHBvaW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFVJR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOgotICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlQ2FuY2VsbGVkOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHBvaW50ID0gQ0dQb2ludE1ha2Uo
LTEsIC0xKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgYXV0byBldmVudCA9IGFkb3B0
TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50TW91
c2VNb3ZlZCB0aW1lU3RhbXA6dGltZXN0YW1wIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyczp3ZWJF
dmVudEZsYWdzRm9yVUlLZXlNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJG
bGFncyhnZXN0dXJlUmVjb2duaXplcikpXSk7Ci0gICAgX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQo
V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LmdldCgpKSk7CisgICAgaWYgKGF1dG8g
ZXZlbnQgPSBnZXN0dXJlUmVjb2duaXplci5sYXN0TW91c2VFdmVudCkKKyAgICAgICAgX3BhZ2Ut
PmhhbmRsZU1vdXNlRXZlbnQoKmV2ZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjBhYTRjNWIyMjU0NDUwODY4YTY2NGU1ZmY3ZTdkYjhkODdjYjU4YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisq
IGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKworI2lt
cG9ydCAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorCitAaW50ZXJmYWNlIFdLTW91c2VHZXN0dXJl
UmVjb2duaXplciA6IFVJR2VzdHVyZVJlY29nbml6ZXIKKworLSAoV1RGOjpPcHRpb25hbDxDR1Bv
aW50PilsYXN0TW91c2VMb2NhdGlvbjsKKy0gKFdURjo6T3B0aW9uYWw8V2ViS2l0OjpOYXRpdmVX
ZWJNb3VzZUV2ZW50PilsYXN0TW91c2VFdmVudDsKKworLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2g7
CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yzg0OWEwZGY5YzUz
MGFkMDhmMmU5ZDkyMmI3YjViODMyZDVkYjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQpAQCAtMCwwICsx
LDI1MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIgor
CisjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisKKyNpbXBvcnQgIk5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0IDx3dGYvT3B0aW9u
YWwuaD4KKworc3RhdGljIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gd2Vi
RXZlbnRNb2RpZmllcnNGb3JVSUtleU1vZGlmaWVyRmxhZ3MoVUlLZXlNb2RpZmllckZsYWdzIGZs
YWdzKQoreworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJTaGlmdCkKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOworICAgIGlmIChm
bGFncyAmIFVJS2V5TW9kaWZpZXJDb250cm9sKQorICAgICAgICBtb2RpZmllcnMuYWRkKFdlYktp
dDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpDb250cm9sS2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtl
eU1vZGlmaWVyQWx0ZXJuYXRlKQorICAgICAgICBtb2RpZmllcnMuYWRkKFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb21t
YW5kKQorICAgICAgICBtb2RpZmllcnMuYWRkKFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpN
ZXRhS2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWxwaGFTaGlmdCkKKyAgICAg
ICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkp
OworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgeworICAgIFJldGFpblB0cjxVSUhvdmVyRXZlbnQ+IF9jdXJyZW50SG92
ZXJFdmVudDsKKyAgICBSZXRhaW5QdHI8VUlUb3VjaD4gX2N1cnJlbnRUb3VjaDsKKworICAgIEJP
T0wgX3RvdWNoaW5nOworCisgICAgT3B0aW9uYWw8V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
PiBfbGFzdEV2ZW50OworICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9sYXN0TG9jYXRpb247Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFRhcmdldDooaWQpdGFyZ2V0IGFjdGlvbjooU0VMKWFj
dGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjph
Y3Rpb25dOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxm
IF9zZXRBY2NlcHRzRmFpbHVyZVJlcXVpbWVudHM6Tk9dOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpc2V0VmlldzooVUlWaWV3ICopdmlldworeworICAgIGlmICh2aWV3ID09IHNl
bGYudmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N1cGVyIHNldFZpZXc6dmlld107CisK
KyAgICBpZiAodmlldy5fd2luZG93KSB7CisgICAgICAgIFVJSG92ZXJFdmVudCAqaG92ZXJFdmVu
dCA9IFtVSUFwcCBfaG92ZXJFdmVudEZvcldpbmRvdzp2aWV3Ll93aW5kb3ddOworICAgICAgICBb
aG92ZXJFdmVudCBzZXROZWVkc0hpdFRlc3RSZXNldF07CisgICAgfQorfQorCistIChXVEY6Ok9w
dGlvbmFsPFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudD4pbGFzdE1vdXNlRXZlbnQKK3sKKyAg
ICByZXR1cm4gX2xhc3RFdmVudDsKK30KKworLSAoV1RGOjpPcHRpb25hbDxDR1BvaW50PilsYXN0
TW91c2VMb2NhdGlvbgoreworICAgIHJldHVybiBfbGFzdExvY2F0aW9uOworfQorCistIChVSVRv
dWNoICopbW91c2VUb3VjaAoreworICAgIHJldHVybiBfY3VycmVudFRvdWNoLmdldCgpOworfQor
CistIChCT09MKV93YW50c0hvdmVyRXZlbnRzCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAo
dm9pZClyZXNldAoreworICAgIFtzdXBlciByZXNldF07CisgICAgX2N1cnJlbnRIb3ZlckV2ZW50
ID0gbmlsOworICAgIF9jdXJyZW50VG91Y2ggPSBuaWw7Cit9CisKKy0gKEJPT0wpX3Nob3VsZFJl
Y2VpdmVUb3VjaDooVUlUb3VjaCAqKXRvdWNoIGZvckV2ZW50OihVSUV2ZW50ICopZXZlbnQgcmVj
b2duaXplclZpZXc6KFVJVmlldyAqKXJlY29nbml6ZXJWaWV3Cit7CisgICAgcmV0dXJuIHRvdWNo
ID09IF9jdXJyZW50VG91Y2g7Cit9CisKKy0gKEJPT0wpX3Nob3VsZFJlY2VpdmVQcmVzczooVUlQ
cmVzcyAqKXByZXNzCit7CisgICAgcmV0dXJuIE5POworfQorCistIChXZWJLaXQ6Ok5hdGl2ZVdl
Yk1vdXNlRXZlbnQpY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOihXZWJLaXQ6OldlYkV2ZW50OjpU
eXBlKXR5cGUKK3sKKyAgICBhdXRvIG1vZGlmaWVycyA9IHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlL
ZXlNb2RpZmllckZsYWdzKHNlbGYubW9kaWZpZXJGbGFncyk7CisgICAgQk9PTCBoYXNDb250cm9s
TW9kaWZpZXIgPSBtb2RpZmllcnMuY29udGFpbnMoV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI6
OkNvbnRyb2xLZXkpOworCisgICAgYXV0byBidXR0b24gPSBbJl0geworICAgICAgICBpZiAoIV90
b3VjaGluZyB8fCB0eXBlID09IFdlYktpdDo6V2ViRXZlbnQ6OlR5cGU6Ok1vdXNlVXApCisgICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAgICAgICAg
aWYgKGhhc0NvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYk1v
dXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOworICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2
ZW50OjpMZWZ0QnV0dG9uOworICAgIH0oKTsKKworICAgIGF1dG8gYnV0dG9ucyA9IFsmXSB7Cisg
ICAgICAgIGlmICghX3RvdWNoaW5nKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlm
IChoYXNDb250cm9sTW9kaWZpZXIpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgfSgpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgeyBbc2VsZiBs
b2NhdGlvbkluVmlldzpzZWxmLnZpZXddIH07CisKKyAgICAvLyBNYWtlIGEgdGltZXN0YW1wIHRo
YXQgbWF0Y2hlcyBVSVRvdWNoIGFuZCBVSUV2ZW50LgorICAgIGF1dG8gdGltZXN0YW1wID0gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKEdTQ3VycmVudEV2ZW50VGltZXN0YW1wKCkgLyAxMDAwMDAw
MDAwLjApOworCisgICAgcmV0dXJuIFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudCh0eXBlLCBi
dXR0b24sIGJ1dHRvbnMsIHBvaW50LCBwb2ludCwgMCwgMCwgMCwgW19jdXJyZW50VG91Y2ggdGFw
Q291bnRdLCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgMCk7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0Jl
Z2FuOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVu
dAoreworICAgIF90b3VjaGluZyA9IFlFUzsKKworICAgIF9sYXN0RXZlbnQgPSBbc2VsZiBjcmVh
dGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6TW91c2VEb3duXTsKKyAgICBf
bGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsKKworICAgIHNl
bGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkOworfQorCistICh2b2lk
KXRvdWNoZXNNb3ZlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2
ZW50ICopZXZlbnQKK3sKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdp
dGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisgICAgX2xhc3RMb2NhdGlvbiA9
IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmlld107CisKKyAgICBzZWxmLnN0YXRlID0gVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKK30KKworLSAodm9pZCl0b3VjaGVzRW5kZWQ6
KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7
CisgICAgX3RvdWNoaW5nID0gTk87CisKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91
c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlVXBdOworICAgIF9sYXN0TG9j
YXRpb24gPSBbc2VsZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddOworCisgICAgc2VsZi5zdGF0
ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7Cit9CisKKy0gKHZvaWQpdG91Y2hl
c0NhbmNlbGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50
ICopZXZlbnQKK3sKKyAgICBbc2VsZiB0b3VjaGVzRW5kZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZl
bnRdOworfQorCistICh2b2lkKV9ob3ZlckVudGVyZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3Vj
aGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgX2xhc3RFdmVudCA9IFtzZWxm
IGNyZWF0ZU1vdXNlRXZlbnRXaXRoVHlwZTpXZWJLaXQ6OldlYkV2ZW50OjpNb3VzZU1vdmVdOwor
CisgICAgaWYgKF9jdXJyZW50SG92ZXJFdmVudCA9PSBuaWwgJiYgdG91Y2hlcy5jb3VudCA9PSAx
ICYmIFtldmVudCBpc0tpbmRPZkNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiVUlIb3ZlckV2ZW50
IildKSB7CisgICAgICAgIF9jdXJyZW50SG92ZXJFdmVudCA9IChVSUhvdmVyRXZlbnQgKilldmVu
dDsKKyAgICAgICAgX2N1cnJlbnRUb3VjaCA9IHRvdWNoZXMuYW55T2JqZWN0OworICAgICAgICBf
bGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsKKyAgICAgICAg
c2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOworICAgIH0KKworICAg
IFtzdXBlciBfaG92ZXJFbnRlcmVkOnRvdWNoZXMgd2l0aEV2ZW50OmV2ZW50XTsKK30KKworLSAo
dm9pZClfaG92ZXJNb3ZlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihV
SUV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3RvdWNoaW5nKSB7CisgICAgICAgIF9sYXN0RXZl
bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbGFzdEV2
ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1v
dXNlTW92ZV07CisgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYu
dmlld107CisKKyAgICBpZiAoX2N1cnJlbnRIb3ZlckV2ZW50ID09IGV2ZW50ICYmIFt0b3VjaGVz
IGNvbnRhaW5zT2JqZWN0Ol9jdXJyZW50VG91Y2guZ2V0KCldKQorICAgICAgICBzZWxmLnN0YXRl
ID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKKworICAgIFtzdXBlciBfaG92ZXJN
b3ZlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX2hvdmVyRXhpdGVk
OihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAor
eworICAgIF9sYXN0RXZlbnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0
OjpXZWJFdmVudDo6TW91c2VNb3ZlXTsKKyAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRp
b25JblZpZXc6c2VsZi52aWV3XTsKKworICAgIGlmIChfY3VycmVudEhvdmVyRXZlbnQgPT0gZXZl
bnQpIHsKKyAgICAgICAgX2N1cnJlbnRIb3ZlckV2ZW50ID0gbmlsOworICAgICAgICBfY3VycmVu
dFRvdWNoID0gbmlsOworICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlRW5kZWQ7CisgICAgfQorCisgICAgW3N1cGVyIF9ob3ZlckV4aXRlZDp0b3VjaGVzIHdpdGhF
dmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX2hvdmVyQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNo
ICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIFtzZWxmIF9o
b3ZlckV4aXRlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07CisgICAgW3N1cGVyIF9ob3ZlckNh
bmNlbGxlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKENHUG9pbnQpbG9jYXRp
b25JblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIV9jdXJyZW50VG91Y2gpCisgICAg
ICAgIHJldHVybiBDR1BvaW50TWFrZSgtMSwgLTEpOworICAgIHJldHVybiBbX2N1cnJlbnRUb3Vj
aCBsb2NhdGlvbkluVmlldzp2aWV3XTsKK30KKworLSAoQk9PTCljYW5QcmV2ZW50R2VzdHVyZVJl
Y29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50ZWRHZXN0dXJlUmVjb2duaXpl
cgoreworICAgIHJldHVybiBOTzsKK30KKworLSAoQk9PTCljYW5CZVByZXZlbnRlZEJ5R2VzdHVy
ZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50aW5nR2VzdHVyZVJlY29n
bml6ZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOTk1MmMxZjRh
MDVlMmU5OWZiMGI3NWVlOWI5YzE0OTYxYTM4Y2IyLi40ZmUwZjNlN2U1ODdmMWI0ZDVjNzAwMWYx
NzE1MWEzMTk0YTc1NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTcwNSw2ICs3MDUsNyBAQAogCQkyREFDRTY0RTE4QURCRkYwMDBF
NENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogX1dL
VGh1bWJuYWlsVmlld0ludGVybmFsLmggKi87IH07CiAJCTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQkyREI3NjY3MTIxQjVFNDhBMDA0
NUREQjEgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjc2NjcwMjFCNUU0OEEwMDQ1RERCMSAvKiBBY2Nl
c3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OworCQkyREI5NDI5OTIzNEU3QTdGMDBFNzc2QUQg
LyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREI5NDI5NzIzNEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdl
c3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCTJEQzE4RkFEMjE4OTEwNDkwMDI1QTg4RCAvKiBX
S0RyYXdpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovOyB9Owog
CQkyREMxOEZCMDIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZBRjIxODkxMjY0MDAyNUE4
OEQgLyogUGVuY2lsS2l0U1BJLmggKi87IH07CiAJCTJEQzE4RkIzMjE4QTZFOUUwMDI1QTg4RCAv
KiBSZW1vdGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRDMThGQjEyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJl
ZVZpZXdzLmggKi87IH07CkBAIC0yODU2LDYgKzI4NTcsOCBAQAogCQkyREFGMDZEODE4QkQyM0JB
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1
cmVDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCNzY2NzAy
MUI1RTQ4QTAwNDVEREIxIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk3MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb3VzZUdlc3R1cmVSZWNvZ25p
emVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk4MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS01vdXNlR2VzdHVyZVJl
Y29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tE
cmF3aW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RyYXdpbmdW
aWV3Lmg7IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyREMxOEZBQzIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ1ZpZXcubW07IHBh
dGggPSBpb3MvV0tEcmF3aW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZW5jaWxLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYxMzcsNiArNjE0MCw4IEBACiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3
IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCTJE
RDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAq
LywKIAkJCQkyREQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLm1tICovLAorCQkJCTJEQjk0Mjk3MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQkyREI5NDI5ODIzNEU3QTdGMDBFNzc2QUQgLyogV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlC
MCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLAogCQkJCUExNUVFREUzMUUzMDFDRUUwMDAwNjlCMCAv
KiBXS1Bhc3N3b3JkVmlldy5tbSAqLywKIAkJCQkyRDZBQjUzRjE5MkIxQzRBMDAzQTlGRDEgLyog
V0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi8sCkBAIC0xMDI1Nyw2ICsxMDI2Miw3IEBACiAJ
CQkJNUNBQkRDODYyMkM0MEZERTAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01l
ZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREI5NDI5OTIzNEU3QTdGMDBFNzc2QUQg
LyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVG
RTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMDlBRTVFOTEyNTI1N0MyMDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5o
IGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381359</attachid>
            <date>2019-10-18 18:22:35 -0700</date>
            <delta_ts>2019-10-18 18:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203175-20191018182235.patch</filename>
            <type>text/plain</type>
            <size>38285</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRmZDE5NDI1NDUyZTI5
NTIyNDdhM2QxN2EwYTBjOTYwNDZmZmVjOS4uZjgyMmRhYjQyMjVmZjFiMGQ0YmY0MjFmZDNiYzE0
YWU2ODc0YThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkSWdub3JlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cmVz
ZXQpOgorICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBwbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IHRvdWNoIGV2ZW50cyBhbmQgcGxhdGZvcm1zIHRoYXQgZG9uJ3Q7CisgICAgICAgIHdlIHdh
bnQgdG8gYmUgYWJsZSB0byBkaXNwYXRjaCBwb2ludGVyIGV2ZW50cyB0aGF0IG9yaWdpbmF0ZSBm
cm9tIG1vdXNlIGV2ZW50cworICAgICAgICBpbiBtYWNDYXRhbHlzdCBkZXNwaXRlIHRvdWNoIGV2
ZW50cyBiZWluZyBlbmFibGVkIChieSB2aXJ0dWUgb2YgYmVpbmcgaU9TIFdlYktpdCksCisgICAg
ICAgIHNvIHVuLWlmZGVmIHRoYXQgY29kZS4KKwogMjAxOS0xMC0xNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
KGV4cGVyaW1lbnRhbCk6IEJsb2NrIGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIG9uIHdlYnNpdGVz
IHdpdGhvdXQgcHJpb3IgdXNlciBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzYjc0NzZmM2Y4YTk5
ZjdlYzlkOTk3ZTIyMTgxODdkMDY5Nzg3NDg0Li43ZGMyMjMzOTk0NDJmYmQ0ODY4NTNjNmE3NTVm
MDY3ZTQ2YWYyZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL2lv
cy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJN
b3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgQWRkIGEgTmF0aXZlV2Vi
TW91c2VFdmVudCBjb25zdHJ1Y3RvciB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgd3JhcCBhIG5hdGl2
ZSBldmVudCwKKyAgICAgICAgZm9yIGNyZWF0aW5nIHRvdGFsbHktc3ludGhldGljIGV2ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlLZXlNb2RpZmllckZsYWdz
KToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGluaXRXaXRoVGFyZ2V0OmFj
dGlvbjpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNldFZpZXc6XSk6
CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VFdmVudF0pOgor
ICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgbGFzdE1vdXNlTG9jYXRpb25dKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIG1vdXNlVG91Y2hdKToKKyAgICAg
ICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF93YW50c0hvdmVyRXZlbnRzXSk6CisgICAg
ICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciByZXNldF0pOgorICAgICAgICAoLVtXS01v
dXNlR2VzdHVyZVJlY29nbml6ZXIgX3Nob3VsZFJlY2VpdmVUb3VjaDpmb3JFdmVudDpyZWNvZ25p
emVyVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9zaG91bGRS
ZWNlaXZlUHJlc3M6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjcmVh
dGVNb3VzZUV2ZW50V2l0aFR5cGU6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2du
aXplciB0b3VjaGVzQmVnYW46d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgdG91Y2hlc01vdmVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNFbmRlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgt
W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciB0b3VjaGVzQ2FuY2VsbGVkOndpdGhFdmVudDpdKToK
KyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIF9ob3ZlckVudGVyZWQ6d2l0aEV2
ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVyTW92ZWQ6
d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVy
RXhpdGVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
IF9ob3ZlckNhbmNlbGxlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyIGNhblByZXZlbnRHZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjpd
KToKKyAgICAgICAgSW5zdGVhZCBvZiBqdXN0IHVzaW5nIFVJSG92ZXJHZXN0dXJlUmVjb2duaXpl
ciwgaW50cm9kdWNlIGEgbmV3IGdlc3R1cmUKKyAgICAgICAgcmVjb2duaXplciB0aGF0IGRvZXMg
d2hhdCBpdCBkaWQsIGJ1dCBhbHNvIHN1cHBvcnRzIGNhc2VzIHdoZXJlIHRoZSBidXR0b24KKyAg
ICAgICAgaXMgcHJlc3NlZCAoc28sIG1vdXNlZG93biBhbmQgbW91c2V1cCBpbnN0ZWFkIG9mIGp1
c3QgbW91c2Vtb3ZlKSwKKyAgICAgICAgYW5kIHN5bnRoZXNpemVzIG1vdXNlIGV2ZW50cyBmb3Ig
YWxsIHN0YXRlIHRyYW5zaXRpb25zLiBUaGVzZSBldmVudHMKKyAgICAgICAgc2hvdWxkIGxvb2sg
cm91Z2hseSBpZGVudGljYWwgdG8gd2hhdCBhIG5vbi1tYWNDYXRhbHlzdCBhcHAgd291bGQgZ2V0
CisgICAgICAgIGluIEFwcEtpdCdzIG1vdXNlVXAvbW91c2VEb3duL21vdXNlTW92ZWQgTlNSZXNw
b25kZXIgbWV0aG9kcy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZURlZmF1
bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWRkRGVm
YXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1
cmVSZWNvZ25pemVyOnNob3VsZFJlY2VpdmVUb3VjaDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVvdXNseVdpdGhH
ZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1NoYXJl
U2hlZXQ6aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKToKKyAgICAgICAgKHdlYkV2ZW50
RmxhZ3NGb3JVSUtleU1vZGlmaWVyRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSB1c2Ug
b2YgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHRvIHBsdW1iIHRoZSBzeW50aGVzaXplZCBldmVu
dHMgZGlyZWN0bHkKKyAgICAgICAgdG8gdGhlIG1hY09TLXN0eWxlICJoYW5kbGVNb3VzZUV2ZW50
IiBjb2RlcGF0aCwgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIHRoZSB0b3VjaCBl
dmVudHMgcGF0aCAoYW5kIHRoZW4gc3Vic2VxdWVudGx5IGdlbmVyYXRpbmcgc3ludGhldGljIGNs
aWNrcykuCisgICAgICAgIEFsc28sIGVuc3VyZSB0aGF0IG90aGVyIGdlc3R1cmUgcmVjb2duaXpl
cnMgaWdub3JlIHRoZSBtb3VzZSAidG91Y2giIGVudGlyZWx5CisgICAgICAgIGJ5IHJldHVybmlu
ZyBOTyBpbiBzaG91bGRSZWNlaXZlVG91Y2guCisKIDIwMTktMTAtMTYgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBzZW5kLXNpZ25h
bCBmcm9tIG1hY2gtbG9va3VwIHJ1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5NjVjNDBl
YjE1ZGNlYzNmOTY2ZGE2MWE0MmMzYjA4NTEyZjM4NzNiLi5kMWI0N2VhYWFkZTkxMTFmZTQ1ZDM3
ODFkYjliNmE3OWVmZDRkNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDMsNyArMzAz
LDcgQEAgc3RhdGljIGJvb2wgaXNGb3JjZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcm1FdmVudCkKICAgICByZXR1cm4gcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6TW91c2VGb3JjZUNoYW5nZWQgfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZURvd24gfHwgcGxhdGZvcm1FdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6TW91c2VGb3JjZVVwOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KSAmJiAhRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiBz
dGF0aWMgYm9vbCBpc0NvbXBhdGliaWxpdHlNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMv
I2NvbXBhdGliaWxpdHktbWFwcGluZy13aXRoLW1vdXNlLWV2ZW50cwpAQCAtMzEyLDQ0ICszMTIs
NTMgQEAgc3RhdGljIGJvb2wgaXNDb21wYXRpYmlsaXR5TW91c2VFdmVudChjb25zdCBNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogfQogI2VuZGlmCiAKLWJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KQor
c3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTW91c2VFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIGJvb2wmIGRpZE5vdFN3YWxsb3dFdmVudCkKIHsKLSAgICBpZiAoaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpc0ZvcmNl
RXZlbnQocGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlRm9yRXZl
bnRUeXBlKHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmVmPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRldGFpbCwgcmVs
YXRlZFRhcmdldCk7Ci0KLSAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCi0KLSAgICBib29sIGRpZE5v
dFN3YWxsb3dFdmVudCA9IHRydWU7Ci0KICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucG9pbnRlckV2ZW50
c0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkg
ewogICAgICAgICAgICAgYXV0byYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyID0gcGFnZS0+cG9p
bnRlckNhcHR1cmVDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAg
ICAgICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQg
JiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRzQ29tcGF0aWJpbGl0eU1vdXNlRXZl
bnRzRm9ySWRlbnRpZmllcihwbGF0Zm9ybUV2ZW50LnBvaW50ZXJJZCgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudC5wb2ludGVy
SWQoKSAhPSBtb3VzZVBvaW50ZXJJRCAmJiBtb3VzZUV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCAmJiBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIucHJldmVudHNDb21wYXRp
YmlsaXR5TW91c2VFdmVudHNGb3JJZGVudGlmaWVyKHBsYXRmb3JtRXZlbnQucG9pbnRlcklkKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShwbGF0Zm9ybUV2ZW50KTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKGF1dG8gcG9p
bnRlckV2ZW50ID0gcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnBvaW50ZXJFdmVudEZvck1vdXNl
RXZlbnQobW91c2VFdmVudCkpIHsKLSAgICAgICAgICAgICAgICBwb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuZGlzcGF0Y2hFdmVudCgqcG9pbnRlckV2ZW50LCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuZGlzcGF0Y2hFdmVudCgqcG9pbnRlckV2ZW50LCAm
ZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0aWJpbGl0eU1vdXNlRXZlbnQo
bW91c2VFdmVudCkgJiYgcG9pbnRlckNhcHR1cmVDb250cm9sbGVyLnByZXZlbnRzQ29tcGF0aWJp
bGl0eU1vdXNlRXZlbnRzRm9ySWRlbnRpZmllcihwb2ludGVyRXZlbnQtPnBvaW50ZXJJZCgpKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAocG9pbnRlckV2ZW50LT5kZWZhdWx0UHJl
dmVudGVkKCkgfHwgcG9pbnRlckV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGRpZE5vdFN3YWxsb3dFdmVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICBpZiAocG9pbnRlckV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnBvaW50ZXJkb3duRXZl
bnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50IGRl
dGFpbCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkKK3sKKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc0ZvcmNlRXZlbnQo
cGxhdGZvcm1FdmVudCkgJiYgIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBl
KHBsYXRmb3JtRXZlbnQudHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVm
PE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBk
b2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHBsYXRmb3JtRXZlbnQsIGRldGFpbCwgcmVsYXRlZFRh
cmdldCk7CisKKyAgICBpZiAobW91c2VFdmVudC0+dHlwZSgpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7IC8vIFNob3VsZG4ndCBoYXBwZW4uCisKKyAgICBib29sIGRpZE5vdFN3YWxs
b3dFdmVudCA9IHRydWU7CisKKyAgICBpZiAoc2hvdWxkSWdub3JlTW91c2VFdmVudCgqdGhpcywg
bW91c2VFdmVudC5nZXQoKSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQVNTRVJUKCFtb3VzZUV2ZW50LT50YXJnZXQoKSB8
fCBtb3VzZUV2ZW50LT50YXJnZXQoKSAhPSByZWxhdGVkVGFyZ2V0KTsKICAgICBkaXNwYXRjaEV2
ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChtb3VzZUV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkg
fHwgbW91c2VFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAppbmRleCBmZGE4MGQ1ZTlhZTkzMjU3ZjY3
MjI5YTYxYzllNzJjM2MzODY1N2EyLi4xNmY0MzJhZjg4OGRkYjZjODcyZjY1OTM0MzQyNTYwN2Fl
YjZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC0xNTksMTEgKzE1OSwxMCBAQCB2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJv
bGxlcjo6ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyOjpyZXNldCgpCiB7CiAgICAgbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0
dXJpbmdEYXRhLmNsZWFyKCk7Ci0jaWYgIUVOQUJMRShUT1VDSF9FVkVOVFMpCisKICAgICBDYXB0
dXJpbmdEYXRhIGNhcHR1cmluZ0RhdGE7CiAgICAgY2FwdHVyaW5nRGF0YS5wb2ludGVyVHlwZSA9
IFBvaW50ZXJFdmVudDo6bW91c2VQb2ludGVyVHlwZSgpOwogICAgIG1fYWN0aXZlUG9pbnRlcklk
c1RvQ2FwdHVyaW5nRGF0YS5hZGQobW91c2VQb2ludGVySUQsIGNhcHR1cmluZ0RhdGEpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjp0b3VjaFdpdGhJZGVudGlm
aWVyV2FzUmVtb3ZlZChQb2ludGVySUQgcG9pbnRlcklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAzZWFmNDYwODFkNmMyZjYzYmY0ZDQ1N2FjODNlMGMy
Njg4NTY1YjI3Li5mMDg2ZDRkYTNiOGFhNDc4NzY3OGE0OGM3NzcyNjQ3YzVjMWNmZTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTExNiw2ICsxMTE2
LDIwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIFVJV0tEb2N1bWVudFJlcXVlc3RG
bGFncykgewogLSAodm9pZClfdXBkYXRlU2FmZUFyZWFJbnNldHM7CiBAZW5kCiAKK0BpbnRlcmZh
Y2UgVUlHZXN0dXJlUmVjb2duaXplciAoSVBJKQorLSAoQk9PTClfcGF1c2VkOworQHByb3BlcnR5
IChub25hdG9taWMpIFVJVmlldyAqdmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24s
IGdldHRlcj1fYWNjZXB0c0ZhaWx1cmVSZXF1aXJlbWVudHMsIHNldHRlcj1fc2V0QWNjZXB0c0Zh
aWx1cmVSZXF1aW1lbnRzOikgQk9PTCBfYWNjZXB0c0ZhaWx1cmVSZXF1aXJlbWVudHM7CitAZW5k
CisKK0BpbnRlcmZhY2UgVUlIb3ZlckV2ZW50IDogVUlFdmVudAorLSAodm9pZClzZXROZWVkc0hp
dFRlc3RSZXNldDsKK0BlbmQKKworQGludGVyZmFjZSBVSUFwcGxpY2F0aW9uIChJUEkpCistIChV
SUhvdmVyRXZlbnQgKilfaG92ZXJFdmVudEZvcldpbmRvdzooVUlXaW5kb3cgKil3aW5kb3c7CitA
ZW5kCisKIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChJUEkpCiAtIChDR0Zsb2F0KV9ydWJiZXJC
YW5kT2Zmc2V0Rm9yT2Zmc2V0OihDR0Zsb2F0KW5ld09mZnNldCBtYXhPZmZzZXQ6KENHRmxvYXQp
bWF4T2Zmc2V0IG1pbk9mZnNldDooQ0dGbG9hdCltaW5PZmZzZXQgcmFuZ2U6KENHRmxvYXQpcmFu
Z2Ugb3V0c2lkZTooQk9PTCAqKW91dHNpZGU7CiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNL
ZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
bGFzdEFkanVzdG1lbnQ6KENHRmxvYXQqKWxhc3RBZGp1c3RtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGJiZGRkOTQ4MjZlNDg2MjljZmJlYzhm
ODNjNGU2ODY5ODcyMzFkYmYuLmJhN2Y5M2M5MjRmZWZkYWU3ZTQyYzcxZmVhOTNiNDljZmU2ZGE0
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTYz
LDYgKzYzLDcgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBp
bnQpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
KDo6V2ViRXZlbnQgKik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChUeXBlLCBCdXR0b24sIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZs
b2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgT3B0aW9uU2V0PE1vZGlm
aWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wLCBkb3VibGUgZm9yY2UpOwogI2VsaWYgVVNFKExJQldQ
RSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfcG9pbnRlcl9ldmVu
dCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KaW5k
ZXggYjliY2YxYmM0YzU3NDFiZTg4YTU5OTQ3MDI4NDkzMGFiM2EzNWU5MC4uN2RiMDBmMTVhYmIy
M2JkNjVjNzIyMTNmODBjMWY3OGRjMTA2NDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KQEAgLTM4LDYgKzM4LDExIEBAIE5h
dGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAqZXZlbnQp
CiB7CiB9CiAKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0
eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNr
Q291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAs
IGRvdWJsZSBmb3JjZSkKKyAgICA6IFdlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBidXR0b25z
LCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNsaWNr
Q291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBmb3JjZSkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDMyN2VhNGUyODNiZTQwNjk3MmJhMzEzY2VhZGMzYzAxMTUxZmFiY2UuLjI1
N2U4Mjg0ZTJjMmFhNmQ3NTczZjY0ZDI2YTg1MTZkOTEzN2IwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQyNiw2ICs0MjYsNyBAQCBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5tbQorVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLm1tCiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCmluZGV4IDEwZmU2MTk1NTE3YzhjZGY4NzlmZDhlNzRkMjljNTM1ZGNiNmU0MWMuLjFhNzg0
YTZlYjc3ZTk3ZTg3YjgxODRlMTc1NTYwMzU3OTMxODU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTk5
LDcgKzk5LDYgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIAogQGNsYXNzIF9V
SUxvb2t1cEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIF9VSUhpZ2hsaWdodFZpZXc7Ci1AY2xh
c3MgVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIFVJVGFyZ2V0ZWRQcmV2aWV3Owog
QGNsYXNzIFdlYkV2ZW50OwogQGNsYXNzIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ7CkBAIC0xMDks
NiArMTA4LDcgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIEBjbGFzcyBXS0Zv
cm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOwogQGNsYXNzIFdLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CitAY2xhc3MgV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyOwogQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
OwogCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciko
VUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwpAQCAtMjM2LDggKzIzNiw3
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZW5kaWYKIAogI2lmIEhBVkUoSE9W
RVJfR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIFJldGFpblB0cjxVSUhvdmVyR2VzdHVyZVJlY29n
bml6ZXI+IF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyOwotICAgIENHUG9pbnQgX2xhc3RIb3Zlckxv
Y2F0aW9uOworICAgIFJldGFpblB0cjxXS01vdXNlR2VzdHVyZVJlY29nbml6ZXI+IF9tb3VzZUdl
c3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8VUlXS1RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCBiMmQ1NTAzYzE4YWJjMDY4N2ZlZGU3OTI4NzM1MjQxMTA2YmY0NWRjLi43MGJlOWMwZDQ3ZTMw
Y2U1MmE3MTUyMzRjMjA3NTM1MDQzMzJlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU1LDYgKzU1
LDcgQEAKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCIK
ICNpbXBvcnQgIldLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLSW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgiCisjaW1wb3J0ICJXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldL
UHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9u
SXRlbUludGVybmFsLmgiCkBAIC0xMzMsMTEgKzEzNCw2IEBACiAjaW1wb3J0IDxVSUtpdC9fVUlM
b29rdXBHZXN0dXJlUmVjb2duaXplci5oPgogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RV
UkVfUkVDT0dOSVpFUikKLSNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKLSNpbXBvcnQg
PFVJS2l0L1VJSG92ZXJHZXN0dXJlUmVjb2duaXplci5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKICNpbXBvcnQgIldLRm9ybUNvbG9yQ29udHJvbC5oIgogI2VuZGlm
CkBAIC03NDUsOSArNzQxLDkgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBfaG92ZXJHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaG92ZXJHZXN0dXJlUmVjb2duaXpl
ckNoYW5nZWQ6KV0pOwotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisgICAgX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpA
c2VsZWN0b3IoX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOildKTsKKyAgICBbX21vdXNl
R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3NlbGYgYWRkR2VzdHVy
ZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUNDQVRBTFlTVCkgICAgCkBAIC04OTcsOCArODkzLDggQEAgLSAodm9pZClj
bGVhbnVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdG91
Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQotICAgIFtfaG92ZXJHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpu
aWxdOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKKyAgICBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
bmlsXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAgICAK
QEAgLTEwMTQsNyArMTAxMCw3IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2du
aXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjaWYgSEFW
RShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29n
bml6ZXI6X2hvdmVyR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9sb29rdXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CkBAIC0xMDQwLDcgKzEwMzYsNyBA
QCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgYWRkR2Vz
dHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQot
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBbc2Vs
ZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbG9va3VwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpA
QCAtMTQ0OSwxNyArMTQ0NSwyNCBAQCAtICh2b2lkKV9oYW5kbGVUb3VjaEFjdGlvbnNGb3JUb3Vj
aEV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmKXRvdQogCiAtIChCT09M
KWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6
ZXIgc2hvdWxkUmVjZWl2ZVRvdWNoOihVSVRvdWNoICopdG91Y2gKIHsKLSAgICBpZiAoZ2VzdHVy
ZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgJiYg
Z2VzdHVyZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lwZUdlc3R1cmVSZWNvZ25p
emVyICYmIGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEFjdGlvblVwU3dpcGVHZXN0dXJlUmVj
b2duaXplciAmJiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hBY3Rpb25Eb3duU3dpcGVHZXN0
dXJlUmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgSEFWRShIT1ZFUl9HRVNU
VVJFX1JFQ09HTklaRVIpCisgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyICE9IF9tb3VzZUdlc3R1
cmVSZWNvZ25pemVyICYmIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBtb3VzZVRvdWNoXSA9PSB0
b3VjaCkKKyAgICAgICAgcmV0dXJuIE5POworI2VuZGlmCiAKLSAgICAvLyBXZSB1cGRhdGUgdGhl
IGVuYWJsZWQgc3RhdGUgb2YgdGhlIHZhcmlvdXMgc3dpcGUgZ2VzdHVyZSByZWNvZ25pemVycyBz
dWNoIHRoYXQgaWYgd2UgaGF2ZSBhIHVuaWRpcmVjdGlvbmFsIHRvdWNoLWFjdGlvbgotICAgIC8v
IHNwZWNpZmllZCAob25seSBwYW4teCBvciBvbmx5IHBhbi15KSB3ZSBlbmFibGUgdGhlIHR3byBy
ZWNvZ25pemVycyBpbiB0aGUgb3Bwb3NpdGUgYXhpcyB0byBwcmV2ZW50IHNjcm9sbGluZyBmcm9t
IHN0YXJ0aW5nCi0gICAgLy8gaWYgdGhlIGluaXRpYWwgZ2VzdHVyZSBpcyBzdWNoIGEgc3dpcGUu
IFNpbmNlIHRoZSByZWNvZ25pemVycyBhcmUgc3BlY2lmaWVkIHRvIHVzZSBhIHNpbmdsZSBmaW5n
ZXIgZm9yIHJlY29nbml0aW9uLCB3ZSBkb24ndAotICAgIC8vIG5lZWQgdG8gd29ycnkgYWJvdXQg
dGhlIGNhc2Ugd2hlcmUgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBhIHNpbmdsZSB0b3VjaCBmb3Ig
YSBnaXZlbiBVSVNjcm9sbFZpZXcuCi0gICAgYXV0byB0b3VjaEFjdGlvbnMgPSBXZWJLaXQ6OnRv
dWNoQWN0aW9uc0ZvclBvaW50KHNlbGYsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbdG91Y2gg
bG9jYXRpb25JblZpZXc6c2VsZl0pKTsKLSAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3Rv
dWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIg
PT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICByZXR1
cm4gdG91Y2hBY3Rpb25zID09IFdlYkNvcmU6OlRvdWNoQWN0aW9uOjpQYW5ZOwotICAgIHJldHVy
biB0b3VjaEFjdGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblg7CisgICAgaWYgKGdl
c3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvbkxlZnRTd2lwZUdlc3R1cmVSZWNvZ25pemVy
IHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvblJpZ2h0U3dpcGVHZXN0dXJlUmVj
b2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hBY3Rpb25VcFN3aXBlR2VzdHVy
ZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uRG93blN3aXBl
R2VzdHVyZVJlY29nbml6ZXIpIHsKKworICAgICAgICAvLyBXZSB1cGRhdGUgdGhlIGVuYWJsZWQg
c3RhdGUgb2YgdGhlIHZhcmlvdXMgc3dpcGUgZ2VzdHVyZSByZWNvZ25pemVycyBzdWNoIHRoYXQg
aWYgd2UgaGF2ZSBhIHVuaWRpcmVjdGlvbmFsIHRvdWNoLWFjdGlvbgorICAgICAgICAvLyBzcGVj
aWZpZWQgKG9ubHkgcGFuLXggb3Igb25seSBwYW4teSkgd2UgZW5hYmxlIHRoZSB0d28gcmVjb2du
aXplcnMgaW4gdGhlIG9wcG9zaXRlIGF4aXMgdG8gcHJldmVudCBzY3JvbGxpbmcgZnJvbSBzdGFy
dGluZworICAgICAgICAvLyBpZiB0aGUgaW5pdGlhbCBnZXN0dXJlIGlzIHN1Y2ggYSBzd2lwZS4g
U2luY2UgdGhlIHJlY29nbml6ZXJzIGFyZSBzcGVjaWZpZWQgdG8gdXNlIGEgc2luZ2xlIGZpbmdl
ciBmb3IgcmVjb2duaXRpb24sIHdlIGRvbid0CisgICAgICAgIC8vIG5lZWQgdG8gd29ycnkgYWJv
dXQgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBhIHNpbmdsZSB0b3VjaCBm
b3IgYSBnaXZlbiBVSVNjcm9sbFZpZXcuCisgICAgICAgIGF1dG8gdG91Y2hBY3Rpb25zID0gV2Vi
S2l0Ojp0b3VjaEFjdGlvbnNGb3JQb2ludChzZWxmLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
W3RvdWNoIGxvY2F0aW9uSW5WaWV3OnNlbGZdKSk7CisgICAgICAgIGlmIChnZXN0dXJlUmVjb2du
aXplciA9PSBfdG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJl
UmVjb2duaXplciA9PSBfdG91Y2hBY3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIpCisg
ICAgICAgICAgICByZXR1cm4gdG91Y2hBY3Rpb25zID09IFdlYkNvcmU6OlRvdWNoQWN0aW9uOjpQ
YW5ZOworICAgICAgICByZXR1cm4gdG91Y2hBY3Rpb25zID09IFdlYkNvcmU6OlRvdWNoQWN0aW9u
OjpQYW5YOworICAgIH0KKworICAgIHJldHVybiBZRVM7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdL
VG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplckRlbGVnYXRlIGltcGxlbWVudGF0aW9uCkBAIC0x
OTU5LDcgKzE5NjIsNyBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkUmVjb2duaQogICAgICAgICByZXR1cm4g
WUVTOwogCiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgaWYgKFtnZXN0
dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIgY2xh
c3NdXSB8fCBbb3RoZXJHZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltVSUhvdmVyR2Vz
dHVyZVJlY29nbml6ZXIgY2xhc3NdXSkKKyAgICBpZiAoW2dlc3R1cmVSZWNvZ25pemVyIGlzS2lu
ZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjbGFzc11dIHx8IFtvdGhlckdlc3R1
cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjbGFz
c11dKQogICAgICAgICByZXR1cm4gWUVTOwogI2VuZGlmCiAKQEAgLTYzNTUsOCArNjM1OCwxMCBA
QCAtICh2b2lkKV9zaG93U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYpZGF0YSBpblJlY3Q6KFdURgogCiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09H
TklaRVIpCiAgICAgaWYgKCFyZWN0KSB7Ci0gICAgICAgIGF1dG8gaG92ZXJMb2NhdGlvbkluV2Vi
VmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDpfbGFzdEhvdmVyTG9jYXRpb24gdG9WaWV3Ol93ZWJW
aWV3XTsKLSAgICAgICAgcmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChob3ZlckxvY2F0aW9uSW5X
ZWJWaWV3LngsIGhvdmVyTG9jYXRpb25JbldlYlZpZXcueSwgMSwgMSk7CisgICAgICAgIGlmIChh
dXRvIGxhc3RNb3VzZUxvY2F0aW9uID0gW19tb3VzZUdlc3R1cmVSZWNvZ25pemVyIGxhc3RNb3Vz
ZUxvY2F0aW9uXSkgeworICAgICAgICAgICAgYXV0byBob3ZlckxvY2F0aW9uSW5XZWJWaWV3ID0g
W3NlbGYgY29udmVydFBvaW50OipsYXN0TW91c2VMb2NhdGlvbiB0b1ZpZXc6X3dlYlZpZXddOwor
ICAgICAgICAgICAgcmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChob3ZlckxvY2F0aW9uSW5XZWJW
aWV3LngsIGhvdmVyTG9jYXRpb25JbldlYlZpZXcueSwgMSwgMSk7CisgICAgICAgIH0KICAgICB9
CiAjZW5kaWYKICAgICAKQEAgLTc3NTMsNDYgKzc3NTgsMTMgQEAgLSAodm9pZClfbG9va3VwR2Vz
dHVyZVJlY29nbml6ZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgog
I2VuZGlmCiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLXN0YXRpYyBXZWJF
dmVudEZsYWdzIHdlYkV2ZW50RmxhZ3NGb3JVSUtleU1vZGlmaWVyRmxhZ3MoVUlLZXlNb2RpZmll
ckZsYWdzIGZsYWdzKQotewotICAgIFdlYkV2ZW50RmxhZ3MgZXZlbnRGbGFncyA9IDA7Ci0gICAg
aWYgKGZsYWdzICYgVUlLZXlNb2RpZmllclNoaWZ0KQotICAgICAgICBldmVudEZsYWdzIHw9IFdl
YkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7Ci0gICAgaWYgKGZsYWdzICYgVUlLZXlNb2RpZmll
ckNvbnRyb2wpCi0gICAgICAgIGV2ZW50RmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRDb250
cm9sS2V5OwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJBbHRlcm5hdGUpCi0gICAgICAg
IGV2ZW50RmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRPcHRpb25LZXk7Ci0gICAgaWYgKGZs
YWdzICYgVUlLZXlNb2RpZmllckNvbW1hbmQpCi0gICAgICAgIGV2ZW50RmxhZ3MgfD0gV2ViRXZl
bnRGbGFnTWFza0xlZnRDb21tYW5kS2V5OwotICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJB
bHBoYVNoaWZ0KQotICAgICAgICBldmVudEZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0Q2Fw
c0xvY2tLZXk7Ci0gICAgcmV0dXJuIGV2ZW50RmxhZ3M7Ci19Ci0KLS0gKHZvaWQpX2hvdmVyR2Vz
dHVyZVJlY29nbml6ZXJDaGFuZ2VkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKKy0gKHZvaWQpX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIGlmICghX3BhZ2UtPmhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIE1ha2UgYSB0aW1l
c3RhbXAgdGhhdCBtYXRjaGVzIFVJVG91Y2ggYW5kIFVJRXZlbnQuCi0gICAgQ0ZUaW1lSW50ZXJ2
YWwgdGltZXN0YW1wID0gR1NDdXJyZW50RXZlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAwMDAuMDsK
LQotICAgIENHUG9pbnQgcG9pbnQ7Ci0gICAgc3dpdGNoIChnZXN0dXJlUmVjb2duaXplci5zdGF0
ZSkgewotICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW46Ci0gICAgY2FzZSBV
SUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkOgotICAgICAgICBwb2ludCA9IFtnZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpzZWxmXTsKLSAgICAgICAgX2xhc3RIb3ZlckxvY2F0
aW9uID0gcG9pbnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlRW5kZWQ6Ci0gICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQ6
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcG9pbnQgPSBDR1BvaW50TWFrZSgtMSwgLTEpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbWzo6V2ViRXZl
bnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5cGU6V2ViRXZlbnRNb3VzZU1vdmVkIHRpbWVT
dGFtcDp0aW1lc3RhbXAgbG9jYXRpb246cG9pbnQgbW9kaWZpZXJzOndlYkV2ZW50RmxhZ3NGb3JV
SUtleU1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXJNb2RpZmllckZsYWdzKGdlc3R1cmVS
ZWNvZ25pemVyKSldKTsKLSAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVudChXZWJLaXQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQoZXZlbnQuZ2V0KCkpKTsKKyAgICBpZiAoYXV0byBldmVudCA9IGdlc3R1
cmVSZWNvZ25pemVyLmxhc3RNb3VzZUV2ZW50KQorICAgICAgICBfcGFnZS0+aGFuZGxlTW91c2VF
dmVudCgqZXZlbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjI4Y2Yz
NWI4Y2NiMmQxZmI5MTlkMWMyYTcwODQzZjc2ODc4ODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorCisjaW1wb3J0ICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisKK0BpbnRlcmZhY2UgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIDog
VUlHZXN0dXJlUmVjb2duaXplcgorCistIChXVEY6Ok9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3Vz
ZUxvY2F0aW9uOworLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50ICopbGFzdE1vdXNlRXZl
bnQ7CisKKy0gKFVJVG91Y2ggKiltb3VzZVRvdWNoOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXpl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjhkOGI1MWEyZjg1YzEwYjM0ZTNmOTg3NTM1MjRmZGIxZWU2MTkw
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTAsMCArMSwyNTIgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCIKKworI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSKQorCisjaW1wb3J0ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW1wb3J0ICJV
SUtpdFNQSS5oIgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK3N0YXRpYyBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlLZXlNb2Rp
ZmllckZsYWdzKFVJS2V5TW9kaWZpZXJGbGFncyBmbGFncykKK3sKKyAgICBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVyczsKKyAgICBpZiAoZmxhZ3MgJiBVSUtl
eU1vZGlmaWVyU2hpZnQpCisgICAgICAgIG1vZGlmaWVycy5hZGQoV2ViS2l0OjpXZWJFdmVudDo6
TW9kaWZpZXI6OlNoaWZ0S2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQ29udHJv
bCkKKyAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6Q29u
dHJvbEtleSk7CisgICAgaWYgKGZsYWdzICYgVUlLZXlNb2RpZmllckFsdGVybmF0ZSkKKyAgICAg
ICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKKyAg
ICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQ29tbWFuZCkKKyAgICAgICAgbW9kaWZpZXJzLmFk
ZChXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CisgICAgaWYgKGZsYWdzICYg
VUlLZXlNb2RpZmllckFscGhhU2hpZnQpCisgICAgICAgIG1vZGlmaWVycy5hZGQoV2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKKyAgICByZXR1cm4gbW9kaWZpZXJzOwor
fQorCitAaW1wbGVtZW50YXRpb24gV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHsKKyAgICBSZXRh
aW5QdHI8VUlIb3ZlckV2ZW50PiBfY3VycmVudEhvdmVyRXZlbnQ7CisgICAgUmV0YWluUHRyPFVJ
VG91Y2g+IF9jdXJyZW50VG91Y2g7CisKKyAgICBCT09MIF90b3VjaGluZzsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ+IF9sYXN0RXZlbnQ7CisgICAg
T3B0aW9uYWw8Q0dQb2ludD4gX2xhc3RMb2NhdGlvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoVGFyZ2V0OihpZCl0YXJnZXQgYWN0aW9uOihTRUwpYWN0aW9uCit7CisgICAgc2VsZiA9
IFtzdXBlciBpbml0V2l0aFRhcmdldDp0YXJnZXQgYWN0aW9uOmFjdGlvbl07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgX3NldEFjY2VwdHNGYWlsdXJl
UmVxdWltZW50czpOT107CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRWaWV3
OihVSVZpZXcgKil2aWV3Cit7CisgICAgaWYgKHZpZXcgPT0gc2VsZi52aWV3KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbc3VwZXIgc2V0Vmlldzp2aWV3XTsKKworICAgIGlmICh2aWV3Ll93aW5k
b3cpIHsKKyAgICAgICAgVUlIb3ZlckV2ZW50ICpob3ZlckV2ZW50ID0gW1VJQXBwIF9ob3ZlckV2
ZW50Rm9yV2luZG93OnZpZXcuX3dpbmRvd107CisgICAgICAgIFtob3ZlckV2ZW50IHNldE5lZWRz
SGl0VGVzdFJlc2V0XTsKKyAgICB9Cit9CisKKy0gKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVu
dCAqKWxhc3RNb3VzZUV2ZW50Cit7CisgICAgcmV0dXJuIF9sYXN0RXZlbnQuZ2V0KCk7Cit9CisK
Ky0gKFdURjo6T3B0aW9uYWw8Q0dQb2ludD4pbGFzdE1vdXNlTG9jYXRpb24KK3sKKyAgICByZXR1
cm4gX2xhc3RMb2NhdGlvbjsKK30KKworLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2gKK3sKKyAgICBy
ZXR1cm4gX2N1cnJlbnRUb3VjaC5nZXQoKTsKK30KKworLSAoQk9PTClfd2FudHNIb3ZlckV2ZW50
cworeworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpcmVzZXQKK3sKKyAgICBbc3VwZXIg
cmVzZXRdOworICAgIF9jdXJyZW50SG92ZXJFdmVudCA9IG5pbDsKKyAgICBfY3VycmVudFRvdWNo
ID0gbmlsOworfQorCistIChCT09MKV9zaG91bGRSZWNlaXZlVG91Y2g6KFVJVG91Y2ggKil0b3Vj
aCBmb3JFdmVudDooVUlFdmVudCAqKWV2ZW50IHJlY29nbml6ZXJWaWV3OihVSVZpZXcgKilyZWNv
Z25pemVyVmlldworeworICAgIHJldHVybiB0b3VjaCA9PSBfY3VycmVudFRvdWNoOworfQorCist
IChCT09MKV9zaG91bGRSZWNlaXZlUHJlc3M6KFVJUHJlc3MgKilwcmVzcworeworICAgIHJldHVy
biBOTzsKK30KKworLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVu
dD4pY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOihXZWJLaXQ6OldlYkV2ZW50OjpUeXBlKXR5cGUK
K3sKKyAgICBhdXRvIG1vZGlmaWVycyA9IHdlYkV2ZW50TW9kaWZpZXJzRm9yVUlLZXlNb2RpZmll
ckZsYWdzKHNlbGYubW9kaWZpZXJGbGFncyk7CisgICAgQk9PTCBoYXNDb250cm9sTW9kaWZpZXIg
PSBtb2RpZmllcnMuY29udGFpbnMoV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI6OkNvbnRyb2xL
ZXkpOworCisgICAgYXV0byBidXR0b24gPSBbJl0geworICAgICAgICBpZiAoIV90b3VjaGluZyB8
fCB0eXBlID09IFdlYktpdDo6V2ViRXZlbnQ6OlR5cGU6Ok1vdXNlVXApCisgICAgICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAgICAgICAgaWYgKGhhc0Nv
bnRyb2xNb2RpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6
OlJpZ2h0QnV0dG9uOworICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpMZWZ0
QnV0dG9uOworICAgIH0oKTsKKworICAgIGF1dG8gYnV0dG9ucyA9IFsmXSB7CisgICAgICAgIGlm
ICghX3RvdWNoaW5nKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChoYXNDb250
cm9sTW9kaWZpZXIpCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgfSgpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgeyBbc2VsZiBsb2NhdGlvbklu
VmlldzpzZWxmLnZpZXddIH07CisKKyAgICBhdXRvIHRpbWVzdGFtcCA9IFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhTZWNvbmRzOjpmcm9tTmFub3NlY29uZHMoR1NDdXJyZW50RXZlbnRUaW1lc3Rh
bXAoKSkuc2Vjb25kcygpKTsKKworICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8V2ViS2l0OjpO
YXRpdmVXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGJ1dHRvbnMsIHBvaW50LCBwb2ludCwg
MCwgMCwgMCwgW19jdXJyZW50VG91Y2ggdGFwQ291bnRdLCBtb2RpZmllcnMsIHRpbWVzdGFtcCwg
MCk7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0JlZ2FuOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hl
cyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIF90b3VjaGluZyA9IFlFUzsKKwor
ICAgIF9sYXN0RXZlbnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0OjpX
ZWJFdmVudDo6TW91c2VEb3duXTsKKyAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25J
blZpZXc6c2VsZi52aWV3XTsKKworICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVy
U3RhdGVDaGFuZ2VkOworfQorCistICh2b2lkKXRvdWNoZXNNb3ZlZDooTlNTZXQ8VUlUb3VjaCAq
PiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBfbGFzdEV2ZW50
ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNl
TW92ZV07CisgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmll
d107CisKKyAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsK
K30KKworLSAodm9pZCl0b3VjaGVzRW5kZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdp
dGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgX3RvdWNoaW5nID0gTk87CisKKyAgICBf
bGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZl
bnQ6Ok1vdXNlVXBdOworICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBsb2NhdGlvbkluVmlldzpz
ZWxmLnZpZXddOworCisgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNo
YW5nZWQ7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0NhbmNlbGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAq
KXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBbc2VsZiB0b3VjaGVz
RW5kZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKV9ob3ZlckVudGVy
ZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50
Cit7CisgICAgX2xhc3RFdmVudCA9IFtzZWxmIGNyZWF0ZU1vdXNlRXZlbnRXaXRoVHlwZTpXZWJL
aXQ6OldlYkV2ZW50OjpNb3VzZU1vdmVdOworCisgICAgaWYgKF9jdXJyZW50SG92ZXJFdmVudCA9
PSBuaWwgJiYgdG91Y2hlcy5jb3VudCA9PSAxICYmIFtldmVudCBpc0tpbmRPZkNsYXNzOk5TQ2xh
c3NGcm9tU3RyaW5nKEAiVUlIb3ZlckV2ZW50IildKSB7CisgICAgICAgIF9jdXJyZW50SG92ZXJF
dmVudCA9IChVSUhvdmVyRXZlbnQgKilldmVudDsKKyAgICAgICAgX2N1cnJlbnRUb3VjaCA9IHRv
dWNoZXMuYW55T2JqZWN0OworICAgICAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25J
blZpZXc6c2VsZi52aWV3XTsKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUJlZ2FuOworICAgIH0KKworICAgIFtzdXBlciBfaG92ZXJFbnRlcmVkOnRvdWNoZXMg
d2l0aEV2ZW50OmV2ZW50XTsKK30KKworLSAodm9pZClfaG92ZXJNb3ZlZDooTlNTZXQ8VUlUb3Vj
aCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3Rv
dWNoaW5nKSB7CisgICAgICAgIF9sYXN0RXZlbnQgPSBudWxscHRyOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgX2xhc3RFdmVudCA9IFtzZWxmIGNyZWF0ZU1vdXNlRXZlbnRXaXRoVHlw
ZTpXZWJLaXQ6OldlYkV2ZW50OjpNb3VzZU1vdmVdOworICAgIF9sYXN0TG9jYXRpb24gPSBbc2Vs
ZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddOworCisgICAgaWYgKF9jdXJyZW50SG92ZXJFdmVu
dCA9PSBldmVudCAmJiBbdG91Y2hlcyBjb250YWluc09iamVjdDpfY3VycmVudFRvdWNoLmdldCgp
XSkKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7
CisKKyAgICBbc3VwZXIgX2hvdmVyTW92ZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRdOworfQor
CistICh2b2lkKV9ob3ZlckV4aXRlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2
ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91
c2VFdmVudFdpdGhUeXBlOldlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisgICAgX2xhc3RM
b2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmlld107CisKKyAgICBpZiAoX2N1
cnJlbnRIb3ZlckV2ZW50ID09IGV2ZW50KSB7CisgICAgICAgIF9jdXJyZW50SG92ZXJFdmVudCA9
IG5pbDsKKyAgICAgICAgX2N1cnJlbnRUb3VjaCA9IG5pbDsKKyAgICAgICAgc2VsZi5zdGF0ZSA9
IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOworICAgIH0KKworICAgIFtzdXBlciBfaG92
ZXJFeGl0ZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKV9ob3ZlckNh
bmNlbGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICop
ZXZlbnQKK3sKKyAgICBbc2VsZiBfaG92ZXJFeGl0ZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRd
OworICAgIFtzdXBlciBfaG92ZXJDYW5jZWxsZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRdOwor
fQorCistIChDR1BvaW50KWxvY2F0aW9uSW5WaWV3OihVSVZpZXcgKil2aWV3Cit7CisgICAgaWYg
KCFfY3VycmVudFRvdWNoKQorICAgICAgICByZXR1cm4gQ0dQb2ludE1ha2UoLTEsIC0xKTsKKyAg
ICByZXR1cm4gW19jdXJyZW50VG91Y2ggbG9jYXRpb25JblZpZXc6dmlld107Cit9CisKKy0gKEJP
T0wpY2FuUHJldmVudEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJl
dmVudGVkR2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKEJPT0wp
Y2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICop
cHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyCit7CisgICAgcmV0dXJuIE5POworfQorCitAZW5k
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjk5NTJjMWY0YTA1ZTJlOTlmYjBiNzVlZTliOWMxNDk2MWEzOGNiMi4uNGZl
MGYzZTdlNTg3ZjFiNGQ1YzcwMDFmMTcxNTFhMzE5NGE3NTU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDUsNiArNzA1LDcgQEAK
IAkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQ0U2NEQx
OEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9OwogCQky
REFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQx
OEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsK
IAkJMkRCNzY2NzEyMUI1RTQ4QTAwNDVEREIxIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREI3NjY3MDIx
QjVFNDhBMDA0NUREQjEgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsKKwkJMkRC
OTQyOTkyMzRFN0E3RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRCOTQyOTcyMzRFN0E3
RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5oICovOyB9OwogCQkyREMxOEZB
RDIxODkxMDQ5MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMThGQUIyMTg5MTA0ODAwMjVBODhEIC8qIFdL
RHJhd2luZ1ZpZXcuaCAqLzsgfTsKIAkJMkRDMThGQjAyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNp
bEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQSS5oICovOyB9OwogCQkyREMx
OEZCMzIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzE4RkIxMjE4QTZFOUUwMDI1
QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oICovOyB9OwpAQCAtMjg1Niw2ICsyODU3LDgg
QEAKIAkJMkRBRjA2RDgxOEJEMjNCQTAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbjsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGNEZGQTFCNjM2MTgxMDA2MDEz
RDYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQjc2NjcwMjFCNUU0OEEwMDQ1RERCMSAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
U3VwcG9ydFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREI5NDI5NzIzNEU3
QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLTW91c2VHZXN0dXJlUmVj
b2duaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREI5NDI5ODIzNEU3QTdG
MDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLTW91c2VHZXN0
dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMThGQUIy
MTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tEcmF3aW5nVmlldy5oOyBwYXRoID0gaW9zL1dLRHJhd2luZ1ZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMThGQUMyMTg5MTA0ODAwMjVBODhEIC8q
IFdLRHJhd2luZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS0RyYXdpbmdWaWV3Lm1tOyBwYXRoID0gaW9zL1dLRHJhd2luZ1ZpZXcubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzE4RkFGMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5jaWxL
aXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVuY2lsS2l0U1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTM3LDYgKzYxNDAsOCBAQAogCQkJCUE1
NDI5M0EzMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVj
b2duaXplci5tbSAqLywKIAkJCQkyREQ1RTEyNzIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmggKi8sCiAJCQkJMkRENUUxMjYyMTBBREM3QTAwREI2MDEyIC8q
IFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSAqLywKKwkJCQkyREI5NDI5NzIzNEU3QTdG
MDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggKi8sCisJCQkJMkRCOTQyOTgy
MzRFN0E3RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQlB
MTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLywKIAkJCQlBMTVF
RURFMzFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcubW0gKi8sCiAJCQkJMkQ2QUI1
M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oICovLApAQCAt
MTAyNTcsNiArMTAyNjIsNyBAQAogCQkJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBXS01l
c3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExRTE2OTQyMTJCODdDNTAwOTg1
RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMUE4RERCMjBEREQx
QUMwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRC
OTQyOTkyMzRFN0E3RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc1RkUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwMDEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRh
YmxlRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzA5QUU1RTkxMjUyNTdDMjAwMjU4
MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381360</attachid>
            <date>2019-10-18 18:23:56 -0700</date>
            <delta_ts>2019-10-18 22:48:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203175-20191018182355.patch</filename>
            <type>text/plain</type>
            <size>38281</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRmZDE5NDI1NDUyZTI5
NTIyNDdhM2QxN2EwYTBjOTYwNDZmZmVjOS4uZDdiMjY5NzRhNWQwNzM5MmY4YjczNWE4NGZhNmJi
YmQ0Mjc1YTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTE4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIG1hY0NhdGFseXN0
OiBDdXJzb3Igc2hvdWxkIHNlbmQgbW91c2UgZXZlbnRzLCBub3QgdG91Y2ggZXZlbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MzIxMTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNob3VsZElnbm9yZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlz
cGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnJlc2V0
KToKKyAgICAgICAgU2hhcmUgbW9yZSBjb2RlIGJldHdlZW4gcGxhdGZvcm1zIHRoYXQgc3VwcG9y
dCB0b3VjaCBldmVudHMgYW5kIHBsYXRmb3JtcyB0aGF0IGRvbid0OworICAgICAgICB3ZSB3YW50
IHRvIGJlIGFibGUgdG8gZGlzcGF0Y2ggcG9pbnRlciBldmVudHMgdGhhdCBvcmlnaW5hdGUgZnJv
bSBtb3VzZSBldmVudHMKKyAgICAgICAgaW4gbWFjQ2F0YWx5c3QgZGVzcGl0ZSB0b3VjaCBldmVu
dHMgYmVpbmcgZW5hYmxlZCAoYnkgdmlydHVlIG9mIGJlaW5nIGlPUyBXZWJLaXQpLAorICAgICAg
ICBzbyB1bi1pZmRlZiB0aGF0IGNvZGUuCisKIDIwMTktMTAtMTYgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChl
eHBlcmltZW50YWwpOiBCbG9jayBhbGwgdGhpcmQtcGFydHkgY29va2llcyBvbiB3ZWJzaXRlcyB3
aXRob3V0IHByaW9yIHVzZXIgaW50ZXJhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2I3NDc2ZjNmOGE5OWY3
ZWM5ZDk5N2UyMjE4MTg3ZDA2OTc4NzQ4NC4uZDcyYTY3MWNkZjUwMWRkM2ExMGFiYzgyZDEyYzBl
NTUzM2Y0YmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxOS0xMC0xOCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNDYXRhbHlzdDog
Q3Vyc29yIHNob3VsZCBzZW5kIG1vdXNlIGV2ZW50cywgbm90IHRvdWNoIGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTc1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjMyMTEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAg
ICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL05h
dGl2ZVdlYk1vdXNlRXZlbnRJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNl
RXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQpOgorICAgICAgICBBZGQgYSBOYXRpdmVXZWJNb3Vz
ZUV2ZW50IGNvbnN0cnVjdG9yIHRoYXQgZG9lc24ndCBhY3R1YWxseSB3cmFwIGEgbmF0aXZlIGV2
ZW50LAorICAgICAgICBmb3IgY3JlYXRpbmcgdG90YWxseS1zeW50aGV0aWMgZXZlbnRzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW06IEFk
ZGVkLgorICAgICAgICAod2ViRXZlbnRNb2RpZmllcnNGb3JVSUtleU1vZGlmaWVyRmxhZ3MpOgor
ICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgaW5pdFdpdGhUYXJnZXQ6YWN0aW9u
Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0VmlldzpdKToKKyAg
ICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGxhc3RNb3VzZUV2ZW50XSk6CisgICAg
ICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VMb2NhdGlvbl0pOgorICAg
ICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgbW91c2VUb3VjaF0pOgorICAgICAgICAo
LVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX3dhbnRzSG92ZXJFdmVudHNdKToKKyAgICAgICAg
KC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHJlc2V0XSk6CisgICAgICAgICgtW1dLTW91c2VH
ZXN0dXJlUmVjb2duaXplciBfc2hvdWxkUmVjZWl2ZVRvdWNoOmZvckV2ZW50OnJlY29nbml6ZXJW
aWV3Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX3Nob3VsZFJlY2Vp
dmVQcmVzczpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGNyZWF0ZU1v
dXNlRXZlbnRXaXRoVHlwZTpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
IHRvdWNoZXNCZWdhbjp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVj
b2duaXplciB0b3VjaGVzTW92ZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgdG91Y2hlc0VuZGVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNDYW5jZWxsZWQ6d2l0aEV2ZW50Ol0pOgorICAg
ICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hvdmVyRW50ZXJlZDp3aXRoRXZlbnQ6
XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBfaG92ZXJNb3ZlZDp3aXRo
RXZlbnQ6XSk6CisgICAgICAgICgtW1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBfaG92ZXJFeGl0
ZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgX2hv
dmVyQ2FuY2VsbGVkOndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tNb3VzZUdlc3R1cmVSZWNv
Z25pemVyIGxvY2F0aW9uSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIgY2FuUHJldmVudEdlc3R1cmVSZWNvZ25pemVyOl0pOgorICAgICAgICAoLVtXS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOl0pOgor
ICAgICAgICBJbnN0ZWFkIG9mIGp1c3QgdXNpbmcgVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyLCBp
bnRyb2R1Y2UgYSBuZXcgZ2VzdHVyZQorICAgICAgICByZWNvZ25pemVyIHRoYXQgZG9lcyB3aGF0
IGl0IGRpZCwgYnV0IGFsc28gc3VwcG9ydHMgY2FzZXMgd2hlcmUgdGhlIGJ1dHRvbgorICAgICAg
ICBpcyBwcmVzc2VkIChzbywgbW91c2Vkb3duIGFuZCBtb3VzZXVwIGluc3RlYWQgb2YganVzdCBt
b3VzZW1vdmUpLAorICAgICAgICBhbmQgc3ludGhlc2l6ZXMgbW91c2UgZXZlbnRzIGZvciBhbGwg
c3RhdGUgdHJhbnNpdGlvbnMuIFRoZXNlIGV2ZW50cworICAgICAgICBzaG91bGQgbG9vayByb3Vn
aGx5IGlkZW50aWNhbCB0byB3aGF0IGEgbm9uLW1hY0NhdGFseXN0IGFwcCB3b3VsZCBnZXQKKyAg
ICAgICAgaW4gQXBwS2l0J3MgbW91c2VVcC9tb3VzZURvd24vbW91c2VNb3ZlZCBOU1Jlc3BvbmRl
ciBtZXRob2RzLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhbnVw
SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVtb3ZlRGVmYXVsdEdl
c3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGREZWZhdWx0
R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJl
Y29nbml6ZXI6c2hvdWxkUmVjZWl2ZVRvdWNoOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGdlc3R1cmVSZWNvZ25pemVyOnNob3VsZFJlY29nbml6ZVNpbXVsdGFuZW91c2x5V2l0aEdlc3R1
cmVSZWNvZ25pemVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93U2hhcmVTaGVl
dDppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOl0pOgorICAgICAgICAod2ViRXZlbnRGbGFn
c0ZvclVJS2V5TW9kaWZpZXJGbGFncyk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2hvdmVyR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYWtlIHVzZSBvZiBX
S01vdXNlR2VzdHVyZVJlY29nbml6ZXIgdG8gcGx1bWIgdGhlIHN5bnRoZXNpemVkIGV2ZW50cyBk
aXJlY3RseQorICAgICAgICB0byB0aGUgbWFjT1Mtc3R5bGUgImhhbmRsZU1vdXNlRXZlbnQiIGNv
ZGVwYXRoLCBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2gKKyAgICAgICAgdGhlIHRvdWNoIGV2ZW50
cyBwYXRoIChhbmQgdGhlbiBzdWJzZXF1ZW50bHkgZ2VuZXJhdGluZyBzeW50aGV0aWMgY2xpY2tz
KS4KKyAgICAgICAgQWxzbywgZW5zdXJlIHRoYXQgb3RoZXIgZ2VzdHVyZSByZWNvZ25pemVycyBp
Z25vcmUgdGhlIG1vdXNlICJ0b3VjaCIgZW50aXJlbHkKKyAgICAgICAgYnkgcmV0dXJuaW5nIE5P
IGluIHNob3VsZFJlY2VpdmVUb3VjaC4KKwogMjAxOS0xMC0xNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIHNlbmQtc2lnbmFsIGZy
b20gbWFjaC1sb29rdXAgcnVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDk2NWM0MGViMTVk
Y2VjM2Y5NjZkYTYxYTQyYzNiMDg1MTJmMzg3M2IuLmQxYjQ3ZWFhYWRlOTExMWZlNDVkMzc4MWRi
OWI2YTc5ZWZkNGQ2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMwMyw3ICszMDMsNyBA
QCBzdGF0aWMgYm9vbCBpc0ZvcmNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybUV2ZW50KQogICAgIHJldHVybiBwbGF0Zm9ybUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZUZvcmNlQ2hhbmdlZCB8fCBwbGF0Zm9ybUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZUZvcmNlRG93biB8fCBwbGF0Zm9ybUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZUZvcmNlVXA7CiB9CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpICYm
ICFFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKIHN0YXRp
YyBib29sIGlzQ29tcGF0aWJpbGl0eU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCYgbW91c2VF
dmVudCkKIHsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcG9pbnRlcmV2ZW50cy8jY29t
cGF0aWJpbGl0eS1tYXBwaW5nLXdpdGgtbW91c2UtZXZlbnRzCkBAIC0zMTIsNDQgKzMxMiw1MyBA
QCBzdGF0aWMgYm9vbCBpc0NvbXBhdGliaWxpdHlNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQm
IG1vdXNlRXZlbnQpCiB9CiAjZW5kaWYKIAotYm9vbCBFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQpCitzdGF0
aWMgYm9vbCBzaG91bGRJZ25vcmVNb3VzZUV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IE1v
dXNlRXZlbnQmIG1vdXNlRXZlbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1F
dmVudCwgYm9vbCYgZGlkTm90U3dhbGxvd0V2ZW50KQogewotICAgIGlmIChpc0Rpc2FibGVkRm9y
bUNvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzRm9yY2VFdmVu
dChwbGF0Zm9ybUV2ZW50KSAmJiAhZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5
cGUocGxhdGZvcm1FdmVudC50eXBlKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBS
ZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVk
VGFyZ2V0KTsKLQotICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KLQotICAgIGJvb2wgZGlkTm90U3dh
bGxvd0V2ZW50ID0gdHJ1ZTsKLQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5wb2ludGVyRXZlbnRzRW5h
YmxlZCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIgPSBwYWdlLT5wb2ludGVy
Q2FwdHVyZUNvbnRyb2xsZXIoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICAg
ICAgaWYgKG1vdXNlRXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAmJiBw
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIucHJldmVudHNDb21wYXRpYmlsaXR5TW91c2VFdmVudHNG
b3JJZGVudGlmaWVyKHBsYXRmb3JtRXZlbnQucG9pbnRlcklkKCkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LnBvaW50ZXJJZCgp
ICE9IG1vdXNlUG9pbnRlcklEICYmIG1vdXNlRXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50ICYmIHBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5wcmV2ZW50c0NvbXBhdGliaWxp
dHlNb3VzZUV2ZW50c0ZvcklkZW50aWZpZXIocGxhdGZvcm1FdmVudC5wb2ludGVySWQoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKHBsYXRmb3JtRXZlbnQpOworI2VuZGlmCiAgICAgICAgICAgICBpZiAoYXV0byBwb2ludGVy
RXZlbnQgPSBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIucG9pbnRlckV2ZW50Rm9yTW91c2VFdmVu
dChtb3VzZUV2ZW50KSkgewotICAgICAgICAgICAgICAgIHBvaW50ZXJDYXB0dXJlQ29udHJvbGxl
ci5kaXNwYXRjaEV2ZW50KCpwb2ludGVyRXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIHBv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5kaXNwYXRjaEV2ZW50KCpwb2ludGVyRXZlbnQsICZlbGVt
ZW50KTsKICAgICAgICAgICAgICAgICBpZiAoaXNDb21wYXRpYmlsaXR5TW91c2VFdmVudChtb3Vz
ZUV2ZW50KSAmJiBwb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIucHJldmVudHNDb21wYXRpYmlsaXR5
TW91c2VFdmVudHNGb3JJZGVudGlmaWVyKHBvaW50ZXJFdmVudC0+cG9pbnRlcklkKCkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChwb2ludGVyRXZlbnQtPmRlZmF1bHRQcmV2ZW50
ZWQoKSB8fCBwb2ludGVyRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90U3dhbGxvd0V2ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChwb2ludGVyRXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkucG9pbnRlcmRvd25FdmVudCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSNl
bmRpZgogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWls
LCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KQoreworICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzRm9yY2VFdmVudChwbGF0
Zm9ybUV2ZW50KSAmJiAhZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUocGxh
dGZvcm1FdmVudC50eXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWY8TW91
c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0
KTsKKworICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KKworICAgIGJvb2wgZGlkTm90U3dhbGxvd0V2
ZW50ID0gdHJ1ZTsKKworICAgIGlmIChzaG91bGRJZ25vcmVNb3VzZUV2ZW50KCp0aGlzLCBtb3Vz
ZUV2ZW50LmdldCgpLCBwbGF0Zm9ybUV2ZW50LCBkaWROb3RTd2FsbG93RXZlbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBBU1NFUlQoIW1vdXNlRXZlbnQtPnRhcmdldCgpIHx8IG1v
dXNlRXZlbnQtPnRhcmdldCgpICE9IHJlbGF0ZWRUYXJnZXQpOwogICAgIGRpc3BhdGNoRXZlbnQo
bW91c2VFdmVudCk7CiAgICAgaWYgKG1vdXNlRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSB8fCBt
b3VzZUV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IGZkYTgwZDVlOWFlOTMyNTdmNjcyMjlh
NjFjOWU3MmMzYzM4NjU3YTIuLjE2ZjQzMmFmODg4ZGRiNmM4NzJmNjU5MzQzNDI1NjA3YWViNmE5
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxl
ci5jcHAKQEAgLTE1OSwxMSArMTU5LDEwIEBAIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVy
OjplbGVtZW50V2FzUmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQogdm9pZCBQb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXI6OnJlc2V0KCkKIHsKICAgICBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1cmlu
Z0RhdGEuY2xlYXIoKTsKLSNpZiAhRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogICAgIENhcHR1cmlu
Z0RhdGEgY2FwdHVyaW5nRGF0YTsKICAgICBjYXB0dXJpbmdEYXRhLnBvaW50ZXJUeXBlID0gUG9p
bnRlckV2ZW50Ojptb3VzZVBvaW50ZXJUeXBlKCk7CiAgICAgbV9hY3RpdmVQb2ludGVySWRzVG9D
YXB0dXJpbmdEYXRhLmFkZChtb3VzZVBvaW50ZXJJRCwgY2FwdHVyaW5nRGF0YSk7Ci0jZW5kaWYK
IH0KIAogdm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnRvdWNoV2l0aElkZW50aWZpZXJX
YXNSZW1vdmVkKFBvaW50ZXJJRCBwb2ludGVySWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oCmluZGV4IDNlYWY0NjA4MWQ2YzJmNjNiZjRkNDU3YWM4M2UwYzI2ODg1
NjViMjcuLmYwODZkNGRhM2I4YWE0Nzg3Njc4YTQ4Yzc3NzI2NDdjNWMxY2ZlNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xMTE2LDYgKzExMTYsMjAg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdz
KSB7CiAtICh2b2lkKV91cGRhdGVTYWZlQXJlYUluc2V0czsKIEBlbmQKIAorQGludGVyZmFjZSBV
SUdlc3R1cmVSZWNvZ25pemVyIChJUEkpCistIChCT09MKV9wYXVzZWQ7CitAcHJvcGVydHkgKG5v
bmF0b21pYykgVUlWaWV3ICp2aWV3OworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0
dGVyPV9hY2NlcHRzRmFpbHVyZVJlcXVpcmVtZW50cywgc2V0dGVyPV9zZXRBY2NlcHRzRmFpbHVy
ZVJlcXVpbWVudHM6KSBCT09MIF9hY2NlcHRzRmFpbHVyZVJlcXVpcmVtZW50czsKK0BlbmQKKwor
QGludGVyZmFjZSBVSUhvdmVyRXZlbnQgOiBVSUV2ZW50CistICh2b2lkKXNldE5lZWRzSGl0VGVz
dFJlc2V0OworQGVuZAorCitAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24gKElQSSkKKy0gKFVJSG92
ZXJFdmVudCAqKV9ob3ZlckV2ZW50Rm9yV2luZG93OihVSVdpbmRvdyAqKXdpbmRvdzsKK0BlbmQK
KwogQGludGVyZmFjZSBVSVNjcm9sbFZpZXcgKElQSSkKIC0gKENHRmxvYXQpX3J1YmJlckJhbmRP
ZmZzZXRGb3JPZmZzZXQ6KENHRmxvYXQpbmV3T2Zmc2V0IG1heE9mZnNldDooQ0dGbG9hdCltYXhP
ZmZzZXQgbWluT2Zmc2V0OihDR0Zsb2F0KW1pbk9mZnNldCByYW5nZTooQ0dGbG9hdClyYW5nZSBv
dXRzaWRlOihCT09MICopb3V0c2lkZTsKIC0gKHZvaWQpX2FkanVzdEZvckF1dG9tYXRpY0tleWJv
YXJkSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbyBhbmltYXRlZDooQk9PTClhbmltYXRlZCBsYXN0
QWRqdXN0bWVudDooQ0dGbG9hdCopbGFzdEFkanVzdG1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKaW5kZXggYmJkZGQ5NDgyNmU0ODYyOWNmYmVjOGY4M2M0
ZTY4Njk4NzIzMWRiZi4uYmE3ZjkzYzkyNGZlZmRhZTdlNDJjNzFmZWE5M2I0OWNmZTZkYTRkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApAQCAtNjMsNiAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGludCk7
CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoOjpX
ZWJFdmVudCAqKTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxvYXQg
ZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9kaWZpZXI+
LCBXYWxsVGltZSB0aW1lc3RhbXAsIGRvdWJsZSBmb3JjZSk7CiAjZWxpZiBVU0UoTElCV1BFKQog
ICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50Kiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogI2VsaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQppbmRleCBi
OWJjZjFiYzRjNTc0MWJlODhhNTk5NDcwMjg0OTMwYWIzYTM1ZTkwLi43ZGIwMGYxNWFiYjIzYmQ2
NWM3MjIxM2Y4MGMxZjc4ZGMxMDY0MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQpAQCAtMzgsNiArMzgsMTEgQEAgTmF0aXZl
V2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICpldmVudCkKIHsK
IH0KIAorTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChUeXBlIHR5cGUs
IEJ1dHRvbiBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3Vu
dCwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIFdhbGxUaW1lIHRpbWVzdGFtcCwgZG91
YmxlIGZvcmNlKQorICAgIDogV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIGJ1dHRvbnMsIHBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgY2xpY2tDb3Vu
dCwgbW9kaWZpZXJzLCB0aW1lc3RhbXAsIGZvcmNlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggMzI3ZWE0ZTI4M2JlNDA2OTcyYmEzMTNjZWFkYzNjMDExNTFmYWJjZS4uMjU3ZTgy
ODRlMmMyYWE2ZDc1NzNmNjRkMjZhODUxNmQ5MTM3YjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtNDI2LDYgKzQyNiw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tCiBVSVByb2Nlc3MvaW9zL1dLSGlnaGxpZ2h0TG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yLm1tCitVSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQog
VUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VO
dW1iZXJJbmRpY2F0b3IubW0KIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
aW5kZXggMTBmZTYxOTU1MTdjOGNkZjg3OWZkOGU3NGQyOWM1MzVkY2I2ZTQxYy4uMWE3ODRhNmVi
NzdlOTdlODdiODE4NGUxNzU1NjAzNTc5MzE4NTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTksNyAr
OTksNiBAQCBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogCiBAY2xhc3MgX1VJTG9v
a3VwR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3MgX1VJSGlnaGxpZ2h0VmlldzsKLUBjbGFzcyBV
SUhvdmVyR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3MgVUlUYXJnZXRlZFByZXZpZXc7CiBAY2xh
c3MgV2ViRXZlbnQ7CiBAY2xhc3MgV0tBY3Rpb25TaGVldEFzc2lzdGFudDsKQEAgLTEwOSw2ICsx
MDgsNyBAQCBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogQGNsYXNzIFdLRm9ybUlu
cHV0Q29udHJvbDsKIEBjbGFzcyBXS0Zvcm1JbnB1dFNlc3Npb247CiBAY2xhc3MgV0tIaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKK0BjbGFzcyBXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXI7CiBAY2xhc3MgV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXI7CiAK
IHR5cGVkZWYgdm9pZCAoXlVJV0tBdXRvY29ycmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyKShVSVdL
QXV0b2NvcnJlY3Rpb25SZWN0cyAqcmVjdHNGb3JJbnB1dCk7CkBAIC0yMzYsOCArMjM2LDcgQEAg
c3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICNlbmRpZgogCiAjaWYgSEFWRShIT1ZFUl9H
RVNUVVJFX1JFQ09HTklaRVIpCi0gICAgUmV0YWluUHRyPFVJSG92ZXJHZXN0dXJlUmVjb2duaXpl
cj4gX2hvdmVyR2VzdHVyZVJlY29nbml6ZXI7Ci0gICAgQ0dQb2ludCBfbGFzdEhvdmVyTG9jYXRp
b247CisgICAgUmV0YWluUHRyPFdLTW91c2VHZXN0dXJlUmVjb2duaXplcj4gX21vdXNlR2VzdHVy
ZVJlY29nbml6ZXI7CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxVSVdLVGV4dEludGVyYWN0aW9u
QXNzaXN0YW50PiBfdGV4dFNlbGVjdGlvbkFzc2lzdGFudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGIy
ZDU1MDNjMThhYmMwNjg3ZmVkZTc5Mjg3MzUyNDExMDZiZjQ1ZGMuLjcwYmU5YzBkNDdlMzBjZTUy
YTcxNTIzNGMyMDc1MzUwNDMzMmVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTUsNiArNTUsNyBA
QAogI2ltcG9ydCAiV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIgogI2lt
cG9ydCAiV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tJbnNwZWN0
b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNpbXBvcnQgIldLTW91c2VHZXN0dXJl
UmVjb2duaXplci5oIgogI2ltcG9ydCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV0tQcmV2
aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVt
SW50ZXJuYWwuaCIKQEAgLTEzMywxMSArMTM0LDYgQEAKICNpbXBvcnQgPFVJS2l0L19VSUxvb2t1
cEdlc3R1cmVSZWNvZ25pemVyLmg+CiAjZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSKQotI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgotI2ltcG9ydCA8VUlL
aXQvVUlIb3Zlckdlc3R1cmVSZWNvZ25pemVyLmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogI2ltcG9ydCAiV0tGb3JtQ29sb3JDb250cm9sLmgiCiAjZW5kaWYKQEAg
LTc0NSw5ICs3NDEsOSBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiBhZGRH
ZXN0dXJlUmVjb2duaXplcjpfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAog
I2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIF9ob3Zlckdlc3R1cmVSZWNv
Z25pemVyID0gYWRvcHROUyhbW1VJSG92ZXJHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdp
dGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9ob3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hh
bmdlZDopXSk7Ci0gICAgW19ob3Zlckdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZd
OwotICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9ob3Zlckdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKKyAgICBfbW91c2VHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tXS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxl
Y3RvcihfbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KV0pOworICAgIFtfbW91c2VHZXN0
dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVj
b2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSAgICAKQEAgLTg5Nyw4ICs4OTMsOCBAQCAtICh2b2lkKWNsZWFu
dXBJbnRlcmFjdGlvbgogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90b3VjaEV2
ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JF
Q09HTklaRVIpCi0gICAgW19ob3Zlckdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07
Ci0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2hvdmVyR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOworICAgIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxd
OworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25p
emVyLmdldCgpXTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpICAgIApAQCAt
MTAxNCw3ICsxMDEwLDcgQEAgLSAodm9pZClfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVy
cwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNpZiBIQVZFKEhP
VkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXpl
cjpfaG92ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVy
ZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X2xvb2t1cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTEwNDAsNyArMTAzNiw3IEBAIC0g
KHZvaWQpX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiBhZGRHZXN0dXJl
UmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2hvdmVyR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl9sb29rdXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CkBAIC0x
NDQ5LDE3ICsxNDQ1LDI0IEBAIC0gKHZvaWQpX2hhbmRsZVRvdWNoQWN0aW9uc0ZvclRvdWNoRXZl
bnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCYpdG91CiAKIC0gKEJPT0wpZ2Vz
dHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBz
aG91bGRSZWNlaXZlVG91Y2g6KFVJVG91Y2ggKil0b3VjaAogewotICAgIGlmIChnZXN0dXJlUmVj
b2duaXplciAhPSBfdG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciAmJiBnZXN0
dXJlUmVjb2duaXplciAhPSBfdG91Y2hBY3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIg
JiYgZ2VzdHVyZVJlY29nbml6ZXIgIT0gX3RvdWNoQWN0aW9uVXBTd2lwZUdlc3R1cmVSZWNvZ25p
emVyICYmIGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEFjdGlvbkRvd25Td2lwZUdlc3R1cmVS
ZWNvZ25pemVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBIQVZFKEhPVkVSX0dFU1RVUkVf
UkVDT0dOSVpFUikKKyAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgIT0gX21vdXNlR2VzdHVyZVJl
Y29nbml6ZXIgJiYgW19tb3VzZUdlc3R1cmVSZWNvZ25pemVyIG1vdXNlVG91Y2hdID09IHRvdWNo
KQorICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKIAotICAgIC8vIFdlIHVwZGF0ZSB0aGUgZW5h
YmxlZCBzdGF0ZSBvZiB0aGUgdmFyaW91cyBzd2lwZSBnZXN0dXJlIHJlY29nbml6ZXJzIHN1Y2gg
dGhhdCBpZiB3ZSBoYXZlIGEgdW5pZGlyZWN0aW9uYWwgdG91Y2gtYWN0aW9uCi0gICAgLy8gc3Bl
Y2lmaWVkIChvbmx5IHBhbi14IG9yIG9ubHkgcGFuLXkpIHdlIGVuYWJsZSB0aGUgdHdvIHJlY29n
bml6ZXJzIGluIHRoZSBvcHBvc2l0ZSBheGlzIHRvIHByZXZlbnQgc2Nyb2xsaW5nIGZyb20gc3Rh
cnRpbmcKLSAgICAvLyBpZiB0aGUgaW5pdGlhbCBnZXN0dXJlIGlzIHN1Y2ggYSBzd2lwZS4gU2lu
Y2UgdGhlIHJlY29nbml6ZXJzIGFyZSBzcGVjaWZpZWQgdG8gdXNlIGEgc2luZ2xlIGZpbmdlciBm
b3IgcmVjb2duaXRpb24sIHdlIGRvbid0Ci0gICAgLy8gbmVlZCB0byB3b3JyeSBhYm91dCB0aGUg
Y2FzZSB3aGVyZSB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIGEgc2luZ2xlIHRvdWNoIGZvciBhIGdp
dmVuIFVJU2Nyb2xsVmlldy4KLSAgICBhdXRvIHRvdWNoQWN0aW9ucyA9IFdlYktpdDo6dG91Y2hB
Y3Rpb25zRm9yUG9pbnQoc2VsZiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFt0b3VjaCBsb2Nh
dGlvbkluVmlldzpzZWxmXSkpOwotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hB
Y3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBf
dG91Y2hBY3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAgIHJldHVybiB0
b3VjaEFjdGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblk7Ci0gICAgcmV0dXJuIHRv
dWNoQWN0aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWDsKKyAgICBpZiAoZ2VzdHVy
ZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgfHwg
Z2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uUmlnaHRTd2lwZUdlc3R1cmVSZWNvZ25p
emVyIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvblVwU3dpcGVHZXN0dXJlUmVj
b2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hBY3Rpb25Eb3duU3dpcGVHZXN0
dXJlUmVjb2duaXplcikgeworCisgICAgICAgIC8vIFdlIHVwZGF0ZSB0aGUgZW5hYmxlZCBzdGF0
ZSBvZiB0aGUgdmFyaW91cyBzd2lwZSBnZXN0dXJlIHJlY29nbml6ZXJzIHN1Y2ggdGhhdCBpZiB3
ZSBoYXZlIGEgdW5pZGlyZWN0aW9uYWwgdG91Y2gtYWN0aW9uCisgICAgICAgIC8vIHNwZWNpZmll
ZCAob25seSBwYW4teCBvciBvbmx5IHBhbi15KSB3ZSBlbmFibGUgdGhlIHR3byByZWNvZ25pemVy
cyBpbiB0aGUgb3Bwb3NpdGUgYXhpcyB0byBwcmV2ZW50IHNjcm9sbGluZyBmcm9tIHN0YXJ0aW5n
CisgICAgICAgIC8vIGlmIHRoZSBpbml0aWFsIGdlc3R1cmUgaXMgc3VjaCBhIHN3aXBlLiBTaW5j
ZSB0aGUgcmVjb2duaXplcnMgYXJlIHNwZWNpZmllZCB0byB1c2UgYSBzaW5nbGUgZmluZ2VyIGZv
ciByZWNvZ25pdGlvbiwgd2UgZG9uJ3QKKyAgICAgICAgLy8gbmVlZCB0byB3b3JyeSBhYm91dCB0
aGUgY2FzZSB3aGVyZSB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIGEgc2luZ2xlIHRvdWNoIGZvciBh
IGdpdmVuIFVJU2Nyb2xsVmlldy4KKyAgICAgICAgYXV0byB0b3VjaEFjdGlvbnMgPSBXZWJLaXQ6
OnRvdWNoQWN0aW9uc0ZvclBvaW50KHNlbGYsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbdG91
Y2ggbG9jYXRpb25JblZpZXc6c2VsZl0pKTsKKyAgICAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVy
ID09IF90b3VjaEFjdGlvbkxlZnRTd2lwZUdlc3R1cmVSZWNvZ25pemVyIHx8IGdlc3R1cmVSZWNv
Z25pemVyID09IF90b3VjaEFjdGlvblJpZ2h0U3dpcGVHZXN0dXJlUmVjb2duaXplcikKKyAgICAg
ICAgICAgIHJldHVybiB0b3VjaEFjdGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblk7
CisgICAgICAgIHJldHVybiB0b3VjaEFjdGlvbnMgPT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBh
blg7CisgICAgfQorCisgICAgcmV0dXJuIFlFUzsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUb3Vj
aEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUgaW1wbGVtZW50YXRpb24KQEAgLTE5NTks
NyArMTk2Miw3IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRSZWNvZ25pCiAgICAgICAgIHJldHVybiBZRVM7
CiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBpZiAoW2dlc3R1cmVS
ZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJSG92ZXJHZXN0dXJlUmVjb2duaXplciBjbGFzc11d
IHx8IFtvdGhlckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJSG92ZXJHZXN0dXJl
UmVjb2duaXplciBjbGFzc11dKQorICAgIGlmIChbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZD
bGFzczpbV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0gfHwgW290aGVyR2VzdHVyZVJl
Y29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKIApAQCAtNjM1NSw4ICs2MzU4LDEwIEBAIC0g
KHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMJilkYXRhIGluUmVjdDooV1RGCiAKICNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpF
UikKICAgICBpZiAoIXJlY3QpIHsKLSAgICAgICAgYXV0byBob3ZlckxvY2F0aW9uSW5XZWJWaWV3
ID0gW3NlbGYgY29udmVydFBvaW50Ol9sYXN0SG92ZXJMb2NhdGlvbiB0b1ZpZXc6X3dlYlZpZXdd
OwotICAgICAgICByZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KGhvdmVyTG9jYXRpb25JbldlYlZp
ZXcueCwgaG92ZXJMb2NhdGlvbkluV2ViVmlldy55LCAxLCAxKTsKKyAgICAgICAgaWYgKGF1dG8g
bGFzdE1vdXNlTG9jYXRpb24gPSBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgbGFzdE1vdXNlTG9j
YXRpb25dKSB7CisgICAgICAgICAgICBhdXRvIGhvdmVyTG9jYXRpb25JbldlYlZpZXcgPSBbc2Vs
ZiBjb252ZXJ0UG9pbnQ6Kmxhc3RNb3VzZUxvY2F0aW9uIHRvVmlldzpfd2ViVmlld107CisgICAg
ICAgICAgICByZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KGhvdmVyTG9jYXRpb25JbldlYlZpZXcu
eCwgaG92ZXJMb2NhdGlvbkluV2ViVmlldy55LCAxLCAxKTsKKyAgICAgICAgfQogICAgIH0KICNl
bmRpZgogICAgIApAQCAtNzc1Myw0NiArNzc1OCwxMyBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJl
UmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAjZW5k
aWYKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQotc3RhdGljIFdlYkV2ZW50
RmxhZ3Mgd2ViRXZlbnRGbGFnc0ZvclVJS2V5TW9kaWZpZXJGbGFncyhVSUtleU1vZGlmaWVyRmxh
Z3MgZmxhZ3MpCi17Ci0gICAgV2ViRXZlbnRGbGFncyBldmVudEZsYWdzID0gMDsKLSAgICBpZiAo
ZmxhZ3MgJiBVSUtleU1vZGlmaWVyU2hpZnQpCi0gICAgICAgIGV2ZW50RmxhZ3MgfD0gV2ViRXZl
bnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQ29u
dHJvbCkKLSAgICAgICAgZXZlbnRGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdENvbnRyb2xL
ZXk7Ci0gICAgaWYgKGZsYWdzICYgVUlLZXlNb2RpZmllckFsdGVybmF0ZSkKLSAgICAgICAgZXZl
bnRGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdE9wdGlvbktleTsKLSAgICBpZiAoZmxhZ3Mg
JiBVSUtleU1vZGlmaWVyQ29tbWFuZCkKLSAgICAgICAgZXZlbnRGbGFncyB8PSBXZWJFdmVudEZs
YWdNYXNrTGVmdENvbW1hbmRLZXk7Ci0gICAgaWYgKGZsYWdzICYgVUlLZXlNb2RpZmllckFscGhh
U2hpZnQpCi0gICAgICAgIGV2ZW50RmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRDYXBzTG9j
a0tleTsKLSAgICByZXR1cm4gZXZlbnRGbGFnczsKLX0KLQotLSAodm9pZClfaG92ZXJHZXN0dXJl
UmVjb2duaXplckNoYW5nZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXpl
cgorLSAodm9pZClfbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KFdLTW91c2VHZXN0dXJl
UmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgaWYgKCFfcGFnZS0+aGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFrZSBhIHRpbWVzdGFt
cCB0aGF0IG1hdGNoZXMgVUlUb3VjaCBhbmQgVUlFdmVudC4KLSAgICBDRlRpbWVJbnRlcnZhbCB0
aW1lc3RhbXAgPSBHU0N1cnJlbnRFdmVudFRpbWVzdGFtcCgpIC8gMTAwMDAwMDAwMC4wOwotCi0g
ICAgQ0dQb2ludCBwb2ludDsKLSAgICBzd2l0Y2ggKGdlc3R1cmVSZWNvZ25pemVyLnN0YXRlKSB7
Ci0gICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbjoKLSAgICBjYXNlIFVJR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIHBvaW50ID0gW2dlc3R1cmVSZWNv
Z25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZdOwotICAgICAgICBfbGFzdEhvdmVyTG9jYXRpb24g
PSBwb2ludDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGVFbmRlZDoKLSAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZDoKLSAg
ICBkZWZhdWx0OgotICAgICAgICBwb2ludCA9IENHUG9pbnRNYWtlKC0xLCAtMSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbOjpXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlTW92ZWQgdGltZVN0YW1w
OnRpbWVzdGFtcCBsb2NhdGlvbjpwb2ludCBtb2RpZmllcnM6d2ViRXZlbnRGbGFnc0ZvclVJS2V5
TW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplck1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29n
bml6ZXIpKV0pOwotICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KFdlYktpdDo6TmF0aXZlV2Vi
TW91c2VFdmVudChldmVudC5nZXQoKSkpOworICAgIGlmIChhdXRvIGV2ZW50ID0gZ2VzdHVyZVJl
Y29nbml6ZXIubGFzdE1vdXNlRXZlbnQpCisgICAgICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50
KCpldmVudCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MjhjZjM1Yjhj
Y2IyZDFmYjkxOWQxYzJhNzA4NDNmNzY4Nzg4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisKKyNpbXBvcnQgIk5hdGl2ZVdlYk1v
dXNlRXZlbnQuaCIKKworQGludGVyZmFjZSBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgOiBVSUdl
c3R1cmVSZWNvZ25pemVyCisKKy0gKFdURjo6T3B0aW9uYWw8Q0dQb2ludD4pbGFzdE1vdXNlTG9j
YXRpb247CistIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQgKilsYXN0TW91c2VFdmVudDsK
KworLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2g7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOGQ4YjUxYTJmODVjMTBiMzRlM2Y5ODc1MzUyNGZkYjFlZTYxOTAwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0
dXJlUmVjb2duaXplci5tbQpAQCAtMCwwICsxLDI1MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldL
TW91c2VHZXN0dXJlUmVjb2duaXplci5oIgorCisjaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09H
TklaRVIpCisKKyNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbXBvcnQgIlVJS2l0
U1BJLmgiCisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKworc3RhdGljIE9wdGlvblNldDxXZWJL
aXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gd2ViRXZlbnRNb2RpZmllcnNGb3JVSUtleU1vZGlmaWVy
RmxhZ3MoVUlLZXlNb2RpZmllckZsYWdzIGZsYWdzKQoreworICAgIE9wdGlvblNldDxXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9k
aWZpZXJTaGlmdCkKKyAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2ZW50OjpNb2Rp
Zmllcjo6U2hpZnRLZXkpOworICAgIGlmIChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb250cm9sKQor
ICAgICAgICBtb2RpZmllcnMuYWRkKFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpDb250cm9s
S2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtleU1vZGlmaWVyQWx0ZXJuYXRlKQorICAgICAgICBt
b2RpZmllcnMuYWRkKFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOworICAgIGlm
IChmbGFncyAmIFVJS2V5TW9kaWZpZXJDb21tYW5kKQorICAgICAgICBtb2RpZmllcnMuYWRkKFdl
YktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKKyAgICBpZiAoZmxhZ3MgJiBVSUtl
eU1vZGlmaWVyQWxwaGFTaGlmdCkKKyAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJLaXQ6OldlYkV2
ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisK
K0BpbXBsZW1lbnRhdGlvbiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgeworICAgIFJldGFpblB0
cjxVSUhvdmVyRXZlbnQ+IF9jdXJyZW50SG92ZXJFdmVudDsKKyAgICBSZXRhaW5QdHI8VUlUb3Vj
aD4gX2N1cnJlbnRUb3VjaDsKKworICAgIEJPT0wgX3RvdWNoaW5nOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudD4gX2xhc3RFdmVudDsKKyAgICBPcHRp
b25hbDxDR1BvaW50PiBfbGFzdExvY2F0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhUYXJnZXQ6KGlkKXRhcmdldCBhY3Rpb246KFNFTClhY3Rpb24KK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXTsKKyAgICBpZiAoIXNlbGYp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbc2VsZiBfc2V0QWNjZXB0c0ZhaWx1cmVSZXF1
aW1lbnRzOk5PXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldFZpZXc6KFVJ
VmlldyAqKXZpZXcKK3sKKyAgICBpZiAodmlldyA9PSBzZWxmLnZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIFtzdXBlciBzZXRWaWV3OnZpZXddOworCisgICAgaWYgKHZpZXcuX3dpbmRvdykg
eworICAgICAgICBVSUhvdmVyRXZlbnQgKmhvdmVyRXZlbnQgPSBbVUlBcHAgX2hvdmVyRXZlbnRG
b3JXaW5kb3c6dmlldy5fd2luZG93XTsKKyAgICAgICAgW2hvdmVyRXZlbnQgc2V0TmVlZHNIaXRU
ZXN0UmVzZXRdOworICAgIH0KK30KKworLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50ICop
bGFzdE1vdXNlRXZlbnQKK3sKKyAgICByZXR1cm4gX2xhc3RFdmVudC5nZXQoKTsKK30KKworLSAo
V1RGOjpPcHRpb25hbDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbgoreworICAgIHJldHVybiBf
bGFzdExvY2F0aW9uOworfQorCistIChVSVRvdWNoICopbW91c2VUb3VjaAoreworICAgIHJldHVy
biBfY3VycmVudFRvdWNoLmdldCgpOworfQorCistIChCT09MKV93YW50c0hvdmVyRXZlbnRzCit7
CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZClyZXNldAoreworICAgIFtzdXBlciByZXNl
dF07CisgICAgX2N1cnJlbnRIb3ZlckV2ZW50ID0gbmlsOworICAgIF9jdXJyZW50VG91Y2ggPSBu
aWw7Cit9CisKKy0gKEJPT0wpX3Nob3VsZFJlY2VpdmVUb3VjaDooVUlUb3VjaCAqKXRvdWNoIGZv
ckV2ZW50OihVSUV2ZW50ICopZXZlbnQgcmVjb2duaXplclZpZXc6KFVJVmlldyAqKXJlY29nbml6
ZXJWaWV3Cit7CisgICAgcmV0dXJuIHRvdWNoID09IF9jdXJyZW50VG91Y2g7Cit9CisKKy0gKEJP
T0wpX3Nob3VsZFJlY2VpdmVQcmVzczooVUlQcmVzcyAqKXByZXNzCit7CisgICAgcmV0dXJuIE5P
OworfQorCistIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50Pilj
cmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6KFdlYktpdDo6V2ViRXZlbnQ6OlR5cGUpdHlwZQorewor
ICAgIGF1dG8gbW9kaWZpZXJzID0gd2ViRXZlbnRNb2RpZmllcnNGb3JVSUtleU1vZGlmaWVyRmxh
Z3Moc2VsZi5tb2RpZmllckZsYWdzKTsKKyAgICBCT09MIGhhc0NvbnRyb2xNb2RpZmllciA9IG1v
ZGlmaWVycy5jb250YWlucyhXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcjo6Q29udHJvbEtleSk7
CisKKyAgICBhdXRvIGJ1dHRvbiA9IFsmXSB7CisgICAgICAgIGlmICghX3RvdWNoaW5nIHx8IHR5
cGUgPT0gV2ViS2l0OjpXZWJFdmVudDo6VHlwZTo6TW91c2VVcCkKKyAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOworICAgICAgICBpZiAoaGFzQ29udHJv
bE1vZGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViTW91c2VFdmVudDo6Umln
aHRCdXR0b247CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0
b247CisgICAgfSgpOworCisgICAgYXV0byBidXR0b25zID0gWyZdIHsKKyAgICAgICAgaWYgKCFf
dG91Y2hpbmcpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGhhc0NvbnRyb2xN
b2RpZmllcikKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gMTsKKyAgICB9
KCk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCB7IFtzZWxmIGxvY2F0aW9uSW5WaWV3
OnNlbGYudmlld10gfTsKKworICAgIGF1dG8gdGltZXN0YW1wID0gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKFNlY29uZHM6OmZyb21OYW5vc2Vjb25kcyhHU0N1cnJlbnRFdmVudFRpbWVzdGFtcCgp
KS5zZWNvbmRzKCkpOworCisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9pbnQsIHBvaW50LCAwLCAw
LCAwLCBbX2N1cnJlbnRUb3VjaCB0YXBDb3VudF0sIG1vZGlmaWVycywgdGltZXN0YW1wLCAwKTsK
K30KKworLSAodm9pZCl0b3VjaGVzQmVnYW46KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdp
dGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgX3RvdWNoaW5nID0gWUVTOworCisgICAg
X2xhc3RFdmVudCA9IFtzZWxmIGNyZWF0ZU1vdXNlRXZlbnRXaXRoVHlwZTpXZWJLaXQ6OldlYkV2
ZW50OjpNb3VzZURvd25dOworICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBsb2NhdGlvbkluVmll
dzpzZWxmLnZpZXddOworCisgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZUNoYW5nZWQ7Cit9CisKKy0gKHZvaWQpdG91Y2hlc01vdmVkOihOU1NldDxVSVRvdWNoICo+ICop
dG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIF9sYXN0RXZlbnQgPSBb
c2VsZiBjcmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6TW91c2VNb3Zl
XTsKKyAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsK
KworICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkOworfQor
CistICh2b2lkKXRvdWNoZXNFbmRlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2
ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBfdG91Y2hpbmcgPSBOTzsKKworICAgIF9sYXN0
RXZlbnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2ZW50V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6
TW91c2VVcF07CisgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYu
dmlld107CisKKyAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdl
ZDsKK30KKworLSAodm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91
Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIFtzZWxmIHRvdWNoZXNFbmRl
ZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX2hvdmVyRW50ZXJlZDoo
TlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sK
KyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldlYktpdDo6
V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisKKyAgICBpZiAoX2N1cnJlbnRIb3ZlckV2ZW50ID09IG5p
bCAmJiB0b3VjaGVzLmNvdW50ID09IDEgJiYgW2V2ZW50IGlzS2luZE9mQ2xhc3M6TlNDbGFzc0Zy
b21TdHJpbmcoQCJVSUhvdmVyRXZlbnQiKV0pIHsKKyAgICAgICAgX2N1cnJlbnRIb3ZlckV2ZW50
ID0gKFVJSG92ZXJFdmVudCAqKWV2ZW50OworICAgICAgICBfY3VycmVudFRvdWNoID0gdG91Y2hl
cy5hbnlPYmplY3Q7CisgICAgICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBsb2NhdGlvbkluVmll
dzpzZWxmLnZpZXddOworICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlQmVnYW47CisgICAgfQorCisgICAgW3N1cGVyIF9ob3ZlckVudGVyZWQ6dG91Y2hlcyB3aXRo
RXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKV9ob3Zlck1vdmVkOihOU1NldDxVSVRvdWNoICo+
ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIGlmIChfdG91Y2hp
bmcpIHsKKyAgICAgICAgX2xhc3RFdmVudCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBfbGFzdEV2ZW50ID0gW3NlbGYgY3JlYXRlTW91c2VFdmVudFdpdGhUeXBlOldl
YktpdDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZV07CisgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxv
Y2F0aW9uSW5WaWV3OnNlbGYudmlld107CisKKyAgICBpZiAoX2N1cnJlbnRIb3ZlckV2ZW50ID09
IGV2ZW50ICYmIFt0b3VjaGVzIGNvbnRhaW5zT2JqZWN0Ol9jdXJyZW50VG91Y2guZ2V0KCldKQor
ICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKKwor
ICAgIFtzdXBlciBfaG92ZXJNb3ZlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0g
KHZvaWQpX2hvdmVyRXhpdGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6
KFVJRXZlbnQgKilldmVudAoreworICAgIF9sYXN0RXZlbnQgPSBbc2VsZiBjcmVhdGVNb3VzZUV2
ZW50V2l0aFR5cGU6V2ViS2l0OjpXZWJFdmVudDo6TW91c2VNb3ZlXTsKKyAgICBfbGFzdExvY2F0
aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsKKworICAgIGlmIChfY3VycmVu
dEhvdmVyRXZlbnQgPT0gZXZlbnQpIHsKKyAgICAgICAgX2N1cnJlbnRIb3ZlckV2ZW50ID0gbmls
OworICAgICAgICBfY3VycmVudFRvdWNoID0gbmlsOworICAgICAgICBzZWxmLnN0YXRlID0gVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQ7CisgICAgfQorCisgICAgW3N1cGVyIF9ob3ZlckV4
aXRlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX2hvdmVyQ2FuY2Vs
bGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVu
dAoreworICAgIFtzZWxmIF9ob3ZlckV4aXRlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cisg
ICAgW3N1cGVyIF9ob3ZlckNhbmNlbGxlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07Cit9CisK
Ky0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIV9j
dXJyZW50VG91Y2gpCisgICAgICAgIHJldHVybiBDR1BvaW50TWFrZSgtMSwgLTEpOworICAgIHJl
dHVybiBbX2N1cnJlbnRUb3VjaCBsb2NhdGlvbkluVmlldzp2aWV3XTsKK30KKworLSAoQk9PTClj
YW5QcmV2ZW50R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50
ZWRHZXN0dXJlUmVjb2duaXplcgoreworICAgIHJldHVybiBOTzsKK30KKworLSAoQk9PTCljYW5C
ZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilwcmV2
ZW50aW5nR2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKK0BlbmQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmOTk1MmMxZjRhMDVlMmU5OWZiMGI3NWVlOWI5YzE0OTYxYTM4Y2IyLi40ZmUwZjNl
N2U1ODdmMWI0ZDVjNzAwMWYxNzE1MWEzMTk0YTc1NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwNSw2ICs3MDUsNyBAQAogCQky
REFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURC
RkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggKi87IH07CiAJCTJEQUYw
NkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENDE4QkQx
QTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQky
REI3NjY3MTIxQjVFNDhBMDA0NUREQjEgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjc2NjcwMjFCNUU0
OEEwMDQ1RERCMSAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OworCQkyREI5NDI5
OTIzNEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREI5NDI5NzIzNEU3QTdGMDBF
Nzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCTJEQzE4RkFEMjE4
OTEwNDkwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3
aW5nVmlldy5oICovOyB9OwogCQkyREMxOEZCMDIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMx
OEZBRjIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggKi87IH07CiAJCTJEQzE4RkIz
MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMThGQjEyMThBNkU5RTAwMjVBODhE
IC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggKi87IH07CkBAIC0yODU2LDYgKzI4NTcsOCBAQAog
CQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRCNzY2NzAyMUI1RTQ4QTAwNDVEREIxIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTdXBw
b3J0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk3MjM0RTdBN0Yw
MEU3NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25p
emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQjk0Mjk4MjM0RTdBN0YwMEU3
NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZBQjIxODkx
MDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXS0RyYXdpbmdWaWV3Lmg7IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZBQzIxODkxMDQ4MDAyNUE4OEQgLyogV0tE
cmF3aW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
RHJhd2luZ1ZpZXcubW07IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5jaWxLaXRTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMzcsNiArNjE0MCw4IEBACiAJCQkJQTU0Mjkz
QTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyLm1tICovLAogCQkJCTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IuaCAqLywKIAkJCQkyREQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovLAorCQkJCTJEQjk0Mjk3MjM0RTdBN0YwMEU3
NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQkyREI5NDI5ODIzNEU3
QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCUExNUVF
REU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLAogCQkJCUExNUVFREUz
MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5tbSAqLywKIAkJCQkyRDZBQjUzRjE5
MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi8sCkBAIC0xMDI1
Nyw2ICsxMDI2Miw3IEBACiAJCQkJNUNBQkRDODYyMkM0MEZERTAwMUVERThFIC8qIFdLTWVzc2Fn
ZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYg
LyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExQThEREIyMERERDFBQzAw
NjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREI5NDI5
OTIzNEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVE
aWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDlBRTVFOTEyNTI1N0MyMDAyNTgyNUQg
LyogV0tOYXRpdmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>