<?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>201674</bug_id>
          
          <creation_ts>2019-09-10 20:22:39 -0700</creation_ts>
          <short_desc>[iOS] Drop animation when dragging images from Photos to WebKit2 Mail compose is incorrect</short_desc>
          <delta_ts>2019-09-23 15:16:56 -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>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569814</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-10 20:22:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/51250952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569818</commentid>
    <comment_count>1</comment_count>
      <attachid>378535</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-10 20:49:03 -0700</bug_when>
    <thetext>Created attachment 378535
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569822</commentid>
    <comment_count>2</comment_count>
      <attachid>378536</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-10 21:09:39 -0700</bug_when>
    <thetext>Created attachment 378536
For EWS (debug build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569966</commentid>
    <comment_count>3</comment_count>
      <attachid>378574</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-11 13:36:26 -0700</bug_when>
    <thetext>Created attachment 378574
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569968</commentid>
    <comment_count>4</comment_count>
      <attachid>378575</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-11 13:43:36 -0700</bug_when>
    <thetext>Created attachment 378575
GTK build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573431</commentid>
    <comment_count>5</comment_count>
      <attachid>378575</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-23 15:16:55 -0700</bug_when>
    <thetext>Comment on attachment 378575
GTK build fix

Clearing flags on attachment: 378575

Committed r250256: &lt;https://trac.webkit.org/changeset/250256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573432</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-23 15:16:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378535</attachid>
            <date>2019-09-10 20:49:03 -0700</date>
            <delta_ts>2019-09-10 21:10:15 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-201674-20190910204902.patch</filename>
            <type>text/plain</type>
            <size>36551</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDliYzgwNTY0YTY3ZGFj
YWRjNWJhMjQ5M2I5MzRkZWQxZWU1MzAyNi4uMzU4Y2RhM2E4NWYzZDA0ODMyYzEyYzk1NjJkN2Qy
Nzk5ZmNlMGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA5LTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Ag
YW5pbWF0aW9uIHdoZW4gZHJhZ2dpbmcgaW1hZ2VzIGZyb20gUGhvdG9zIHRvIFdlYktpdDIgTWFp
bCBjb21wb3NlIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTI1MDk1Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAgcGF0
Y2guCisKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0SXNEcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6cmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNl
aG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aW5zZXJ0RHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6CisKIDIwMTktMDktMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IHNlbGVj
dGlvbiByZWN0IHJldmVhbGVkIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGEgY29udGVudGVkaXRh
YmxlIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDE5NTEzOTRlNjA2Njc5NTIxMDRjOWY1Y2UzOWFiYzdj
NDhmMjAzNS4uMDEzNTg4ZTRlNjI1YThjNDY4Y2Q4MDhmNzM2MGRlMDQ4YWU1OGRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0wOS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEcm9wIGFuaW1hdGlvbiB3aGVuIGRyYWdn
aW5nIGltYWdlcyBmcm9tIFBob3RvcyB0byBXZWJLaXQyIE1haWwgY29tcG9zZSBpcyBpbmNvcnJl
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEyNTA5NTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQIHBhdGNoLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6c2V0RGVmYXVsdERyb3BQcmV2aWV3KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlOjpkZWZhdWx0RHJvcFByZXZpZXcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpCbG9ja1B0cjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxp
dmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTpdKToKKyAgICAgICAgKHNpemVzT2ZQbGFj
ZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOnNlc3Np
b246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnBlcmZvcm1E
cm9wOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjppdGVtOndp
bGxBbmltYXRlRHJvcFdpdGhBbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBk
cm9wSW50ZXJhY3Rpb246cHJldmlld0ZvckRyb3BwaW5nSXRlbTp3aXRoRGVmYXVsdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5p
c2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKwogMjAxOS0wOS0wNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3Qgc2VsZWN0aW9uIHJl
Y3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250ZW50ZWRpdGFibGUgZWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA0ZWE4OTMwYTZj
OTkzYzE2OWU5MmE0MDgwMjU4ZjRiYmE1NDljNzU0Li44NTZlYjg4Njg3YTgzNThiMWI3ZTE5NTY4
NjAxOGU1NjM2MTI0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJzZXI7IH0KIAorICAgIGJvb2wgaXNEcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcjsgfQorICAgIHZvaWQgc2V0SXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpIHsgbV9pc0Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVyID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqID0gbnVsbHB0ciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7CiAKQEAgLTE4OSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9leHBlcmltZW50YWxJbWFnZU1lbnVFbmFi
bGVkOwogICAgIGJvb2wgbV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCB7IGZhbHNlIH07
IC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHBhcnNlQXR0cmlidXRlKCkgY2Fu
J3Qgc2VlIHRoZSBvbGQgdmFsdWUuCiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlciB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U+IG1fZWRpdGFibGVJbWFnZTsKICAgICBX
ZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDVjZjNkYWQ3OGUyNzJjMmY3N2NiMGE1OGQw
Njc2YjU0Y2JmYmUwZi4uOTIwNmRlNjhkY2QxMWYyNDk1MzdhZTViYjA5N2VjOGViMjAxMWU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0yMDYsNiArMjA3
LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2RpZEluaXRpYXRl
RHJhZyA9IGZhbHNlOwogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBj
bGVhckRyYWdDYXJldCgpOworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygp
OwogICAgIAogICAgIG1fY2xpZW50LmRyYWdFbmRlZCgpOwogfQpAQCAtMjM4LDYgKzI0MCwxNiBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgZHJhZ0lzSGFuZGxlZEJ5RG9jdW1lbnQoRHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZAogCiBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CisgICAgaWYgKCFtX2Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVycy5pc0VtcHR5KCkgJiYgbV9kcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlclJhbmdlICYmIHRyeVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGRyYWdEYXRh
KSkgeworICAgICAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycy5jbGVhcigpOworICAgICAg
ICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBudWxscHRyOworICAgICAgICBtX2Rv
Y3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycygpOworCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNQZXJmb3JtaW5nRHJvcCht
X2lzUGVyZm9ybWluZ0Ryb3AsIHRydWUpOwogICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBp
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKSwgV1RGOjpudWxsb3B0LCBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9y
ZVNlbGVjdGlvbkNoYW5nZXMpOwogCkBAIC0xMzEyLDYgKzEzMjQsMTM1IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAgICAgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogfQogCit2b2lkIERy
YWdDb250cm9sbGVyOjpyZW1vdmVBbGxEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKQoreworICAg
IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRv
JiBwbGFjZWhvbGRlciA6IHN0ZDo6ZXhjaGFuZ2UobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMs
IHsgfSkpIHsKKyAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Nvbm5lY3RlZCgpKQorICAgICAg
ICAgICAgcGxhY2Vob2xkZXItPnJlbW92ZSgpOworICAgIH0KK30KKworYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQoreworICAgIEFTU0VSVCghbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKTsKKwor
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBd
LT5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZnJh
bWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJh
bmdlLCB0cnVlKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworCisg
ICAgaWYgKCFyZWFkZXIuZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IGltYWdlRWxlbWVudHM7CisgICAgZm9yIChhdXRv
JiBpbWFnZUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PigqcmVh
ZGVyLmZyYWdtZW50KSkKKyAgICAgICAgaW1hZ2VFbGVtZW50cy5hcHBlbmQoaW1hZ2VFbGVtZW50
KTsKKworICAgIGlmIChpbWFnZUVsZW1lbnRzLnNpemUoKSAhPSBtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50c1tpXTsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyc1tpXTsKKyAgICAgICAgcGxhY2Vob2xkZXItPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBpbWFnZUVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAg
IGlmIChhdXRvIGF0dGFjaG1lbnQgPSBpbWFnZUVsZW1lbnQtPmF0dGFjaG1lbnRFbGVtZW50KCkp
CisgICAgICAgICAgICBwbGFjZWhvbGRlci0+c2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
RHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29u
c3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKQoreworICAgIGF1dG8mIGNhcmV0Q29udHJv
bGxlciA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCk7CisgICAgaWYgKCFjYXJldENvbnRy
b2xsZXIuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkcm9wQ2FyZXQgPSBjYXJldENvbnRyb2xsZXIuY2FyZXRQb3NpdGlvbigpOworICAgIGlm
IChkcm9wQ2FyZXQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWUgPSBt
YWtlUmVmUHRyKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpm
cmFtZSwgV1RGOjpudWxsb3B0LCB7IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2Vs
ZWN0aW9uQ2hhbmdlcyB9KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKGRy
b3BDYXJldCk7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KCpkb2N1bWVudCk7CisgICAgZm9yIChhdXRvJiBzaXplIDogaW1hZ2VTaXplcykgeworICAgICAg
ICBBU1NFUlQoIXByZWZlcnJlZFNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRv
bVN0cmluZzo6bnVtYmVyKHNpemUud2lkdGgoKSAvIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkgLyBt
X3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCAxMDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSk7CisgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFs
cGhhKDAuMDUpLmNzc1RleHQoKSk7CisgICAgICAgIGltYWdlLT5zZXRJc0Ryb3BwZWRJbWFnZVBs
YWNlaG9sZGVyKCk7CisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgfQorCisgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmNyZWF0ZSgqZG9jdW1lbnQsIFdURk1vdmUoZnJhZ21lbnQpLCB7IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpQcmV2ZW50TmVzdGluZywgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVw
bGFjZSB9LCBFZGl0QWN0aW9uOjpJbnNlcnRGcm9tRHJvcCk7CisgICAgY29tbWFuZC0+YXBwbHko
KTsKKworICAgIGF1dG8gaW5zZXJ0ZWRDb250ZW50UmFuZ2UgPSBjb21tYW5kLT5pbnNlcnRlZENv
bnRlbnRSYW5nZSgpOworICAgIGlmICghaW5zZXJ0ZWRDb250ZW50UmFuZ2UpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNvbnRhaW5lciA9IG1ha2VSZWZQdHIoaW5zZXJ0ZWRDb250ZW50UmFuZ2UtPmNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyKCkpOworICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFZlY3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IHBsYWNlaG9sZGVyczsKKyAgICBm
b3IgKGF1dG8mIHBsYWNlaG9sZGVyIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEltYWdlRWxlbWVu
dD4oZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNvbnRhaW5lcikpKSB7CisgICAgICAgIGF1dG8g
aW50ZXJzZWN0c05vZGUgPSBpbnNlcnRlZENvbnRlbnRSYW5nZS0+aW50ZXJzZWN0c05vZGUocGxh
Y2Vob2xkZXIpOworICAgICAgICBpZiAoIWludGVyc2VjdHNOb2RlLmhhc0V4Y2VwdGlvbigpICYm
IGludGVyc2VjdHNOb2RlLnJldHVyblZhbHVlKCkpCisgICAgICAgICAgICBwbGFjZWhvbGRlcnMu
YXBwZW5kKHBsYWNlaG9sZGVyKTsKKyAgICB9CisKKyAgICBpZiAocGxhY2Vob2xkZXJzLnNpemUo
KSAhPSBpbWFnZVNpemVzLnNpemUoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGxh
Y2Vob2xkZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHBsYWNlaG9sZGVyID0gcGxh
Y2Vob2xkZXJzW2ldOworICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlU2l6ZXNbaV07Cisg
ICAgICAgIGRvdWJsZSBjbGllbnRXaWR0aCA9IHBsYWNlaG9sZGVyLT5jbGllbnRXaWR0aCgpOwor
ICAgICAgICBkb3VibGUgaGVpZ2h0UmVzcGVjdGluZ0FzcGVjdFJhdGlvID0gKGltYWdlU2l6ZS5o
ZWlnaHQoKSAqIGNsaWVudFdpZHRoKSAvIGltYWdlU2l6ZS53aWR0aCgpOworICAgICAgICBwbGFj
ZWhvbGRlci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omhl
aWdodEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihoZWlnaHRSZXNwZWN0aW5nQXNwZWN0UmF0aW8p
KTsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBtX2Ryb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyA9IFdURk1vdmUocGxhY2Vob2xkZXJzKTsKKyAgICBtX2Ryb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBXVEZNb3ZlKGluc2VydGVkQ29udGVudFJhbmdlKTsK
KworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5jbGVhcigpOworICAgIGNhcmV0Q29udHJvbGxlci5z
ZXRDYXJldFBvc2l0aW9uKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZS0+c3RhcnRQb3Np
dGlvbigpKTsKK30KKwordm9pZCBEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50JiBwbGFjZWhvbGRlcikKK3sKKyAgICBBU1NFUlQo
cGxhY2Vob2xkZXIuaXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpKTsKKyAgICBwbGFjZWhvbGRl
ci5yZW1vdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKTsKKyAgICBwbGFjZWhvbGRl
ci5yZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
K30KKwogLy8gTWFudWFsIGRyYWcgY2FyZXQgbWFuaXB1bGF0aW9uCiB2b2lkIERyYWdDb250cm9s
bGVyOjpwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggNzNmZWQwOWYxMGM1MjBjNTFiZjI4YmRm
NjRkMjFlY2M2YThkYjYzZC4uZDJiYTFmY2FiMTFjZjJiOWI4YzRhZDZjYmE3MWYwMzVjMjIzYWQy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
U2VsZWN0aW9uOworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1l
bnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKQEAgLTg4LDYgKzg5LDEyIEBAIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YWdFbmRlZCgpOwogICAgICAgICAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGFjZURy
YWdDYXJldChjb25zdCBJbnRQb2ludCYpOworCisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8SFRN
TEltYWdlRWxlbWVudD4+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKSBjb25zdCB7IHJldHVy
biBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyczsgfQorICAgICAgICBjb25zdCBSZWZQdHI8UmFu
Z2U+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9kcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlOyB9CisKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmaW5hbGl6ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNB
dENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAgICAgICAgIAogICAg
ICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3Bl
cmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBtYXhEcmFnSW1hZ2VTaXplKCk7CkBAIC0xMjgsNiAr
MTM1LDkgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CiAjZW5kaWYKICAgICAgICAg
fQogCisgICAgICAgIGJvb2wgdHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29u
c3QgRHJhZ0RhdGEmKTsKKyAgICAgICAgdm9pZCByZW1vdmVBbGxEcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcnMoKTsKKwogICAgICAgICBTdHJpbmcgcGxhdGZvcm1Db250ZW50VHlwZUZvckJsb2JUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJT
eXN0ZW1EcmFnKCk7CkBAIC0xNTIsNiArMTYyLDggQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm87CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICAgICAgVVJMIG1fZHJh
Z2dpbmdJbWFnZVVSTDsKICAgICAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9
OworICAgICAgICBWZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBtX2Ryb3BwZWRJbWFnZVBs
YWNlaG9sZGVyczsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9s
ZGVyUmFuZ2U7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEcmFnZ2FibGVM
aW5rKGNvbnN0IEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKaW5kZXggZjU1MjE5NjFiNmE5MDVkYmY3Njc4ZDAyM2Yx
NjIyNTU4MTk4NjBiYS4uNDc1Yzc5YWVkOWJhMjljMTA2ZThkNDQ2ZTIzMjg4ZGUyMWY3MmQ5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIFN0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7CiBT
dHJpbmcgTUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzRGVjbGFyZWRV
VEkoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgxMWZhNWYuLjY4YWY4MzQ1Y2Q2
ZjRjNmFjNzU4NGE5YWFlZjYxZGNmZTUwYWY3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC03NDQsNiArNzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFu
ZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7CiAgICAgdm9pZCByZXF1
ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uIGFsbG93ZWRBY3Rpb25zKTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNG
b3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIHdpbGxSZWNlaXZlRWRp
dERyYWdTbmFwc2hvdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0
aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKICAgICB2b2lkIGRpZENvbmNsdWRl
RHJvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4IGY1N2RiOWYwOWUxNWRiYzRlM2JkYzBiOTQwOTViNTA4
MTdlODE0ODkuLmQyZTBiOTA5ZmVjNTQ0YzUzMjk2MTYzMDJmOGY3YmFhYjk4MjIzYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmgKQEAgLTU5LDYgKzU5LDExIEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAg
IE5TSW50ZWdlciBpdGVtSWRlbnRpZmllciB7IDAgfTsKIH07CiAKK3N0cnVjdCBJdGVtQW5kUHJl
dmlldyB7CisgICAgUmV0YWluUHRyPFVJRHJhZ0l0ZW0+IGl0ZW07CisgICAgUmV0YWluUHRyPFVJ
VGFyZ2V0ZWREcmFnUHJldmlldz4gcHJldmlldzsKK307CisKIHN0cnVjdCBJdGVtQW5kUHJldmll
d1Byb3ZpZGVyIHsKICAgICBSZXRhaW5QdHI8VUlEcmFnSXRlbT4gaXRlbTsKICAgICBCbG9ja1B0
cjx2b2lkKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKT4gcHJvdmlkZXI7CkBAIC05OCwxMyArMTAz
LDE3IEBAIHB1YmxpYzoKICAgICBCbG9ja1B0cjx2b2lkKCk+IHRha2VEcmFnQ2FuY2VsU2V0RG93
bkJsb2NrKCkgeyByZXR1cm4gV1RGTW92ZShtX2RyYWdDYW5jZWxTZXREb3duQmxvY2spOyB9CiAg
ICAgQmxvY2tQdHI8dm9pZChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKik+IHRha2VBZGREcmFnSXRl
bUNvbXBsZXRpb25CbG9jaygpIHsgcmV0dXJuIFdURk1vdmUobV9hZGREcmFnSXRlbUNvbXBsZXRp
b25CbG9jayk7IH0KIAorICAgIHZvaWQgc2V0RGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0g
KiwgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopOwogICAgIHZvaWQgcHJlcGFyZUZvckRlbGF5ZWRE
cm9wUHJldmlldyhVSURyYWdJdGVtICosIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKnByZXZpZXcpKTsKICAgICB2b2lkIGRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlW
aWV3ICpjb250ZW50VmlldywgVUlWaWV3ICpwcmV2aWV3Q29udGFpbmVyLCBjb25zdCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YSYpOworICAgIHZvaWQgZGVsaXZlckRlbGF5ZWREcm9wUHJldmll
dyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBDR1JlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0LCBOU0Fy
cmF5PFVJRHJhZ0l0ZW0gKj4gKiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwbGFj
ZWhvbGRlclJlY3RzKTsKICAgICB2b2lkIGNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlk
ZXJzKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdT
b3VyY2VzKCk7CiAgICAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBhY3RpdmVEcmFnU291cmNl
Rm9ySXRlbShVSURyYWdJdGVtICopIGNvbnN0OworICAgIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAq
ZGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKikgY29uc3Q7CisgICAgQmxvY2tQdHI8dm9p
ZChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKik+IGRyb3BQcmV2aWV3UHJvdmlkZXIoVUlEcmFnSXRl
bSAqKTsKIAogICAgIENHUG9pbnQgbV9sYXN0R2xvYmFsUG9zaXRpb24geyBDR1BvaW50WmVybyB9
OwogICAgIENHUG9pbnQgbV9hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCB7IENHUG9pbnRaZXJv
IH07CkBAIC0xMTksNiArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxEcmFnU291cmNl
U3RhdGU+IG1fc3RhZ2VkRHJhZ1NvdXJjZTsKICAgICBWZWN0b3I8RHJhZ1NvdXJjZVN0YXRlPiBt
X2FjdGl2ZURyYWdTb3VyY2VzOwogICAgIFZlY3RvcjxJdGVtQW5kUHJldmlld1Byb3ZpZGVyPiBt
X2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVyczsKKyAgICBWZWN0b3I8SXRlbUFuZFByZXZpZXc+
IG1fZGVmYXVsdERyb3BQcmV2aWV3czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUubW0KaW5kZXggYWYyNzZhMzAzMDkyZTA2YTgwODk0NzM3MDllOWJhY2UxZWVlNGQ5NC4u
OWE0NzlkZTFiNjQ3YjA5MzJkNjQzMmZhM2NhNDYwM2MxOTM2ZmIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
CkBAIC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oIgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogCkBAIC0xODUsNiArMTg2LDMxIEBAIHZvaWQg
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkcmFnU2Vzc2lvbldpbGxCZWdpbigpCiAgICAgdXBk
YXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwogfQogCit2b2lkIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6c2V0RGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKml0ZW0sIFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqcHJldmlldykKK3sKKyAgICBtX2RlZmF1bHREcm9wUHJldmll
d3MuYXBwZW5kKHsgaXRlbSwgcHJldmlldyB9KTsKK30KKworVUlUYXJnZXRlZERyYWdQcmV2aWV3
ICpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJdGVt
ICppdGVtKSBjb25zdAoreworICAgIGF1dG8gbWF0Y2hJbmRleCA9IG1fZGVmYXVsdERyb3BQcmV2
aWV3cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBpdGVtQW5kUHJldmlldykgeworICAgICAgICBy
ZXR1cm4gaXRlbUFuZFByZXZpZXcuaXRlbSA9PSBpdGVtOworICAgIH0pOworICAgIHJldHVybiBt
YXRjaEluZGV4ID09IG5vdEZvdW5kID8gbmlsIDogbV9kZWZhdWx0RHJvcFByZXZpZXdzW21hdGNo
SW5kZXhdLnByZXZpZXcuZ2V0KCk7Cit9CisKK0Jsb2NrUHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQ
cmV2aWV3ICopPiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRyb3BQcmV2aWV3UHJvdmlkZXIo
VUlEcmFnSXRlbSAqaXRlbSkKK3sKKyAgICBhdXRvIG1hdGNoSW5kZXggPSBtX2RlbGF5ZWRJdGVt
UHJldmlld1Byb3ZpZGVycy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBpdGVtQW5kUHJvdmlkZXIp
IHsKKyAgICAgICAgcmV0dXJuIGl0ZW1BbmRQcm92aWRlci5pdGVtID09IGl0ZW07CisgICAgfSk7
CisKKyAgICBpZiAobWF0Y2hJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIHJldHVybiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVyc1ttYXRjaEluZGV4XS5w
cm92aWRlcjsKK30KKwogdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnByZXBhcmVGb3JE
ZWxheWVkRHJvcFByZXZpZXcoVUlEcmFnSXRlbSAqaXRlbSwgdm9pZChecHJvdmlkZXIpKFVJVGFy
Z2V0ZWREcmFnUHJldmlldyAqcHJldmlldykpCiB7CiAgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQ
cm92aWRlcnMuYXBwZW5kKHsgaXRlbSwgcHJvdmlkZXIgfSk7CkBAIC0yMDIsNiArMjI4LDU2IEBA
IHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3
KFVJVmlldyAqY29udGVudFZpZXcsIFVJCiAgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRl
cnMuY2xlYXIoKTsKIH0KIAordm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRlbGl2ZXJE
ZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpjb250ZW50VmlldywgQ0dSZWN0IHVub2JzY3VyZWRD
b250ZW50UmVjdCwgTlNBcnJheTxVSURyYWdJdGVtICo+ICppdGVtcywgY29uc3QgVmVjdG9yPElu
dFJlY3Q+JiBwbGFjZWhvbGRlclJlY3RzKQoreworICAgIGlmIChpdGVtcy5jb3VudCAhPSBwbGFj
ZWhvbGRlclJlY3RzLnNpemUoKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwg
IkZhaWxlZCB0byBhbmltYXRlIGltYWdlIHBsYWNlaG9sZGVyczogbnVtYmVyIG9mIGRyYWcgaXRl
bXMgKCV0dSkgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIHBsYWNlaG9sZGVycyAoJXR1KSIsIGl0
ZW1zLmNvdW50LCBwbGFjZWhvbGRlclJlY3RzLnNpemUoKSk7CisgICAgICAgIGNsZWFyQWxsRGVs
YXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsYWNlaG9sZGVyUmVjdHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgVUlEcmFnSXRlbSAqaXRlbSA9IFtpdGVtcyBvYmplY3RBdEluZGV4OmldOworICAg
ICAgICBhdXRvJiBwbGFjZWhvbGRlclJlY3QgPSBwbGFjZWhvbGRlclJlY3RzW2ldOworICAgICAg
ICBhdXRvIHByb3ZpZGVyID0gZHJvcFByZXZpZXdQcm92aWRlcihpdGVtKTsKKyAgICAgICAgaWYg
KCFwcm92aWRlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gZGVmYXVs
dFByZXZpZXcgPSBkZWZhdWx0RHJvcFByZXZpZXcoaXRlbSk7CisgICAgICAgIGF1dG8gZGVmYXVs
dFByZXZpZXdTaXplID0gW2RlZmF1bHRQcmV2aWV3IHNpemVdOworICAgICAgICBpZiAoIWRlZmF1
bHRQcmV2aWV3IHx8IGRlZmF1bHRQcmV2aWV3U2l6ZS53aWR0aCA8PSAwIHx8IGRlZmF1bHRQcmV2
aWV3U2l6ZS5oZWlnaHQgPD0gMCB8fCBwbGFjZWhvbGRlclJlY3QuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBwcm92aWRlcihuaWwpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICBGbG9hdFJlY3QgcHJldmlld0ludGVyc2VjdGlvblJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KENHUmVjdEludGVyc2VjdGlvbih1bm9ic2N1cmVkQ29udGVudFJlY3QsIHBsYWNlaG9s
ZGVyUmVjdCkpOworICAgICAgICBpZiAocHJldmlld0ludGVyc2VjdGlvblJlY3QuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgcHJldmlldyByZWN0IGlzIGNvbXBsZXRlbHkgb2Zm
c2NyZWVuLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNsaXAgb3V0IG9yIHNjYWxlIHRoZSBkZWZh
dWx0IHByZXZpZXc7CisgICAgICAgICAgICAvLyBzaW1wbHkgcmV0YXJnZXQgdGhlIGRlZmF1bHQg
cHJldmlldy4KKyAgICAgICAgICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZp
ZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOmNvbnRlbnRWaWV3IGNlbnRlcjpwbGFj
ZWhvbGRlclJlY3QuY2VudGVyKCldKTsKKyAgICAgICAgICAgIHByb3ZpZGVyKFtkZWZhdWx0UHJl
dmlldyByZXRhcmdldGVkUHJldmlld1dpdGhUYXJnZXQ6dGFyZ2V0LmdldCgpXSk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcHJldmlld0JvdW5kcyA9
IFtkZWZhdWx0UHJldmlldyB2aWV3XS5ib3VuZHM7CisgICAgICAgIGF1dG8gaW5zZXRQcmV2aWV3
Qm91bmRzID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHByZXZpZXdCb3VuZHMsIHsKKyAgICAgICAg
ICAgIChwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC55KCkgLSBwbGFjZWhvbGRlclJlY3QueSgpKSAv
IHBsYWNlaG9sZGVyUmVjdC5oZWlnaHQoKSAqIHByZXZpZXdCb3VuZHMuc2l6ZS5oZWlnaHQsCisg
ICAgICAgICAgICAocHJldmlld0ludGVyc2VjdGlvblJlY3QueCgpIC0gcGxhY2Vob2xkZXJSZWN0
LngoKSkgLyBwbGFjZWhvbGRlclJlY3Qud2lkdGgoKSAqIHByZXZpZXdCb3VuZHMuc2l6ZS53aWR0
aCwKKyAgICAgICAgICAgIChwbGFjZWhvbGRlclJlY3QubWF4WSgpIC0gcHJldmlld0ludGVyc2Vj
dGlvblJlY3QubWF4WSgpKSAvIHBsYWNlaG9sZGVyUmVjdC5oZWlnaHQoKSAqIHByZXZpZXdCb3Vu
ZHMuc2l6ZS5oZWlnaHQsCisgICAgICAgICAgICAocGxhY2Vob2xkZXJSZWN0Lm1heFgoKSAtIHBy
ZXZpZXdJbnRlcnNlY3Rpb25SZWN0Lm1heFgoKSkgLyBwbGFjZWhvbGRlclJlY3Qud2lkdGgoKSAq
IHByZXZpZXdCb3VuZHMuc2l6ZS53aWR0aAorICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHRy
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHBsYWNlaG9sZGVyUmVjdC53aWR0
aCgpIC8gZGVmYXVsdFByZXZpZXdTaXplLndpZHRoLCBwbGFjZWhvbGRlclJlY3QuaGVpZ2h0KCkg
LyBkZWZhdWx0UHJldmlld1NpemUuaGVpZ2h0KTsKKyAgICAgICAgYXV0byB0YXJnZXQgPSBhZG9w
dE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10gaW5pdFdpdGhDb250YWluZXI6Y29udGVu
dFZpZXcgY2VudGVyOnByZXZpZXdJbnRlcnNlY3Rpb25SZWN0LmNlbnRlcigpIHRyYW5zZm9ybTp0
cmFuc2Zvcm1dKTsKKyAgICAgICAgVUlQcmV2aWV3UGFyYW1ldGVycyAqcGFyYW1ldGVycyA9IFtk
ZWZhdWx0UHJldmlldyBwYXJhbWV0ZXJzXTsKKyAgICAgICAgcGFyYW1ldGVycy52aXNpYmxlUGF0
aCA9IFtVSUJlemllclBhdGggYmV6aWVyUGF0aFdpdGhSZWN0Omluc2V0UHJldmlld0JvdW5kc107
CisgICAgICAgIGF1dG8gbmV3UHJldmlldyA9IGFkb3B0TlMoW1tVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgYWxsb2NdIGluaXRXaXRoVmlldzpbZGVmYXVsdFByZXZpZXcgdmlld10gcGFyYW1ldGVyczpw
YXJhbWV0ZXJzIHRhcmdldDp0YXJnZXQuZ2V0KCldKTsKKyAgICAgICAgcHJvdmlkZXIobmV3UHJl
dmlldy5nZXQoKSk7CisgICAgfQorCisgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMu
Y2xlYXIoKTsKK30KKwogdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmNsZWFyQWxsRGVs
YXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZW1BbmRQcmV2
aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApp
bmRleCA5NDY2MTg2OTFiNGNkZDlmOGU3NTZhYzhiNzM5ODlkNzFhM2FkOGUzLi5mMDMxOGFmMTM5
MzkzNTQ2MzBkZDhmZTkwY2JkZDBjZDIyOGJlM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zNTMsNiAr
MzUzLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogICAgIEJPT0wgX2ZvY3Vz
UmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7CiAgICAgQk9PTCBfd2FpdGluZ0ZvckVk
aXREcmFnU25hcHNob3Q7CisgICAgTlNJbnRlZ2VyIF9kcm9wQW5pbWF0aW9uQ291bnQ7CiAKICAg
ICBCT09MIF9oYXNTZXRVcEludGVyYWN0aW9uczsKICAgICBOU1VJbnRlZ2VyIF9pZ25vcmVTZWxl
Y3Rpb25Db21tYW5kRmFkZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDRlOGRkODZjMzIzZTdi
ZGYyZTQ1ZjQ4NzMzMDA5M2YwNzRhMGQ0MC4uZjZkOTk5Nzg3MjhlOTZlOGI2ZDJmZmY5MWY3YTU1
ODk3MmRlNTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05Myw2ICs5Myw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0lucHV0TW9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlFdmVudENvZGVzSU9TLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGguaD4K
QEAgLTEwMiw2ICsxMDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgpAQCAtNjcwNSw2ICs2NzA3LDkgQEAgLSAodm9p
ZClfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6KE9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXQKICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRv
cHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJ
bWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0g
YWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250
ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFw
c2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlc107CkBAIC02OTcxLDYgKzY5NzYsNzIgQEAgLSAodm9pZClzZWxlY3RQ
b3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9j
dW1lbnRSZXEKIAogI2VuZGlmCiAKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6
ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0ZW1zKE5TQXJyYXk8
TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6
OkludFNpemU+IHNpemVzOworICAgIGZvciAoTlNJdGVtUHJvdmlkZXIgKml0ZW0gaW4gaXRlbVBy
b3ZpZGVycykgeworICAgICAgICBpZiAoIVdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShXZWJDb3JlOjpNSU1FVHlwZUZyb21VVEkoaXRlbS53ZWJfZmls
ZVVwbG9hZENvbnRlbnRUeXBlcy5maXJzdE9iamVjdCkpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHByZXNlbnRhdGlvblNpemUoaXRlbS5wcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKTsKKyAgICAgICAgaWYgKHByZXNlbnRhdGlvblNpemUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBzaXplcy5hcHBlbmQo
V1RGTW92ZShwcmVzZW50YXRpb25TaXplKSk7CisgICAgfQorICAgIHJldHVybiBzaXplczsKK30K
KworLSAoQk9PTClfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6KE5TQXJy
YXk8TlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzIHNlc3Npb246KGlkIDxVSURyb3BT
ZXNzaW9uPilzZXNzaW9uCit7CisgICAgaWYgKCFfd2ViVmlldy5fZWRpdGFibGUpCisgICAgICAg
IHJldHVybiBOTzsKKworICAgIGlmIChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRyYWdTZXNz
aW9uKCkpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGlmIChzZXNzaW9uLml0ZW1zLmNvdW50
ICE9IGl0ZW1Qcm92aWRlcnMuY291bnQpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGF1dG8g
aW1hZ2VQbGFjZWhvbGRlclNpemVzID0gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2Vy
dFdoZW5Ecm9wcGluZ0l0ZW1zKGl0ZW1Qcm92aWRlcnMpOworICAgIGlmIChpbWFnZVBsYWNlaG9s
ZGVyU2l6ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBSRUxFQVNFX0xP
RyhEcmFnQW5kRHJvcCwgIkluc2VydGluZyBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVycyBmb3Ig
c2Vzc2lvbjogJXAiLCBzZXNzaW9uKTsKKworICAgIF9wYWdlLT5pbnNlcnREcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnMoaW1hZ2VQbGFjZWhvbGRlclNpemVzLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgZHJhZ0l0ZW1zID0gcmV0YWluUHRyKHNlc3Npb24uaXRlbXMpXSAoYXV0byYg
cGxhY2Vob2xkZXJSZWN0cywgYXV0byBkYXRhKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gcHJv
dGVjdGVkU2VsZi0+X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTsKKyAgICAgICAgaWYgKCFkYXRh
IHx8ICFwcm90ZWN0ZWRTZWxmLT5fZHJvcEFuaW1hdGlvbkNvdW50KSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBhbmltYXRlIGltYWdlIHBsYWNlaG9s
ZGVyczogbWlzc2luZyB0ZXh0IGluZGljYXRvciBkYXRhLiIpOworICAgICAgICAgICAgc3RhdGUu
Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc25hcHNob3RXaXRob3V0U2VsZWN0aW9uID0g
ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKKyAgICAgICAgaWYgKCFzbmFwc2hv
dFdpdGhvdXRTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9w
LCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBtaXNzaW5nIHVuc2VsZWN0
ZWQgY29udGVudCBpbWFnZS4iKTsKKyAgICAgICAgICAgIHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0
ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvIHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2Vs
ZWN0aW9uLT5uYXRpdmVJbWFnZSgpOworICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBh
bmltYXRlIGltYWdlIHBsYWNlaG9sZGVyczogY291bGQgbm90IGRlY29kZSB1bnNlbGVjdGVkIGNv
bnRlbnQgaW1hZ2UuIik7CisgICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERlbGF5ZWRJdGVtUHJl
dmlld1Byb3ZpZGVycygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgp
IHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0
aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgICAgIGF1dG8gc25hcHNob3RWaWV3ID0g
YWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250
ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOworICAgICAgICBbc25hcHNob3RWaWV3IHNldEZy
YW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzXTsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYgYWRkU3VidmlldzpzbmFwc2hvdFZpZXcu
Z2V0KCldOworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hv
dCA9IFdURk1vdmUoc25hcHNob3RWaWV3KTsKKyAgICAgICAgc3RhdGUuZGVsaXZlckRlbGF5ZWRE
cm9wUHJldmlldyhwcm90ZWN0ZWRTZWxmLmdldCgpLCBbcHJvdGVjdGVkU2VsZiB1bm9ic2N1cmVk
Q29udGVudFJlY3RdLCBkcmFnSXRlbXMuZ2V0KCksIHBsYWNlaG9sZGVyUmVjdHMpOworICAgIH0p
OworCisgICAgcmV0dXJuIFlFUzsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlEcmFnSW50ZXJhY3Rp
b25EZWxlZ2F0ZQogCiAtIChCT09MKV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9u
ICopaW50ZXJhY3Rpb24gc2hvdWxkRGVsYXlDb21wZXRpbmdHZXN0dXJlUmVjb2duaXplcjooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWNvbXBldGluZ0dlc3R1cmVSZWNvZ25pemVyCkBAIC03MjUxLDYg
KzczMjIsNyBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilp
bnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJvcAogICAgIFtbV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZCBzaGFyZWRJbnN0YW5jZV0gc2V0SXRlbVByb3ZpZGVyczppdGVtUHJvdmlkZXJz
XTsKICAgICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGluY3Jl
bWVudFBlbmRpbmdPcGVyYXRpb25Db3VudF07CiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRy
YWdEYXRhRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBkcmFnRGVzdGluYXRpb25BY3Rpb246V0tEcmFn
RGVzdGluYXRpb25BY3Rpb25BbnldOworICAgIEJPT0wgc2hvdWxkU25hcHNob3RWaWV3ID0gIVtz
ZWxmIF9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBsYWNlaG9sZGVyczppdGVtUHJvdmlkZXJz
IHNlc3Npb246c2Vzc2lvbl07CiAKICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkxvYWRp
bmcgZGF0YSBmcm9tICV0dSBpdGVtIHByb3ZpZGVycyBmb3Igc2Vzc2lvbjogJXAiLCBpdGVtUHJv
dmlkZXJzLmNvdW50LCBzZXNzaW9uKTsKICAgICAvLyBBbHdheXMgbG9hZGluZyBjb250ZW50IGZy
b20gdGhlIGl0ZW0gcHJvdmlkZXIgZW5zdXJlcyB0aGF0IHRoZSB3ZWIgcHJvY2VzcyB3aWxsIGJl
IGFsbG93ZWQgdG8gY2FsbCBiYWNrIGluIHRvIHRoZSBVSQpAQCAtNzI1OCw3ICs3MzMwLDcgQEAg
LSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24g
cGVyZm9ybURyb3A6KGlkIDxVSURyb3AKICAgICAvLyBvciB0aGUgcGFnZSBwcmV2ZW50ZWQgZGVm
YXVsdCBvbiBgZHJhZ292ZXJgLCBidXQgd2l0aG91dCB0aGlzLCBkcm9wcGluZyBpbnRvIGEgbm9y
bWFsIGVkaXRhYmxlIGFyZWFzIHdpbGwgZmFpbCBkdWUgdG8KICAgICAvLyBpdGVtIHByb3ZpZGVy
cyBub3QgbG9hZGluZyBhbnkgZGF0YS4KICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gcmV0
YWluZWRTZWxmKHNlbGYpOwotICAgIFtbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJ
bnN0YW5jZV0gZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6W3JldGFp
bmVkU2VsZiwgY2FwdHVyZWREcmFnRGF0YSA9IFdURk1vdmUoZHJhZ0RhdGEpXSAoTlNBcnJheSAq
ZmlsZVVSTHMpIG11dGFibGUgeworICAgIFtbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFy
ZWRJbnN0YW5jZV0gZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6W3Jl
dGFpbmVkU2VsZiwgY2FwdHVyZWREcmFnRGF0YSA9IFdURk1vdmUoZHJhZ0RhdGEpLCBzaG91bGRT
bmFwc2hvdFZpZXddIChOU0FycmF5ICpmaWxlVVJMcykgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKERyYWdBbmREcm9wLCAiTG9hZGVkIGRhdGEgaW50byAldHUgZmlsZXMiLCBmaWxlVVJM
cy5jb3VudCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lczsKICAgICAgICAgZm9y
IChOU1VSTCAqZmlsZVVSTCBpbiBmaWxlVVJMcykKQEAgLTcyNjksMTggKzczNDEsMjAgQEAgLSAo
dm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcGVy
Zm9ybURyb3A6KGlkIDxVSURyb3AKICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkOwogICAgICAgICByZXRhaW5lZFNl
bGYtPl9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGZpbGVuYW1lcywgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CiAgICAgICAg
IHJldGFpbmVkU2VsZi0+X3BhZ2UtPnBlcmZvcm1EcmFnT3BlcmF0aW9uKGNhcHR1cmVkRHJhZ0Rh
dGEsICJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpKTsKLSAgICAgICAg
cmV0YWluZWRTZWxmLT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgPSBbcmV0YWluZWRTZWxm
IHNuYXBzaG90Vmlld0FmdGVyU2NyZWVuVXBkYXRlczpOT107Ci0gICAgICAgIFtVSVZpZXcgcGVy
Zm9ybVdpdGhvdXRBbmltYXRpb246W3JldGFpbmVkU2VsZl0geworICAgICAgICBpZiAoc2hvdWxk
U25hcHNob3RWaWV3KSB7CisgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl92aXNpYmxlQ29udGVu
dFZpZXdTbmFwc2hvdCA9IFtyZXRhaW5lZFNlbGYgc25hcHNob3RWaWV3QWZ0ZXJTY3JlZW5VcGRh
dGVzOk5PXTsKICAgICAgICAgICAgIFtyZXRhaW5lZFNlbGYtPl92aXNpYmxlQ29udGVudFZpZXdT
bmFwc2hvdCBzZXRGcmFtZTpbcmV0YWluZWRTZWxmIGJvdW5kc11dOwogICAgICAgICAgICAgW3Jl
dGFpbmVkU2VsZiBhZGRTdWJ2aWV3OnJldGFpbmVkU2VsZi0+X3Zpc2libGVDb250ZW50Vmlld1Nu
YXBzaG90LmdldCgpXTsKLSAgICAgICAgfV07CisgICAgICAgIH0KICAgICB9XTsKIH0KIAogLSAo
dm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gaXRl
bTooVUlEcmFnSXRlbSAqKWl0ZW0gd2lsbEFuaW1hdGVEcm9wV2l0aEFuaW1hdG9yOihpZCA8VUlE
cmFnQW5pbWF0aW5nPilhbmltYXRvcgogeworICAgIF9kcm9wQW5pbWF0aW9uQ291bnQrKzsKICAg
ICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpbc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KFVJVmlld0FuaW1hdGluZ1Bvc2l0aW9uKSB7Ci0gICAgICAgIFtzdGQ6OmV4Y2hhbmdlKHN0cm9u
Z1NlbGYtPl91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90LCBuaWwpIHJlbW92ZUZyb21TdXBlcnZp
ZXddOworICAgICAgICBpZiAoIS0tc3Ryb25nU2VsZi0+X2Ryb3BBbmltYXRpb25Db3VudCkKKyAg
ICAgICAgICAgIFtzdGQ6OmV4Y2hhbmdlKHN0cm9uZ1NlbGYtPl91bnNlbGVjdGVkQ29udGVudFNu
YXBzaG90LCBuaWwpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIH1dOwogfQogCkBAIC03Mjk0
LDYgKzczNjgsOCBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24g
KilpbnRlcmFjdGlvbiBjb25jbHVkZURyb3A6KGlkIDxVSURybwogCiAtIChVSVRhcmdldGVkRHJh
Z1ByZXZpZXcgKilkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rp
b24gcHJldmlld0ZvckRyb3BwaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6
KFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRlZmF1bHRQcmV2aWV3CiB7CisgICAgX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5zZXREZWZhdWx0RHJvcFByZXZpZXcoaXRlbSwgZGVmYXVsdFByZXZp
ZXcpOworCiAgICAgQ0dSZWN0IGNhcmV0UmVjdCA9IF9wYWdlLT5jdXJyZW50RHJhZ0NhcmV0UmVj
dCgpOwogICAgIGlmIChDR1JlY3RJc0VtcHR5KGNhcmV0UmVjdCkpCiAgICAgICAgIHJldHVybiBu
aWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCAwZDhkOGZkYmYxYTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5jMjFlNDk2ZjBk
NTBjOGRiMDdiZTE0YTUyNzA5ZjBkNmMxN2YyMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEyMTUsNiArMTIxNSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IEludFBvaW50JiBjbGllbnRQbwogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjbGllbnRQb3NpdGlv
biwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdlSUQpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZl
Y3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQorICAg
ICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoaW1hZ2VTaXplcyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCk7Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQogewogICAgIHBhZ2VDbGllbnQo
KS53aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkZjFjODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3
YWEyZDEyNTg2Li5lNjNmYmZmZDdiOTM4NGYxNmFkNGU1YTFmZGIzZThkYjU1NTMxYTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjg5LDYgKzEy
ODksNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEQVRB
X0lOVEVSQUNUSU9OKQogICAgIHZvaWQgcmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIGNvbXB1dGVBbmRTZW5kRWRpdERy
YWdTbmFwc2hvdCgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1
YWUyYjcyYjY2OTUwNDg5Y2FlMzcuLmVlNjZiM2QyMzY5OTU5OTE4N2ZmOWM3ZTQ3YmY0ZWMwNTQ4
MmE5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtMzEwLDYgKzMxMCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBSZXF1ZXN0RHJhZ1N0YXJ0KFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCiAg
ICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0
X3QgYWxsb3dlZEFjdGlvbnMpCisgICAgSW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKFZl
Y3RvcjxXZWJDb3JlOjpJbnRTaXplPiBpbWFnZVNpemUpIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gZHJvcFByZXZpZXdSZWN0cywgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRh
dGE+IHRleHRJbmRpY2F0b3IpIEFzeW5jCiAgICAgRGlkQ29uY2x1ZGVEcm9wKCkKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDM4ZTFiOTU1NzU3M2Q2MWY3ZjNjMWIyZGFlMDAwNTYwNjg4MDA5NGEuLjk5OGEz
Y2I0ZDQ4NTU3NGVjZjhkOTE5MDMxYjMxZmU2MzU0OGM5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC04OTQsNiArODk0
LDMzIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9u
KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFn
KSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNv
bnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YT4pPiYmIHJlcGx5KQoreworICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5pbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGltYWdlU2l6ZXMpOworICAgIGF1dG8gcGxhY2Vo
b2xkZXJSZWN0cyA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcnMoKS5tYXAoWyZdIChhdXRvJiBlbGVtZW50KSB7CisgICAgICAgIHJldHVybiByb290Vmll
d0JvdW5kc0ZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgfSk7CisKKyAgICBhdXRvIGltYWdlUGxh
Y2Vob2xkZXJSYW5nZSA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlclJhbmdlKCk7CisgICAgaWYgKHBsYWNlaG9sZGVyUmVjdHMuaXNFbXB0eSgpIHx8ICFp
bWFnZVBsYWNlaG9sZGVyUmFuZ2UpIHsKKyAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRh
dGE+IHRleHRJbmRpY2F0b3JEYXRhOworICAgIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9u
PiB0ZXh0SW5kaWNhdG9yT3B0aW9ucyA9IHsKKyAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uLAorICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uRXhwYW5kQ2xpcEJleW9uZFZpc2libGVSZWN0LAorICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRBbGxDb250ZW50LAorICAgICAgICBUZXh0SW5kaWNh
dG9yT3B0aW9uVXNlU2VsZWN0aW9uUmVjdEZvclNpemluZworICAgIH07CisKKyAgICBpZiAoYXV0
byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCppbWFnZVBs
YWNlaG9sZGVyUmFuZ2UsIHRleHRJbmRpY2F0b3JPcHRpb25zLnRvUmF3KCksIFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCB7IH0pKQorICAgICAgICB0ZXh0SW5kaWNh
dG9yRGF0YSA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKKworICAgIHJlcGx5KFdURk1vdmUocGxh
Y2Vob2xkZXJSZWN0cyksIFdURk1vdmUodGV4dEluZGljYXRvckRhdGEpKTsKK30KKwogdm9pZCBX
ZWJQYWdlOjpkaWRDb25jbHVkZURyb3AoKQogewogICAgIG1fcmFuZ2VGb3JEcm9wU25hcHNob3Qg
PSBudWxscHRyOwpAQCAtOTIzLDYgKzk1MCw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVF
ZGl0RHJhZygpCiAKIHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVu
dChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogeworICAgIGlmIChlbGVtZW50
LmlzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKSkKKyAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoZWxlbWVudCk7CisKICAgICBp
ZiAobV9wZW5kaW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378536</attachid>
            <date>2019-09-10 21:09:39 -0700</date>
            <delta_ts>2019-09-11 13:36:25 -0700</delta_ts>
            <desc>For EWS (debug build fix)</desc>
            <filename>bug-201674-20190910210938.patch</filename>
            <type>text/plain</type>
            <size>38628</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDliYzgwNTY0YTY3ZGFj
YWRjNWJhMjQ5M2I5MzRkZWQxZWU1MzAyNi4uMzU4Y2RhM2E4NWYzZDA0ODMyYzEyYzk1NjJkN2Qy
Nzk5ZmNlMGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA5LTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Ag
YW5pbWF0aW9uIHdoZW4gZHJhZ2dpbmcgaW1hZ2VzIGZyb20gUGhvdG9zIHRvIFdlYktpdDIgTWFp
bCBjb21wb3NlIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTI1MDk1Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAgcGF0
Y2guCisKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0SXNEcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6cmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNl
aG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aW5zZXJ0RHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6CisKIDIwMTktMDktMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IHNlbGVj
dGlvbiByZWN0IHJldmVhbGVkIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGEgY29udGVudGVkaXRh
YmxlIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDE5NTEzOTRlNjA2Njc5NTIxMDRjOWY1Y2UzOWFiYzdj
NDhmMjAzNS4uMDEzNTg4ZTRlNjI1YThjNDY4Y2Q4MDhmNzM2MGRlMDQ4YWU1OGRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0wOS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEcm9wIGFuaW1hdGlvbiB3aGVuIGRyYWdn
aW5nIGltYWdlcyBmcm9tIFBob3RvcyB0byBXZWJLaXQyIE1haWwgY29tcG9zZSBpcyBpbmNvcnJl
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEyNTA5NTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQIHBhdGNoLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6c2V0RGVmYXVsdERyb3BQcmV2aWV3KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlOjpkZWZhdWx0RHJvcFByZXZpZXcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpCbG9ja1B0cjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxp
dmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTpdKToKKyAgICAgICAgKHNpemVzT2ZQbGFj
ZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOnNlc3Np
b246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnBlcmZvcm1E
cm9wOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjppdGVtOndp
bGxBbmltYXRlRHJvcFdpdGhBbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBk
cm9wSW50ZXJhY3Rpb246cHJldmlld0ZvckRyb3BwaW5nSXRlbTp3aXRoRGVmYXVsdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5p
c2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKwogMjAxOS0wOS0wNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3Qgc2VsZWN0aW9uIHJl
Y3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250ZW50ZWRpdGFibGUgZWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA0ZWE4OTMwYTZj
OTkzYzE2OWU5MmE0MDgwMjU4ZjRiYmE1NDljNzU0Li44NTZlYjg4Njg3YTgzNThiMWI3ZTE5NTY4
NjAxOGU1NjM2MTI0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJzZXI7IH0KIAorICAgIGJvb2wgaXNEcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcjsgfQorICAgIHZvaWQgc2V0SXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpIHsgbV9pc0Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVyID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqID0gbnVsbHB0ciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7CiAKQEAgLTE4OSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9leHBlcmltZW50YWxJbWFnZU1lbnVFbmFi
bGVkOwogICAgIGJvb2wgbV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCB7IGZhbHNlIH07
IC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHBhcnNlQXR0cmlidXRlKCkgY2Fu
J3Qgc2VlIHRoZSBvbGQgdmFsdWUuCiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlciB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U+IG1fZWRpdGFibGVJbWFnZTsKICAgICBX
ZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDVjZjNkYWQ3OGUyNzJjMmY3N2NiMGE1OGQw
Njc2YjU0Y2JmYmUwZi4uNGI4ODZlZGU2NDA2ZmRjNjFiNzcyMjVlMWI5Yzk4NDNiMmZlNzRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0yMDYsNiArMjA3
LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2RpZEluaXRpYXRl
RHJhZyA9IGZhbHNlOwogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBj
bGVhckRyYWdDYXJldCgpOworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygp
OwogICAgIAogICAgIG1fY2xpZW50LmRyYWdFbmRlZCgpOwogfQpAQCAtMjM4LDYgKzI0MCwxNiBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgZHJhZ0lzSGFuZGxlZEJ5RG9jdW1lbnQoRHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZAogCiBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CisgICAgaWYgKCFtX2Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVycy5pc0VtcHR5KCkgJiYgbV9kcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlclJhbmdlICYmIHRyeVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGRyYWdEYXRh
KSkgeworICAgICAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycy5jbGVhcigpOworICAgICAg
ICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBudWxscHRyOworICAgICAgICBtX2Rv
Y3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycygpOworCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNQZXJmb3JtaW5nRHJvcCht
X2lzUGVyZm9ybWluZ0Ryb3AsIHRydWUpOwogICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBp
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKSwgV1RGOjpudWxsb3B0LCBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9y
ZVNlbGVjdGlvbkNoYW5nZXMpOwogCkBAIC0xMzEyLDYgKzEzMjQsMTM1IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAgICAgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogfQogCit2b2lkIERy
YWdDb250cm9sbGVyOjpyZW1vdmVBbGxEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKQoreworICAg
IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRv
JiBwbGFjZWhvbGRlciA6IHN0ZDo6ZXhjaGFuZ2UobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMs
IHsgfSkpIHsKKyAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Nvbm5lY3RlZCgpKQorICAgICAg
ICAgICAgcGxhY2Vob2xkZXItPnJlbW92ZSgpOworICAgIH0KK30KKworYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQoreworICAgIEFTU0VSVCghbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKTsKKwor
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBd
LT5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZnJh
bWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJh
bmdlLCB0cnVlKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworCisg
ICAgaWYgKCFyZWFkZXIuZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IGltYWdlRWxlbWVudHM7CisgICAgZm9yIChhdXRv
JiBpbWFnZUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PigqcmVh
ZGVyLmZyYWdtZW50KSkKKyAgICAgICAgaW1hZ2VFbGVtZW50cy5hcHBlbmQoaW1hZ2VFbGVtZW50
KTsKKworICAgIGlmIChpbWFnZUVsZW1lbnRzLnNpemUoKSAhPSBtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50c1tpXTsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyc1tpXTsKKyAgICAgICAgcGxhY2Vob2xkZXItPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBpbWFnZUVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAg
IGlmIChhdXRvIGF0dGFjaG1lbnQgPSBpbWFnZUVsZW1lbnQtPmF0dGFjaG1lbnRFbGVtZW50KCkp
CisgICAgICAgICAgICBwbGFjZWhvbGRlci0+c2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
RHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29u
c3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKQoreworICAgIGF1dG8mIGNhcmV0Q29udHJv
bGxlciA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCk7CisgICAgaWYgKCFjYXJldENvbnRy
b2xsZXIuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkcm9wQ2FyZXQgPSBjYXJldENvbnRyb2xsZXIuY2FyZXRQb3NpdGlvbigpOworICAgIGlm
IChkcm9wQ2FyZXQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWUgPSBt
YWtlUmVmUHRyKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpm
cmFtZSwgV1RGOjpudWxsb3B0LCB7IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2Vs
ZWN0aW9uQ2hhbmdlcyB9KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKGRy
b3BDYXJldCk7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KCpkb2N1bWVudCk7CisgICAgZm9yIChhdXRvJiBzaXplIDogaW1hZ2VTaXplcykgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFn
ZUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6
bnVtYmVyKHNpemUud2lkdGgoKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21TdHJpbmc6Om51bWJl
cihzaXplLmhlaWdodCgpKSk7CisgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5TWF4V2lkdGgsIDEwMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKTsKKyAgICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSku
Y3NzVGV4dCgpKTsKKyAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIo
KTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKKyAgICB9
CisKKyAgICBhdXRvIGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCpk
b2N1bWVudCwgV1RGTW92ZShmcmFnbWVudCksIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlBy
ZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlIH0sIEVk
aXRBY3Rpb246Okluc2VydEZyb21Ecm9wKTsKKyAgICBjb21tYW5kLT5hcHBseSgpOworCisgICAg
YXV0byBpbnNlcnRlZENvbnRlbnRSYW5nZSA9IGNvbW1hbmQtPmluc2VydGVkQ29udGVudFJhbmdl
KCk7CisgICAgaWYgKCFpbnNlcnRlZENvbnRlbnRSYW5nZSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmVy
ID0gbWFrZVJlZlB0cihpbnNlcnRlZENvbnRlbnRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoKSk7CisgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihjb250YWluZXIpKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVj
dG9yPFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4gcGxhY2Vob2xkZXJzOworICAgIGZvciAoYXV0byYg
cGxhY2Vob2xkZXIgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50Pihkb3duY2Fz
dDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSkpIHsKKyAgICAgICAgYXV0byBpbnRlcnNlY3Rz
Tm9kZSA9IGluc2VydGVkQ29udGVudFJhbmdlLT5pbnRlcnNlY3RzTm9kZShwbGFjZWhvbGRlcik7
CisgICAgICAgIGlmICghaW50ZXJzZWN0c05vZGUuaGFzRXhjZXB0aW9uKCkgJiYgaW50ZXJzZWN0
c05vZGUucmV0dXJuVmFsdWUoKSkKKyAgICAgICAgICAgIHBsYWNlaG9sZGVycy5hcHBlbmQocGxh
Y2Vob2xkZXIpOworICAgIH0KKworICAgIGlmIChwbGFjZWhvbGRlcnMuc2l6ZSgpICE9IGltYWdl
U2l6ZXMuc2l6ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbGFjZWhvbGRlcnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcnNb
aV07CisgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2VTaXplc1tpXTsKKyAgICAgICAgZG91
YmxlIGNsaWVudFdpZHRoID0gcGxhY2Vob2xkZXItPmNsaWVudFdpZHRoKCk7CisgICAgICAgIGRv
dWJsZSBoZWlnaHRSZXNwZWN0aW5nQXNwZWN0UmF0aW8gPSAoaW1hZ2VTaXplLmhlaWdodCgpICog
Y2xpZW50V2lkdGgpIC8gaW1hZ2VTaXplLndpZHRoKCk7CisgICAgICAgIHBsYWNlaG9sZGVyLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwg
QXRvbVN0cmluZzo6bnVtYmVyKGhlaWdodFJlc3BlY3RpbmdBc3BlY3RSYXRpbykpOworICAgIH0K
KworICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKworICAgIG1fZHJvcHBlZEltYWdlUGxh
Y2Vob2xkZXJzID0gV1RGTW92ZShwbGFjZWhvbGRlcnMpOworICAgIG1fZHJvcHBlZEltYWdlUGxh
Y2Vob2xkZXJSYW5nZSA9IFdURk1vdmUoaW5zZXJ0ZWRDb250ZW50UmFuZ2UpOworCisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CisgICAgY2FyZXRDb250cm9sbGVyLnNldENhcmV0UG9z
aXRpb24obV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwor
fQorCit2b2lkIERyYWdDb250cm9sbGVyOjpmaW5hbGl6ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
KEhUTUxJbWFnZUVsZW1lbnQmIHBsYWNlaG9sZGVyKQoreworICAgIEFTU0VSVChwbGFjZWhvbGRl
ci5pc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyKCkpOworICAgIHBsYWNlaG9sZGVyLnJlbW92ZUF0
dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpOworICAgIHBsYWNlaG9sZGVyLnJlbW92ZUlu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworfQorCiAvLyBN
YW51YWwgZHJhZyBjYXJldCBtYW5pcHVsYXRpb24KIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnBsYWNl
RHJhZ0NhcmV0KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAppbmRleCA3M2ZlZDA5ZjEwYzUyMGM1MWJmMjhiZGY2NGQyMWVjYzZh
OGRiNjNkLi5kMmJhMWZjYWIxMWNmMmI5YjhjNGFkNmNiYTcxZjAzNWMyMjNhZDJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIERyYWdE
YXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVTZWxlY3Rpb247
CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBQYWdlOwpAQCAtODgsNiArODksMTIgQEAgc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm87CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0VuZGVkKCk7
CiAgICAgICAgIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNv
bnN0IEludFBvaW50Jik7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxIVE1MSW1hZ2VFbGVt
ZW50Pj4mIGRyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXJzOyB9CisgICAgICAgIGNvbnN0IFJlZlB0cjxSYW5nZT4mIGRyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BwZWRJbWFnZVBs
YWNlaG9sZGVyUmFuZ2U7IH0KKworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXpl
RHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29u
c3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3Jj
T3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYg
ZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgc3RhdGlj
IGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKQEAgLTEyOCw2ICsxMzUsOSBAQCBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKICNlbmRpZgogICAgICAgICB9CiAKKyAgICAg
ICAgYm9vbCB0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBEcmFnRGF0
YSYpOworICAgICAgICB2b2lkIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygpOwor
CiAgICAgICAgIFN0cmluZyBwbGF0Zm9ybUNvbnRlbnRUeXBlRm9yQmxvYlR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKIAogICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWco
KTsKQEAgLTE1Miw2ICsxNjIsOCBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKICAg
ICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdl
VVJMOwogICAgICAgICBib29sIG1faXNQZXJmb3JtaW5nRHJvcCB7IGZhbHNlIH07CisgICAgICAg
IFZlY3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJz
OworICAgICAgICBSZWZQdHI8UmFuZ2U+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZTsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RyYWdnYWJsZUxpbmsoY29uc3Qg
RWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvVVRJVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMuaAppbmRleCBmNTUyMTk2MWI2YTkwNWRiZjc2NzhkMDIzZjE2MjI1NTgxOTg2
MGJhLi40NzVjNzlhZWQ5YmEyOWMxMDZlOGQ0NDZlMjMyODhkZTIxZjcyZDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaApAQCAt
MzAsNyArMzAsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1TdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBNSU1F
VHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIFVU
SUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5
YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODExZmE1Zi4uNjhhZjgzNDVjZDZmNGM2YWM3NTg0
YTlhYWVmNjFkY2ZlNTBhZjc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTc0NCw2ICs3NDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKTsKICAgICB2b2lkIHJlcXVlc3REcmFnU3Rh
cnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxs
b3dlZEFjdGlvbnMpOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBz
aG90KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pOwogICAgIHZvaWQgZGlkQ29uY2x1ZGVEcm9wKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmgKaW5kZXggZjU3ZGI5ZjA5ZTE1ZGJjNGUzYmRjMGI5NDA5NWI1MDgxN2U4MTQ4OS4u
ZDJlMGI5MDlmZWM1NDRjNTMyOTYxNjMwMmY4ZjdiYWFiOTgyMjNhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaApA
QCAtNTksNiArNTksMTEgQEAgc3RydWN0IERyYWdTb3VyY2VTdGF0ZSB7CiAgICAgTlNJbnRlZ2Vy
IGl0ZW1JZGVudGlmaWVyIHsgMCB9OwogfTsKIAorc3RydWN0IEl0ZW1BbmRQcmV2aWV3IHsKKyAg
ICBSZXRhaW5QdHI8VUlEcmFnSXRlbT4gaXRlbTsKKyAgICBSZXRhaW5QdHI8VUlUYXJnZXRlZERy
YWdQcmV2aWV3PiBwcmV2aWV3OworfTsKKwogc3RydWN0IEl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIg
ewogICAgIFJldGFpblB0cjxVSURyYWdJdGVtPiBpdGVtOwogICAgIEJsb2NrUHRyPHZvaWQoVUlU
YXJnZXRlZERyYWdQcmV2aWV3ICopPiBwcm92aWRlcjsKQEAgLTk4LDEzICsxMDMsMTcgQEAgcHVi
bGljOgogICAgIEJsb2NrUHRyPHZvaWQoKT4gdGFrZURyYWdDYW5jZWxTZXREb3duQmxvY2soKSB7
IHJldHVybiBXVEZNb3ZlKG1fZHJhZ0NhbmNlbFNldERvd25CbG9jayk7IH0KICAgICBCbG9ja1B0
cjx2b2lkKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKT4gdGFrZUFkZERyYWdJdGVtQ29tcGxldGlv
bkJsb2NrKCkgeyByZXR1cm4gV1RGTW92ZShtX2FkZERyYWdJdGVtQ29tcGxldGlvbkJsb2NrKTsg
fQogCisgICAgdm9pZCBzZXREZWZhdWx0RHJvcFByZXZpZXcoVUlEcmFnSXRlbSAqLCBVSVRhcmdl
dGVkRHJhZ1ByZXZpZXcgKik7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3
KFVJRHJhZ0l0ZW0gKiwgdm9pZChecHJvdmlkZXIpKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqcHJl
dmlldykpOwogICAgIHZvaWQgZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRl
bnRWaWV3LCBVSVZpZXcgKnByZXZpZXdDb250YWluZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhJik7CisgICAgdm9pZCBkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KFVJVmlldyAq
Y29udGVudFZpZXcsIENHUmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QsIE5TQXJyYXk8VUlEcmFn
SXRlbSAqPiAqLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBsYWNlaG9sZGVyUmVj
dHMpOwogICAgIHZvaWQgY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMoKTsK
ICAgICBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IGFjdGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJ
RHJhZ0l0ZW0gKikgY29uc3Q7CisgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpkZWZhdWx0RHJv
cFByZXZpZXcoVUlEcmFnSXRlbSAqKSBjb25zdDsKKyAgICBCbG9ja1B0cjx2b2lkKFVJVGFyZ2V0
ZWREcmFnUHJldmlldyAqKT4gZHJvcFByZXZpZXdQcm92aWRlcihVSURyYWdJdGVtICopOwogCiAg
ICAgQ0dQb2ludCBtX2xhc3RHbG9iYWxQb3NpdGlvbiB7IENHUG9pbnRaZXJvIH07CiAgICAgQ0dQ
b2ludCBtX2FkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kIHsgQ0dQb2ludFplcm8gfTsKQEAgLTEx
OSw2ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gbV9z
dGFnZWREcmFnU291cmNlOwogICAgIFZlY3RvcjxEcmFnU291cmNlU3RhdGU+IG1fYWN0aXZlRHJh
Z1NvdXJjZXM7CiAgICAgVmVjdG9yPEl0ZW1BbmRQcmV2aWV3UHJvdmlkZXI+IG1fZGVsYXllZEl0
ZW1QcmV2aWV3UHJvdmlkZXJzOworICAgIFZlY3RvcjxJdGVtQW5kUHJldmlldz4gbV9kZWZhdWx0
RHJvcFByZXZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpp
bmRleCBhZjI3NmEzMDMwOTJlMDZhODA4OTQ3MzcwOWU5YmFjZTFlZWU0ZDk0Li45YTQ3OWRlMWI2
NDdiMDkzMmQ2NDMyZmEzY2E0NjAzYzE5MzZmYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTIzLDEx
ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCIK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgi
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCisj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ltYWdlLmg+CiAKQEAgLTE4NSw2ICsxODYsMzEgQEAgdm9pZCBEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGU6OmRyYWdTZXNzaW9uV2lsbEJlZ2luKCkKICAgICB1cGRhdGVQcmV2aWV3
c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiB9CiAKK3ZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjpzZXREZWZhdWx0RHJvcFByZXZpZXcoVUlEcmFnSXRlbSAqaXRlbSwgVUlUYXJnZXRlZERy
YWdQcmV2aWV3ICpwcmV2aWV3KQoreworICAgIG1fZGVmYXVsdERyb3BQcmV2aWV3cy5hcHBlbmQo
eyBpdGVtLCBwcmV2aWV3IH0pOworfQorCitVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKkRyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZTo6ZGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKml0ZW0pIGNv
bnN0Cit7CisgICAgYXV0byBtYXRjaEluZGV4ID0gbV9kZWZhdWx0RHJvcFByZXZpZXdzLmZpbmRN
YXRjaGluZyhbJl0gKGF1dG8mIGl0ZW1BbmRQcmV2aWV3KSB7CisgICAgICAgIHJldHVybiBpdGVt
QW5kUHJldmlldy5pdGVtID09IGl0ZW07CisgICAgfSk7CisgICAgcmV0dXJuIG1hdGNoSW5kZXgg
PT0gbm90Rm91bmQgPyBuaWwgOiBtX2RlZmF1bHREcm9wUHJldmlld3NbbWF0Y2hJbmRleF0ucHJl
dmlldy5nZXQoKTsKK30KKworQmxvY2tQdHI8dm9pZChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKik+
IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJvcFByZXZpZXdQcm92aWRlcihVSURyYWdJdGVt
ICppdGVtKQoreworICAgIGF1dG8gbWF0Y2hJbmRleCA9IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJv
dmlkZXJzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGl0ZW1BbmRQcm92aWRlcikgeworICAgICAg
ICByZXR1cm4gaXRlbUFuZFByb3ZpZGVyLml0ZW0gPT0gaXRlbTsKKyAgICB9KTsKKworICAgIGlm
IChtYXRjaEluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0
dXJuIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzW21hdGNoSW5kZXhdLnByb3ZpZGVyOwor
fQorCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6cHJlcGFyZUZvckRlbGF5ZWREcm9w
UHJldmlldyhVSURyYWdJdGVtICppdGVtLCB2b2lkKF5wcm92aWRlcikoVUlUYXJnZXRlZERyYWdQ
cmV2aWV3ICpwcmV2aWV3KSkKIHsKICAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5h
cHBlbmQoeyBpdGVtLCBwcm92aWRlciB9KTsKQEAgLTIwMiw2ICsyMjgsNTYgQEAgdm9pZCBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OmRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpj
b250ZW50VmlldywgVUkKICAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5jbGVhcigp
OwogfQogCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9w
UHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBDR1JlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0
LCBOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKml0ZW1zLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBs
YWNlaG9sZGVyUmVjdHMpCit7CisgICAgaWYgKGl0ZW1zLmNvdW50ICE9IHBsYWNlaG9sZGVyUmVj
dHMuc2l6ZSgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRv
IGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBudW1iZXIgb2YgZHJhZyBpdGVtcyAoJXR1KSBk
b2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgcGxhY2Vob2xkZXJzICgldHUpIiwgaXRlbXMuY291bnQs
IHBsYWNlaG9sZGVyUmVjdHMuc2l6ZSgpKTsKKyAgICAgICAgY2xlYXJBbGxEZWxheWVkSXRlbVBy
ZXZpZXdQcm92aWRlcnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGxhY2Vob2xkZXJSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBV
SURyYWdJdGVtICppdGVtID0gW2l0ZW1zIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIGF1dG8m
IHBsYWNlaG9sZGVyUmVjdCA9IHBsYWNlaG9sZGVyUmVjdHNbaV07CisgICAgICAgIGF1dG8gcHJv
dmlkZXIgPSBkcm9wUHJldmlld1Byb3ZpZGVyKGl0ZW0pOworICAgICAgICBpZiAoIXByb3ZpZGVy
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBkZWZhdWx0UHJldmlldyA9
IGRlZmF1bHREcm9wUHJldmlldyhpdGVtKTsKKyAgICAgICAgYXV0byBkZWZhdWx0UHJldmlld1Np
emUgPSBbZGVmYXVsdFByZXZpZXcgc2l6ZV07CisgICAgICAgIGlmICghZGVmYXVsdFByZXZpZXcg
fHwgZGVmYXVsdFByZXZpZXdTaXplLndpZHRoIDw9IDAgfHwgZGVmYXVsdFByZXZpZXdTaXplLmhl
aWdodCA8PSAwIHx8IHBsYWNlaG9sZGVyUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHBy
b3ZpZGVyKG5pbCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IEZsb2F0UmVjdCBwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoQ0dS
ZWN0SW50ZXJzZWN0aW9uKHVub2JzY3VyZWRDb250ZW50UmVjdCwgcGxhY2Vob2xkZXJSZWN0KSk7
CisgICAgICAgIGlmIChwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIC8vIElmIHRoZSBwcmV2aWV3IHJlY3QgaXMgY29tcGxldGVseSBvZmZzY3JlZW4sIGRv
bid0IGJvdGhlciB0cnlpbmcgdG8gY2xpcCBvdXQgb3Igc2NhbGUgdGhlIGRlZmF1bHQgcHJldmll
dzsKKyAgICAgICAgICAgIC8vIHNpbXBseSByZXRhcmdldCB0aGUgZGVmYXVsdCBwcmV2aWV3Lgor
ICAgICAgICAgICAgYXV0byB0YXJnZXQgPSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBh
bGxvY10gaW5pdFdpdGhDb250YWluZXI6Y29udGVudFZpZXcgY2VudGVyOnBsYWNlaG9sZGVyUmVj
dC5jZW50ZXIoKV0pOworICAgICAgICAgICAgcHJvdmlkZXIoW2RlZmF1bHRQcmV2aWV3IHJldGFy
Z2V0ZWRQcmV2aWV3V2l0aFRhcmdldDp0YXJnZXQuZ2V0KCldKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBwcmV2aWV3Qm91bmRzID0gW2RlZmF1bHRQ
cmV2aWV3IHZpZXddLmJvdW5kczsKKyAgICAgICAgYXV0byBpbnNldFByZXZpZXdCb3VuZHMgPSBV
SUVkZ2VJbnNldHNJbnNldFJlY3QocHJldmlld0JvdW5kcywgeworICAgICAgICAgICAgKHByZXZp
ZXdJbnRlcnNlY3Rpb25SZWN0LnkoKSAtIHBsYWNlaG9sZGVyUmVjdC55KCkpIC8gcGxhY2Vob2xk
ZXJSZWN0LmhlaWdodCgpICogcHJldmlld0JvdW5kcy5zaXplLmhlaWdodCwKKyAgICAgICAgICAg
IChwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC54KCkgLSBwbGFjZWhvbGRlclJlY3QueCgpKSAvIHBs
YWNlaG9sZGVyUmVjdC53aWR0aCgpICogcHJldmlld0JvdW5kcy5zaXplLndpZHRoLAorICAgICAg
ICAgICAgKHBsYWNlaG9sZGVyUmVjdC5tYXhZKCkgLSBwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC5t
YXhZKCkpIC8gcGxhY2Vob2xkZXJSZWN0LmhlaWdodCgpICogcHJldmlld0JvdW5kcy5zaXplLmhl
aWdodCwKKyAgICAgICAgICAgIChwbGFjZWhvbGRlclJlY3QubWF4WCgpIC0gcHJldmlld0ludGVy
c2VjdGlvblJlY3QubWF4WCgpKSAvIHBsYWNlaG9sZGVyUmVjdC53aWR0aCgpICogcHJldmlld0Jv
dW5kcy5zaXplLndpZHRoCisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gdHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocGxhY2Vob2xkZXJSZWN0LndpZHRoKCkgLyBkZWZh
dWx0UHJldmlld1NpemUud2lkdGgsIHBsYWNlaG9sZGVyUmVjdC5oZWlnaHQoKSAvIGRlZmF1bHRQ
cmV2aWV3U2l6ZS5oZWlnaHQpOworICAgICAgICBhdXRvIHRhcmdldCA9IGFkb3B0TlMoW1tVSURy
YWdQcmV2aWV3VGFyZ2V0IGFsbG9jXSBpbml0V2l0aENvbnRhaW5lcjpjb250ZW50VmlldyBjZW50
ZXI6cHJldmlld0ludGVyc2VjdGlvblJlY3QuY2VudGVyKCkgdHJhbnNmb3JtOnRyYW5zZm9ybV0p
OworICAgICAgICBVSVByZXZpZXdQYXJhbWV0ZXJzICpwYXJhbWV0ZXJzID0gW2RlZmF1bHRQcmV2
aWV3IHBhcmFtZXRlcnNdOworICAgICAgICBwYXJhbWV0ZXJzLnZpc2libGVQYXRoID0gW1VJQmV6
aWVyUGF0aCBiZXppZXJQYXRoV2l0aFJlY3Q6aW5zZXRQcmV2aWV3Qm91bmRzXTsKKyAgICAgICAg
YXV0byBuZXdQcmV2aWV3ID0gYWRvcHROUyhbW1VJVGFyZ2V0ZWREcmFnUHJldmlldyBhbGxvY10g
aW5pdFdpdGhWaWV3OltkZWZhdWx0UHJldmlldyB2aWV3XSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMg
dGFyZ2V0OnRhcmdldC5nZXQoKV0pOworICAgICAgICBwcm92aWRlcihuZXdQcmV2aWV3LmdldCgp
KTsKKyAgICB9CisKKyAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5jbGVhcigpOwor
fQorCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJBbGxEZWxheWVkSXRlbVBy
ZXZpZXdQcm92aWRlcnMoKQogewogICAgIGZvciAoYXV0byYgaXRlbUFuZFByZXZpZXdQcm92aWRl
ciA6IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDk0NjYx
ODY5MWI0Y2RkOWY4ZTc1NmFjOGI3Mzk4OWQ3MWEzYWQ4ZTMuLmYwMzE4YWYxMzkzOTM1NDYzMGRk
OGZlOTBjYmRkMGNkMjI4YmUzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTM1Myw2ICszNTMsNyBAQCBz
dHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiAgICAgQk9PTCBfZm9jdXNSZXF1aXJlc1N0
cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKICAgICBCT09MIF93YWl0aW5nRm9yRWRpdERyYWdTbmFw
c2hvdDsKKyAgICBOU0ludGVnZXIgX2Ryb3BBbmltYXRpb25Db3VudDsKIAogICAgIEJPT0wgX2hh
c1NldFVwSW50ZXJhY3Rpb25zOwogICAgIE5TVUludGVnZXIgX2lnbm9yZVNlbGVjdGlvbkNvbW1h
bmRGYWRlQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkNGU4ZGQ4NmMzMjNlN2JkZjJlNDVmNDg3
MzMwMDkzZjA3NGEwZDQwLi5mNmQ5OTk3ODcyOGU5NmU4YjZkMmZmZjkxZjdhNTU4OTcyZGU1Mjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTkzLDYgKzkzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW5w
dXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29kZXNJT1MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aC5oPgpAQCAtMTAyLDYg
KzEwMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVj
dGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
cml0aW5nRGlyZWN0aW9uLmg+CkBAIC02NzA1LDYgKzY3MDcsOSBAQCAtICh2b2lkKV9kZWxpdmVy
RGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTooT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdAogICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICghX2Ryb3BBbmltYXRpb25Db3VudCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgp
IHNjYWxlOl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmll
bnRhdGlvblVwXSk7CiAgICAgX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZv
ckVkaXREcmFnLmdldCgpXSk7CiAgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZy
YW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzXTsKQEAgLTY5NzEsNiArNjk3Niw3MiBAQCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQ
b2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQog
CiAjZW5kaWYKIAorc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vo
b2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92
aWRlciAqPiAqaXRlbVByb3ZpZGVycykKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4g
c2l6ZXM7CisgICAgZm9yIChOU0l0ZW1Qcm92aWRlciAqaXRlbSBpbiBpdGVtUHJvdmlkZXJzKSB7
CisgICAgICAgIGlmICghV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlKFdlYkNvcmU6Ok1JTUVUeXBlRnJvbVVUSShpdGVtLndlYl9maWxlVXBsb2FkQ29u
dGVudFR5cGVzLmZpcnN0T2JqZWN0KSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIFdlYkNvcmU6OkludFNpemUgcHJlc2VudGF0aW9uU2l6ZShpdGVtLnByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpOworICAgICAgICBpZiAocHJlc2VudGF0aW9uU2l6ZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHNpemVzLmFwcGVuZChXVEZNb3ZlKHBy
ZXNlbnRhdGlvblNpemUpKTsKKyAgICB9CisgICAgcmV0dXJuIHNpemVzOworfQorCistIChCT09M
KV9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBsYWNlaG9sZGVyczooTlNBcnJheTxOU0l0ZW1Q
cm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMgc2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNl
c3Npb24KK3sKKyAgICBpZiAoIV93ZWJWaWV3Ll9lZGl0YWJsZSkKKyAgICAgICAgcmV0dXJuIE5P
OworCisgICAgaWYgKF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSkKKyAg
ICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKHNlc3Npb24uaXRlbXMuY291bnQgIT0gaXRlbVBy
b3ZpZGVycy5jb3VudCkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgYXV0byBpbWFnZVBsYWNl
aG9sZGVyU2l6ZXMgPSBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3Bw
aW5nSXRlbXMoaXRlbVByb3ZpZGVycyk7CisgICAgaWYgKGltYWdlUGxhY2Vob2xkZXJTaXplcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIFJFTEVBU0VfTE9HKERyYWdBbmRE
cm9wLCAiSW5zZXJ0aW5nIGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzIGZvciBzZXNzaW9uOiAl
cCIsIHNlc3Npb24pOworCisgICAgX3BhZ2UtPmluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
cyhpbWFnZVBsYWNlaG9sZGVyU2l6ZXMsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBkcmFnSXRlbXMgPSByZXRhaW5QdHIoc2Vzc2lvbi5pdGVtcyldIChhdXRvJiBwbGFjZWhvbGRl
clJlY3RzLCBhdXRvIGRhdGEpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBwcm90ZWN0ZWRTZWxm
LT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOworICAgICAgICBpZiAoIWRhdGEgfHwgIXByb3Rl
Y3RlZFNlbGYtPl9kcm9wQW5pbWF0aW9uQ291bnQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
KERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBtaXNz
aW5nIHRleHQgaW5kaWNhdG9yIGRhdGEuIik7CisgICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERl
bGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24gPSBkYXRhLT5jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uOworICAgICAgICBpZiAoIXNuYXBzaG90V2l0aG91dFNl
bGVjdGlvbikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQg
dG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IG1pc3NpbmcgdW5zZWxlY3RlZCBjb250ZW50
IGltYWdlLiIpOworICAgICAgICAgICAgc3RhdGUuY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQ
cm92aWRlcnMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5h
dGl2ZUltYWdlKCk7CisgICAgICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1h
Z2UgcGxhY2Vob2xkZXJzOiBjb3VsZCBub3QgZGVjb2RlIHVuc2VsZWN0ZWQgY29udGVudCBpbWFn
ZS4iKTsKKyAgICAgICAgICAgIHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlk
ZXJzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6cHJv
dGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZv
ckVkaXREcmFnLmdldCgpXSk7CisgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwor
ICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07Cisg
ICAgICAgIHByb3RlY3RlZFNlbGYtPl91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gV1RGTW92
ZShzbmFwc2hvdFZpZXcpOworICAgICAgICBzdGF0ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3
KHByb3RlY3RlZFNlbGYuZ2V0KCksIFtwcm90ZWN0ZWRTZWxmIHVub2JzY3VyZWRDb250ZW50UmVj
dF0sIGRyYWdJdGVtcy5nZXQoKSwgcGxhY2Vob2xkZXJSZWN0cyk7CisgICAgfSk7CisKKyAgICBy
ZXR1cm4gWUVTOworfQorCiAjcHJhZ21hIG1hcmsgLSBVSURyYWdJbnRlcmFjdGlvbkRlbGVnYXRl
CiAKIC0gKEJPT0wpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFj
dGlvbiBzaG91bGREZWxheUNvbXBldGluZ0dlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopY29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXIKQEAgLTcyNTEsNiArNzMyMiw3IEBA
IC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9u
IHBlcmZvcm1Ecm9wOihpZCA8VUlEcm9wCiAgICAgW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IHNoYXJlZEluc3RhbmNlXSBzZXRJdGVtUHJvdmlkZXJzOml0ZW1Qcm92aWRlcnNdOwogICAgIFtb
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJbnN0YW5jZV0gaW5jcmVtZW50UGVuZGlu
Z09wZXJhdGlvbkNvdW50XTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JE
cm9wU2Vzc2lvbjpzZXNzaW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjpXS0RyYWdEZXN0aW5hdGlv
bkFjdGlvbkFueV07CisgICAgQk9PTCBzaG91bGRTbmFwc2hvdFZpZXcgPSAhW3NlbGYgX2hhbmRs
ZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOml0ZW1Qcm92aWRlcnMgc2Vzc2lvbjpz
ZXNzaW9uXTsKIAogICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiTG9hZGluZyBkYXRhIGZy
b20gJXR1IGl0ZW0gcHJvdmlkZXJzIGZvciBzZXNzaW9uOiAlcCIsIGl0ZW1Qcm92aWRlcnMuY291
bnQsIHNlc3Npb24pOwogICAgIC8vIEFsd2F5cyBsb2FkaW5nIGNvbnRlbnQgZnJvbSB0aGUgaXRl
bSBwcm92aWRlciBlbnN1cmVzIHRoYXQgdGhlIHdlYiBwcm9jZXNzIHdpbGwgYmUgYWxsb3dlZCB0
byBjYWxsIGJhY2sgaW4gdG8gdGhlIFVJCkBAIC03MjU4LDcgKzczMzAsNyBAQCAtICh2b2lkKWRy
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJv
cDooaWQgPFVJRHJvcAogICAgIC8vIG9yIHRoZSBwYWdlIHByZXZlbnRlZCBkZWZhdWx0IG9uIGBk
cmFnb3ZlcmAsIGJ1dCB3aXRob3V0IHRoaXMsIGRyb3BwaW5nIGludG8gYSBub3JtYWwgZWRpdGFi
bGUgYXJlYXMgd2lsbCBmYWlsIGR1ZSB0bwogICAgIC8vIGl0ZW0gcHJvdmlkZXJzIG5vdCBsb2Fk
aW5nIGFueSBkYXRhLgogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiByZXRhaW5lZFNlbGYo
c2VsZik7Ci0gICAgW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXSBk
b0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpbcmV0YWluZWRTZWxmLCBj
YXB0dXJlZERyYWdEYXRhID0gV1RGTW92ZShkcmFnRGF0YSldIChOU0FycmF5ICpmaWxlVVJMcykg
bXV0YWJsZSB7CisgICAgW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNl
XSBkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpbcmV0YWluZWRTZWxm
LCBjYXB0dXJlZERyYWdEYXRhID0gV1RGTW92ZShkcmFnRGF0YSksIHNob3VsZFNuYXBzaG90Vmll
d10gKE5TQXJyYXkgKmZpbGVVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJMb2FkZWQgZGF0YSBpbnRvICV0dSBmaWxlcyIsIGZpbGVVUkxzLmNvdW50KTsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOwogICAgICAgICBmb3IgKE5TVVJMICpm
aWxlVVJMIGluIGZpbGVVUkxzKQpAQCAtNzI2OSwxOCArNzM0MSwyMCBAQCAtICh2b2lkKWRyb3BJ
bnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDoo
aWQgPFVJRHJvcAogICAgICAgICBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3BhZ2Ut
PmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoZmlsZW5hbWVzLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICAgICAgcmV0YWluZWRT
ZWxmLT5fcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRpb24oY2FwdHVyZWREcmFnRGF0YSwgImRhdGEg
aW50ZXJhY3Rpb24gcGFzdGVib2FyZCIsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSks
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCkpOwotICAgICAgICByZXRhaW5lZFNl
bGYtPl92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCA9IFtyZXRhaW5lZFNlbGYgc25hcHNob3RW
aWV3QWZ0ZXJTY3JlZW5VcGRhdGVzOk5PXTsKLSAgICAgICAgW1VJVmlldyBwZXJmb3JtV2l0aG91
dEFuaW1hdGlvbjpbcmV0YWluZWRTZWxmXSB7CisgICAgICAgIGlmIChzaG91bGRTbmFwc2hvdFZp
ZXcpIHsKKyAgICAgICAgICAgIHJldGFpbmVkU2VsZi0+X3Zpc2libGVDb250ZW50Vmlld1NuYXBz
aG90ID0gW3JldGFpbmVkU2VsZiBzbmFwc2hvdFZpZXdBZnRlclNjcmVlblVwZGF0ZXM6Tk9dOwog
ICAgICAgICAgICAgW3JldGFpbmVkU2VsZi0+X3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90IHNl
dEZyYW1lOltyZXRhaW5lZFNlbGYgYm91bmRzXV07CiAgICAgICAgICAgICBbcmV0YWluZWRTZWxm
IGFkZFN1YnZpZXc6cmV0YWluZWRTZWxmLT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QuZ2V0
KCldOwotICAgICAgICB9XTsKKyAgICAgICAgfQogICAgIH1dOwogfQogCiAtICh2b2lkKWRyb3BJ
bnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJ
dGVtICopaXRlbSB3aWxsQW5pbWF0ZURyb3BXaXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRp
bmc+KWFuaW1hdG9yCiB7CisgICAgX2Ryb3BBbmltYXRpb25Db3VudCsrOwogICAgIFthbmltYXRv
ciBhZGRDb21wbGV0aW9uOltzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoVUlWaWV3QW5p
bWF0aW5nUG9zaXRpb24pIHsKLSAgICAgICAgW3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3Vu
c2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAg
ICAgIGlmICghLS1zdHJvbmdTZWxmLT5fZHJvcEFuaW1hdGlvbkNvdW50KQorICAgICAgICAgICAg
W3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5p
bCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgfV07CiB9CiAKQEAgLTcyOTQsNiArNzM2OCw4
IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0
aW9uIGNvbmNsdWRlRHJvcDooaWQgPFVJRHJvCiAKIC0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAq
KWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmV2aWV3
Rm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRl
ZERyYWdQcmV2aWV3ICopZGVmYXVsdFByZXZpZXcKIHsKKyAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLnNldERlZmF1bHREcm9wUHJldmlldyhpdGVtLCBkZWZhdWx0UHJldmlldyk7CisKICAg
ICBDR1JlY3QgY2FyZXRSZWN0ID0gX3BhZ2UtPmN1cnJlbnREcmFnQ2FyZXRSZWN0KCk7CiAgICAg
aWYgKENHUmVjdElzRW1wdHkoY2FyZXRSZWN0KSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4
ZmRiZjFhM2NjZGI4ZTlmMzAwZGMwYmVmYzZjMTU4NDkyMDQuLmMyMWU0OTZmMGQ1MGM4ZGIwN2Jl
MTRhNTI3MDlmMGQ2YzE3ZjIxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTIxNSw2ICsxMjE1LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVx
dWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
Okluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6Ondp
bGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCiB7CiAgICAgcGFnZUNsaWVudCgpLndpbGxSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGRmMWM4MjU5YzhkZGZiZGExMWFhMDU4ZWQ1Y2FlMTdhYTJkMTI1ODYu
LmU2M2ZiZmZkN2I5Mzg0ZjE2YWQ0ZTVhMWZkYjNlOGRiNTU1MzFhMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEyODksNiArMTI4OSw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7CiAgICAgdm9pZCByZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRB
Y3Rpb25zKTsKKyAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgY29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90
KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWI5ZTFlMDdlYjdkOGI3MGIyNTVhZTJiNzJiNjY5
NTA0ODljYWUzNy4uZWU2NmIzZDIzNjk5NTk5MTg3ZmY5YzdlNDdiZjRlYzA1NDgyYTk3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0zMTAsNiArMzEwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFJlcXVlc3RE
cmFnU3RhcnQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKICAgICBSZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9z
aXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2Vk
QWN0aW9ucykKKyAgICBJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNv
cmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9w
UHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dElu
ZGljYXRvcikgQXN5bmMKICAgICBEaWRDb25jbHVkZURyb3AoKQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
MzhlMWI5NTU3NTczZDYxZjdmM2MxYjJkYWUwMDA1NjA2ODgwMDk0YS4uODNiZTFjNzhmNzIxM2M0
MDNjNTBkYTM3NTdhZTFkZGRlY2ExMjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTg5NCw2ICs4OTQsNDAgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKIH0KIAor
dm9pZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9y
PEludFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVw
bHkpCit7CisgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmluc2VydERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVyc0F0Q2FyZXQoaW1hZ2VTaXplcyk7CisgICAgYXV0byBwbGFjZWhvbGRlclJlY3Rz
ID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygpLm1h
cChbJl0gKGF1dG8mIGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJvb3RWaWV3Qm91bmRzRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICB9KTsKKworICAgIGF1dG8gaW1hZ2VQbGFjZWhvbGRlclJh
bmdlID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFu
Z2UoKTsKKyAgICBpZiAocGxhY2Vob2xkZXJSZWN0cy5zaXplKCkgIT0gaW1hZ2VTaXplcy5zaXpl
KCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0
IGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzOiBwbGFjZWhvbGRlciByZWN0IGNvdW50ICgldHUp
IGRvZXMgbm90IG1hdGNoIGltYWdlIHNpemUgY291bnQgKCV0dSkuIiwgcGxhY2Vob2xkZXJSZWN0
cy5zaXplKCksIGltYWdlU2l6ZXMuc2l6ZSgpKTsKKyAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51
bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbWFnZVBsYWNlaG9s
ZGVyUmFuZ2UpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8g
aW5zZXJ0IGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzOiBubyBpbWFnZSBwbGFjZWhvbGRlciBy
YW5nZS4iKTsKKyAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0
b3JEYXRhOworICAgIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiB0ZXh0SW5kaWNhdG9y
T3B0aW9ucyA9IHsKKyAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9m
QWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uLAorICAgICAgICBUZXh0SW5kaWNhdG9y
T3B0aW9uRXhwYW5kQ2xpcEJleW9uZFZpc2libGVSZWN0LAorICAgICAgICBUZXh0SW5kaWNhdG9y
T3B0aW9uUGFpbnRBbGxDb250ZW50LAorICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlU2Vs
ZWN0aW9uUmVjdEZvclNpemluZworICAgIH07CisKKyAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9y
ID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCppbWFnZVBsYWNlaG9sZGVyUmFuZ2Us
IHRleHRJbmRpY2F0b3JPcHRpb25zLnRvUmF3KCksIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpOb25lLCB7IH0pKQorICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJ
bmRpY2F0b3ItPmRhdGEoKTsKKworICAgIHJlcGx5KFdURk1vdmUocGxhY2Vob2xkZXJSZWN0cyks
IFdURk1vdmUodGV4dEluZGljYXRvckRhdGEpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpkaWRDb25j
bHVkZURyb3AoKQogewogICAgIG1fcmFuZ2VGb3JEcm9wU25hcHNob3QgPSBudWxscHRyOwpAQCAt
OTIzLDYgKzk1Nyw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiAKIHZv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50KQogeworICAgIGlmIChlbGVtZW50LmlzRHJvcHBlZEltYWdl
UGxhY2Vob2xkZXIoKSkKKyAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmZpbmFsaXpl
RHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoZWxlbWVudCk7CisKICAgICBpZiAobV9wZW5kaW5nSW1h
Z2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVhZjFm
OGFhNzc1YzQwZjZjOGRhYTYyMzJmNjJiMzQxOTNjYTljYjYuLjJiNmFhMTI0YjIzNjFmNzg4YTg3
ZDQ2OWIzYmZmMzBkMTA3MTI4NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOS0xMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEcm9wIGFuaW1hdGlv
biB3aGVuIGRyYWdnaW5nIGltYWdlcyBmcm9tIFBob3RvcyB0byBXZWJLaXQyIE1haWwgY29tcG9z
ZSBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMTY3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEyNTA5NTI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorCiAyMDE5LTA5LTA2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEluY29ycmVj
dCBzZWxlY3Rpb24gcmVjdCByZXZlYWxlZCBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhIGNvbnRl
bnRlZGl0YWJsZSBlbGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCAyNDIyYzEzNGFiYjdl
MzJkZjUxMDM3NTNiNDVjODljNDI5ZGIxZTcyLi5jOGUxZDU1MjhmZTc1NzNjNTI0MzE0MmJjNDQ1
MWRjMDI0YTZmMWY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTE2NTAsNiArMTY1MCwxOCBA
QCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBEcmFnQXR0YWNobWVudFdpdGhOb1R5cGVTaG91
bGROb3RDcmFzaCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKK1RFU1QoV0tBdHRhY2ht
ZW50VGVzdHNJT1MsIFRhcmdldGVkUHJldmlld3NXaGVuRHJvcHBpbmdJbWFnZXMpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIFt3ZWJW
aWV3IF9zZXRFZGl0YWJsZTpZRVNdOworCisgICAgYXV0byBkcmFnQW5kRHJvcFNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKKyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbaXRlbSByZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5
cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR107CisKKyAgICAvLyBGSVhNRTogSSdt
IG5vdCBkb25lIHdyaXRpbmcgdGhpcyB0ZXN0IHlldC4KK30KKwogVEVTVChXS0F0dGFjaG1lbnRU
ZXN0c0lPUywgSW5zZXJ0RHJvcHBlZEltYWdlQXNBdHRhY2htZW50KQogewogICAgIGF1dG8gd2Vi
VmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378574</attachid>
            <date>2019-09-11 13:36:26 -0700</date>
            <delta_ts>2019-09-11 13:43:34 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-201674-20190911133625.patch</filename>
            <type>text/plain</type>
            <size>86684</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDliYzgwNTY0YTY3ZGFj
YWRjNWJhMjQ5M2I5MzRkZWQxZWU1MzAyNi4uN2ZjZTgxNmQ5YjUwOGM0Mjg5NjU4MzIyYzYwNmUy
YzI5NWY4NWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE5LTA5LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Ag
YW5pbWF0aW9uIHdoZW4gZHJhZ2dpbmcgaW1hZ2VzIGZyb20gUGhvdG9zIHRvIFdlYktpdDIgTWFp
bCBjb21wb3NlIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTI1MDk1Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5l
dyBoZWxwZXIgbWV0aG9kcyBvbiBEcmFnQ29udHJvbGxlciB0byBzdXBwb3J0IHRoZSBuZXcgaW1h
Z2UgcGxhY2Vob2xkZXIgZHJvcCBjb2RlcGF0aC4gU2VlIFdlYktpdAorICAgICAgICBDaGFuZ2VM
b2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogIFdLQXR0YWNobWVudFRlc3Rz
SU9TLlRhcmdldGVkUHJldmlld3NXaGVuRHJvcHBpbmdJbWFnZXMKKyAgICAgICAgICAgICAgICBX
S0F0dGFjaG1lbnRUZXN0c0lPUy5UYXJnZXRlZFByZXZpZXdJc0NsaXBwZWRXaGVuRHJvcHBpbmdU
YWxsSW1hZ2UKKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorCisgICAg
ICAgIEZpeCB0aGUgV2luZG93cyBidWlsZCBhZnRlciBpbmNsdWRpbmcgV2ViQ29udGVudFJlYWRl
ci5oIGluIERyYWdDb250cm9sbGVyLmNwcC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aXNEcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
OjpzZXRJc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyKToKKworICAgICAgICBBZGQgYSBmbGFnIHRv
IEhUTUxJbWFnZUVsZW1lbnQsIGluZGljYXRpbmcgd2hldGhlciBpdCBpcyBhIGRyb3BwZWQgaW1h
Z2UgcGxhY2Vob2xkZXIuIElmIHNvLCB3ZSBoYXZlIHNwZWNpYWwKKyAgICAgICAgbG9naWMgdG8g
cmVtb3ZlIHNvbWUgdGVtcG9yYXJ5IGlubGluZSBzdHlsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGlt
YWdlIGFmdGVyIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIChzZWUKKyAgICAgICAgZmluYWxpemVE
cm9wcGVkSW1hZ2VQbGFjZWhvbGRlcikuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lc24n
dCBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBIVE1MSW1hZ2VFbGVtZW50LgorCisgICAgICAgICogcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZHJhZ0VuZGVkKToKKworICAgICAgICBDbGVhbiB1cCBhbnkgc3RhbGUgcGxhY2Vob2xkZXJzIGFm
dGVyIHRoZSBkcmFnIGVuZHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpw
ZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
cmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKworICAgICAgICBBZGQgYSBwcml2
YXRlIGhlbHBlciB0byBjbGVhbiB1cCBhbnkgZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlcnMgYWZ0
ZXIgZmFpbGluZyB0byB1cGRhdGUgZHJvcHBlZCBpbWFnZQorICAgICAgICBwbGFjZWhvbGRlcnMg
Zm9yIGFueSByZWFzb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlU
b1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisKKyAgICAgICAgSW52b2tlZCB3aGVu
IHBlcmZvcm1pbmcgdGhlIGRyYWcgb3BlcmF0aW9uLCBhZnRlciBpbWFnZSBkYXRhIGhhcyBiZWVu
IGxvYWRlZDsgdGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byB1cGRhdGUKKyAgICAgICAgdGhlIGxp
c3Qgb2YgaW1hZ2UgcGxhY2Vob2xkZXIgZWxlbWVudHMgdHJhY2tlZCBieSBEcmFnQ29udHJvbGxl
ciB0aGF0IHdlcmUgcHJldmlvdXNseSBpbnNlcnRlZCB1c2luZworICAgICAgICBpbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0LCBhbmQgdXBkYXRlcyB0aGUgc291cmNlIGF0dHJp
YnV0ZSBvZiBlYWNoIGVsZW1lbnQgKGFzIHdlbGwgYXMgYW55IGJhY2tlZAorICAgICAgICBhdHRh
Y2htZW50IGVsZW1lbnQsIGlmIGF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQpLiBJdCBh
Y2hpZXZlcyB0aGlzIGJ5IHJlYWRpbmcgdGhlIGRyb3BwZWQgZGF0YSBhcyB3ZWIKKyAgICAgICAg
Y29udGVudCwgYW5kIG1hdGNoaW5nIHVwIHRoZSBpbWFnZXMgaW4gdGhlIHJlc3VsdGluZyBmcmFn
bWVudCBhZ2FpbnN0IHRoZSBwbGFjZWhvbGRlciBpbWFnZXMuIElmIGVhY2ggaW1hZ2UgaW4KKyAg
ICAgICAgdGhlIGZyYWdtZW50IGNhbiBjb3JyZXNwb25kIHRvIGV4YWN0bHkgb25lIHBsYWNlaG9s
ZGVyLCB3ZSB1cGRhdGUgdGhlIHNvdXJjZSBvZiBlYWNoIHBsYWNlaG9sZGVyIGltYWdlLAorICAg
ICAgICBtaWdyYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgb3ZlciB0byB0aGUgcGxhY2Vob2xkZXIg
aW1hZ2VzIGlmIG5lZWRlZCwgYW5kIGZpbmFsbHkgZGlzY2FyZCB0aGUgZnJhZ21lbnQuCisKKyAg
ICAgICAgQSByZXR1cm4gdmFsdWUgb2YgZmFsc2UgaW5kaWNhdGVzIHRoYXQgdGhpcyBwcm9jZXNz
IGZhaWxlZCwgaW4gd2hpY2ggY2FzZSB3ZSBjbGVhbiB1cCB0aGUgcGxhY2Vob2xkZXJzIGFuZCBm
YWxsCisgICAgICAgIGJhY2sgdG8gaGFuZGxpbmcgdGhlIGRyb3Agbm9ybWFsbHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnNBdENhcmV0KToKKworICAgICAgICBJbnZva2VkIHdoZW4gaGFuZGxpbmcgdGhlIGRyb3AsIGJl
Zm9yZSBhbnkgaW1hZ2UgZGF0YSBoYXMgYmVlbiBsb2FkZWQ7IHRoaXMgZnVuY3Rpb24gdGFrZXMg
YSBsaXN0IG9mIHNpemVzCisgICAgICAgIHJlcHJlc2VudGluZyB0aGUgcHJlZmVycmVkIHByZXNl
bnRhdGlvbiBzaXplcyBvZiBlYWNoIGl0ZW0gcHJvdmlkZXIgdGhhdCB3aWxsIGJlIGxvYWRlZCBh
cyBhbiBpbWFnZSwgYW5kIHVzZXMKKyAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQgdG8g
aW5zZXJ0IGEgbGlzdCBvZiAoaW5pdGlhbGx5IGJsYW5rKSBwbGFjZWhvbGRlciBpbWFnZXMgYXQg
dGhlIGRyb3AgY2FyZXQsIHNpemVkCisgICAgICAgIGFjY29yZGluZ2x5IHRvIGVhY2ggaXRlbSBw
cm92aWRlcidzIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUuCisKKyAgICAgICAgVG8gbWFrZSB0
aGlzIGNvbXBhdGlibGUgd2l0aCBNYWlsIGNvbXBvc2UgKGFuZCBhbGwgb3RoZXIga25vd24gaW50
ZXJuYWwgY2xpZW50cyB0aGF0IHVzZSB0aGUgX2VkaXRhYmxlIFNQSSksIHdlCisgICAgICAgIGFk
ZGl0aW9uYWxseSBlbmZvcmNlIGEgbWF4LXdpZHRoIG9mIDEwMCUgb24gZWFjaCBpbWFnZSBhbmQg
cHJlc2VydmUgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW1hZ2UgYnkgYWRqdXN0aW5nCisgICAg
ICAgIHRoZSBoZWlnaHQgaWYgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5oOgorCisgICAgICAgIEhhdmUgRHJhZ0NvbnRyb2xsZXIga2VlcCB0cmFj
ayBvZiB0aGUgbGlzdCBvZiBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVycyAoaW4gRE9NIG9yZGVy
KSwgYXMgd2VsbCBhcyB0aGUgZHJvcHBlZAorICAgICAgICBpbWFnZSBwbGFjZWhvbGRlciByYW5n
ZS4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIG9uY2UgaXRlbSBwcm92aWRlciBkYXRhIGFycml2
ZXMgYW5kIHRoZSBkcmFnIG9wZXJhdGlvbiBpcworICAgICAgICBiZWluZyBwZXJmb3JtZWQsIHRv
IHVwZGF0ZSB0aGUgc291cmNlIG9mIGVhY2ggZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlci4KKwor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJSYW5nZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
VVRJVXRpbGl0aWVzLmg6CisKKyAgICAgICAgTWFyayBhbiBleGlzdGluZyBoZWxwZXIgZnVuY3Rp
b24gYXMgV0VCQ09SRV9FWFBPUlQuCisKIDIwMTktMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IHNlbGVjdGlvbiByZWN0IHJl
dmVhbGVkIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGEgY29udGVudGVkaXRhYmxlIGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDE5NTEzOTRlNjA2Njc5NTIxMDRjOWY1Y2UzOWFiYzdjNDhmMjAzNS4uOGNk
NzkxMWVhM2IzNTEyNzlhM2UxYzBmNjkzMmU1ODA2MTM4OGEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMjcgQEAKKzIwMTktMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gRHJvcCBhbmltYXRpb24gd2hlbiBkcmFnZ2luZyBpbWFnZXMg
ZnJvbSBQaG90b3MgdG8gV2ViS2l0MiBNYWlsIGNvbXBvc2UgaXMgaW5jb3JyZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE2NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzUxMjUwOTUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE91ciBjdXJyZW50IGxvZ2ljIGZvciBoYW5kbGluZyBkcm9wcGVk
IGNvbnRlbnQgaW4gZWRpdGFibGUgZWxlbWVudHMgb24gaU9TIHdvcmtzIGxpa2UgdGhpcyBpbiB0
aGUgaWRlYWwgY2FzZToKKworICAgICAgICAoMSkgICAgIFVJS2l0IGFza3MgdXMgZm9yIGEgdGFy
Z2V0ZWQgcHJldmlldyBmb3IgZWFjaCBVSURyYWdJdGVtLiBXZSBkb24ndCBrbm93IChhbmQgY2Fu
J3QgZGV0ZXJtaW5lIHRoaXMKKyAgICAgICAgICAgICAgICBzeW5jaHJvbm91c2x5IHdpdGhvdXQg
YmxvY2tpbmcgb24gdGhlIHdlYiBwcm9jZXNzKSBzbyB3ZSBzaW1wbHkgcmV0YXJnZXQgdGhlIHBy
ZXZpZXcgdG8gYW5pbWF0ZSB0byB0aGUKKyAgICAgICAgICAgICAgICBsYXN0IGtub3duIGNhcmV0
IGxvY2F0aW9uLgorCisgICAgICAgICgyKSAgICAgU29vbmFmdGVyLCBVSUtpdCBoYW5kcyB1cyBh
IGRyb3AgcHJldmlldyB1cGRhdGUgYmxvY2ssIHdoaWNoIG1heSBiZSB1c2VkIHRvIHJldGFyZ2V0
IHRoZSBkcm9wIHByZXZpZXcKKyAgICAgICAgICAgICAgICBvbmNlLCBhcyBsb25nIGFzIHRoZSBk
cm9wIGFuaW1hdGlvbiBpcyBsZXNzIHRoYW4gOTAlIGNvbXBsZXRlLiBXZSBzdGFzaCB0aGVzZSB1
cGRhdGUgYmxvY2tzIGZvciBub3cuCisKKyAgICAgICAgKDMpICAgICAtZHJvcEludGVyYWN0aW9u
OnBlcmZvcm1Ecm9wOiBpcyB0aGVuIGNhbGxlZCwgYW5kIHdlIHN0YXJ0IGxvYWRpbmcgaXRlbSBw
cm92aWRlciBkYXRhIHJpZ2h0IGF3YXkuCisKKyAgICAgICAgKDQpICAgICBXaGVuIHRoZSBkYXRh
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLCB3ZSBwZXJmb3JtIHRoZSBkcm9wIGluIHRoZSB3ZWIgcHJv
Y2Vzcy4gQWZ0ZXIgYW55IGluc2VydGVkIGltYWdlcworICAgICAgICAgICAgICAgIGhhdmUgZmlu
aXNoZWQgbG9hZGluZywgd2UgdGFrZSBzbmFwc2hvdHMgKG9mIHRoZSBkcm9wcGVkIGNvbnRlbnQg
YXMgd2VsbCBhcyBzdXJyb3VuZGluZyB3ZWIgY29udGVudAorICAgICAgICAgICAgICAgIG1pbnVz
IHRoZSBkcm9wcGVkIGNvbnRlbnQpLCBhbmQgZGVsaXZlciB0aGVzZSBpbWFnZXMgdG8gdGhlIFVJ
IHByb2Nlc3MgdmlhIFRleHRJbmRpY2F0b3JEYXRhLgorCisgICAgICAgICg1KSAgICAgVXBvbiBy
ZWNlaXZpbmcgdGhlIFRleHRJbmRpY2F0b3JEYXRhIHNlbnQgaW4gKDQpLCB3ZSB1c2UgdGhlIGlt
YWdlIGRhdGEgdG8gY3JlYXRlIHVwZGF0ZWQgdGFyZ2V0ZWQgZHJhZworICAgICAgICAgICAgICAg
IHByZXZpZXdzLCBhbmQgdXNlIHRoZXNlIHRvIGludm9rZSB0aGUgcHJldmlldyB1cGRhdGUgYmxv
Y2tzIHdlIHN0b3JlZCBlYXJsaWVyIGluICgyKS4gV2UgYWxzbyBvYnNjdXJlCisgICAgICAgICAg
ICAgICAgdGhlIGVudGlyZSB3ZWIgdmlldyB3aXRoIGEgc25hcHNob3Qgb2YgdGhlIHZpZXcgbWlu
dXMgYW55IGRyb3BwZWQgY29udGVudCwgc3VjaCB0aGF0IHRoZSB1cGRhdGVkIGRyb3AKKyAgICAg
ICAgICAgICAgICBwcmV2aWV3cyBtYXkgYW5pbWF0ZSBpbnRvIHBsYWNlIHdpdGhvdXQgYWxzbyBz
aG93aW5nIHRoZSBmaW5hbCBjb250ZW50LgorCisgICAgICAgICg2KSAgICAgV2hlbiB0aGUgZHJv
cCBhbmltYXRpb24gZW5kcywgd2UgcmVtb3ZlIHRoZSB1bnNlbGVjdGVkIGNvbnRlbnQgc25hcHNo
b3QgdmlldyBhZGRlZCBpbiAoNSkgc2ltdWx0YW5lb3VzbHkKKyAgICAgICAgICAgICAgICBhcyB0
aGUgdGFyZ2V0ZWQgcHJldmlld3MgZGlzYXBwZWFyLCByZXZlYWxpbmcgdGhlIGFjdHVhbCBkcm9w
cGVkIGNvbnRlbnQgb24gdGhlIHBhZ2UuIFRoZSBkcm9wIGlzIG5vdworICAgICAgICAgICAgICAg
IGNvbXBsZXRlLgorCisgICAgICAgIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgZHJhZyB1cGRhdGUg
YmxvY2sgd2UgaW52b2tlIGluICg1KSBkb2Vzbid0IHdvcmsgaWYgdGhlIGRyb3AgYW5pbWF0aW9u
IGlzIGFscmVhZHkgbW9yZQorICAgICAgICB0aGFuIDkwJSBjb21wbGV0ZS4gU2luY2UgdGhlIGxp
ZmVjeWNsZSBvZiB0aGUgZHJvcCBhbmltYXRpb24gaXMgZGlzdGluY3QgZnJvbSB0aGF0IG9mIGl0
ZW0gcHJvdmlkZXIgbG9hZGluZywgaWYKKyAgICAgICAgdGhlIGRlbGF5IGJldHdlZW4gKDMpIGFu
ZCAoNCkgZXhjZWVkcyA5MCUgb2YgdGhlIHRvdGFsIGRyb3AgYW5pbWF0aW9uIHRpbWUsIHdlJ2xs
IGZhaWwgdG8gdXBkYXRlIHRoZSB0YXJnZXRlZAorICAgICAgICBwcmV2aWV3cywgc3VjaCB0aGF0
IHRoZSB1c2VyIG9ubHkgc2VlcyB0aGUgaW5pdGlhbCBkcmFnIHByZXZpZXcgZmx5IG9uIHRvcCBv
ZiB0aGUgY2FyZXQgYW5kIGRpc2FwcGVhci4gV2hpbGUgd2UKKyAgICAgICAgdHlwaWNhbGx5IHdp
biB0aGlzIHJhY2UgZm9yIGRhdGEgZHJhZ2dlZCBmcm9tIG90aGVyIFdlYktpdCBhcHBzLCB3ZSBh
bG1vc3QgYWx3YXlzIGxvc2Ugd2hlbiBkcmFnZ2luZyBmcm9tIFBob3RvcworICAgICAgICBhbmQg
ZW5kIHVwIHdpdGggYSBqYW5reSBkcm9wIGFuaW1hdGlvbi4gVGhpcyBpcyBlc3BlY2lhbGx5IHRy
dWUgZm9yIGFueSBpbWFnZXMgdGhhdCBhcmVuJ3QgbG9jYWxseSBhdmFpbGFibGUsCisgICAgICAg
IGFuZCBuZWVkIHRvIGJlIGZldGNoZWQgZnJvbSBpQ2xvdWQuIEFuIGFkZGl0aW9uYWwgcHJvYmxl
bSBpcyB0aGF0IGluIHN0ZXAgKDUpLCB3ZSB1c2UgdGhlIHNhbWUgZmluYWwgc25hcHNob3QgdG8K
KyAgICAgICAgdXBkYXRlIHRoZSBkcm9wIHByZXZpZXcgb2YgZXZlcnkgaXRlbSwgc2luY2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIHNuYXBzaG90IGZvciB0aGUgZnJhZ21lbnQgY29ycmVzcG9uZGluZyB0byBl
YWNoCisgICAgICAgIGluZGl2aWR1YWwgZHJvcHBlZCBpdGVtLgorCisgICAgICAgIFRvIGFkZHJl
c3MgdGhlc2UgaXNzdWVzIGZvciBNYWlsIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2VyIGRyb3Bz
IGltYWdlcyB3aXRoIGtub3duIHNpemVzIChpLmUuIC1bTlNJdGVtUHJvdmlkZXIKKyAgICAgICAg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZV0gaXMgc3BlY2lmaWVkKSwgd2UgaW50cm9kdWNlIGFu
IGFsdGVybmF0ZSBjb2RlcGF0aCBmb3IgaGFuZGxpbmcgZHJvcHBlZCBpbWFnZXMgdGhhdAorICAg
ICAgICBwZXJmb3JtcyB0aGUgZHJvcCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyAtZHJvcElu
dGVyYWN0aW9uOnBlcmZvcm1Ecm9wOiBpbiB0aGUgVUkgcHJvY2Vzcy4gU2luY2UgdGhlIGRhdGEg
aGFzCisgICAgICAgIHlldCB0byBhcnJpdmUsIHdlIGluc3RlYWQgaGFuZGxlIHRoZSBkcm9wIGJ5
IGluc2VydGluZyBwbGFjZWhvbGRlciBpbWFnZSBlbGVtZW50cyBhdCB0aGUgZHJhZyBjYXJldCBw
b3NpdGlvbiwKKyAgICAgICAgd2hpY2ggaW5pdGlhbGx5IGhhdmUgbm8gc291cmNlIGJ1dCBhcmUg
c2l6ZWQgdG8gZml0IHRoZWlyIGV4cGVjdGVkIGZpbmFsIGltYWdlIHNpemVzLiBBZnRlciBkb2lu
ZyBzbywgd2UKKyAgICAgICAgc25hcHNob3QgdGhlIHBhZ2UgKG1pbnVzIHRoZSBkcm9wcGVkIGNv
bnRlbnQgcmFuZ2UsIGFzIHVzdWFsKSBhbmQgZGVsaXZlciB0aGlzIHNuYXBzaG90IHRvIHRoZSBV
SSBwcm9jZXNzLCBhbG9uZworICAgICAgICB3aXRoIHRoZSByZWN0cyAoaW4gcm9vdCB2aWV3IGNv
b3JkaW5hdGVzKSBvZiBlYWNoIHBsYWNlaG9sZGVyIGltYWdlIHRoYXQgd2FzIGluc2VydGVkLiBJ
biB0aGUgVUkgcHJvY2Vzcywgd2UKKyAgICAgICAgdGhlbiB0YWtlIHRoaXMgc25hcHNob3QgYW5k
IG9ic2N1cmUgdGhlIGNvbnRlbnQgdmlldyB3aXRoIGl0LCBhbmQgYWxzbyB1c2UgZWFjaCBvZiB0
aGUgcGxhY2Vob2xkZXIgcmVjdHMgdG8KKyAgICAgICAgcHJvdmlkZSBhbiB1cGRhdGVkIHRhcmdl
dCBmb3IgZWFjaCBkcmFnIHByZXZpZXcsIHN1Y2ggdGhhdCB0aGUgZHJvcCBwcmV2aWV3cyBub3cg
YW5pbWF0ZSB0byB0aGVpciBmaW5hbAorICAgICAgICBsb2NhdGlvbnMgb24gdGhlIHBhZ2UuCisK
KyAgICAgICAgV2hlbiB0aGUgZGF0YSBldmVudHVhbGx5IGFycml2ZXMsIHdlIGhhbmRsZSB0aGUg
ZHJvcCBieSBkZXRlY3RpbmcgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnRzIHdlIGluc2VydGVkIGVh
cmxpZXIsCisgICAgICAgIGFuZCB1c2luZyB0aGUgZHJvcHBlZCBkYXRhIHRvIHVwZGF0ZSB0aGUg
c291cmNlIGF0dHJpYnV0ZSBhbmQgYXR0YWNobWVudCBiYWNraW5nIGZvciBlYWNoIG9mIHRoZXNl
IHBsYWNlaG9sZGVyCisgICAgICAgIGVsZW1lbnRzIGluc3RlYWQgb2YgYXR0ZW1wdGluZyB0byBp
bnNlcnQgbmV3IGNvbnRlbnQuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgY29kZXBhdGggaXMg
Y3VycmVudGx5IG9ubHkgZW5hYmxlZCBmb3IgU1BJIGNsaWVudHMgdGhhdCBzZXQgLVtXS1dlYlZp
ZXcgX2VkaXRhYmxlXSB0byBZRVMsIHNpbmNlCisgICAgICAgIGl0IGludm9sdmVzIHVzIHBlcmZv
cm1pbmcgdGhlIGVkaXRpbmcgYWN0aW9uIGZvciB0aGUgZHJvcCAodGh1cyBjaGFuZ2luZyB0aGUg
RE9NKSBwcmlvciB0byB0aGUgcHJldmVudGFibGUgZHJvcAorICAgICAgICBldmVudCwgYW5kIHBy
aW9yIHRvIHVzIGhhdmluZyBhbnkgZGF0YSBhdCBhbGwuIEhvd2V2ZXIsIHRoZSBkcm9wIGV2ZW50
IGNhbid0IGNvbWUgYmVmb3JlIHRoZSBlZGl0aW5nIGFjdGlvbiwKKyAgICAgICAgc2luY2Ugd2Ug
bmVlZCB0byBoYXZlIGFscmVhZHkgbG9hZGVkIGRhdGEgZnJvbSB0aGUgaXRlbSBwcm92aWRlcnMg
dG8gZXhwb3NlIGl0IHZpYSB0aGUgZGF0YVRyYW5zZmVyIG9mIHRoZSBkcm9wCisgICAgICAgIGV2
ZW50LiBUaGlzIGNvbnRyYWRpY3Rpb24gbWVhbnMgdGhhdCB0aGlzIGltYWdlIHBsYWNlaG9sZGVy
IGhhY2sgaXMgb25seSBmb3IgX2VkaXRhYmxlIFNQSSBjbGllbnRzIHRoYXQsIGF0IHRoZQorICAg
ICAgICB2ZXJ5IGxlYXN0LCB3aWxsIG5vdCByZXF1aXJlIHByZXZlbnRpbmcgZGVmYXVsdCBiZWhh
dmlvciB3aGVuIGRyb3BwaW5nIG9ubHkgaW1hZ2VzIHdpdGggcHJlZGV0ZXJtaW5lZCBzaXplcy4K
KworICAgICAgICBDb3ZlcmVkIGJ5IDIgbmV3IEFQSSB0ZXN0cy4gU2VlIGNvbW1lbnRzIGJlbG93
IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnNldERlZmF1bHREcm9wUHJldmll
dyk6CisKKyAgICAgICAgQWRkIGEgd2F5IHRvIGtlZXAgdHJhY2sgb2YgZGVmYXVsdCBkcm9wIHBy
ZXZpZXdzIHRoYXQgd2Ugb2JzZXJ2ZWQgZHVyaW5nIGVhY2ggY2FsbCB0bworICAgICAgICAtZHJv
cEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6LiBJbiB0aGUg
aW1hZ2UgcGxhY2Vob2xkZXIgZHJvcCBzY2VuYXJpbywgd2UgdXNlIHRoZXNlCisgICAgICAgIGRl
ZmF1bHQgZHJvcCBwcmV2aWV3cyBsYXRlciBvbiB0byBjcmVhdGUgcmV0YXJnZXRlZCBkcm9wIHBy
ZXZpZXdzIGFmdGVyIHRoZSBwbGFjZWhvbGRlcnMgaGF2ZSBiZWVuIGluc2VydGVkLgorCisgICAg
ICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVmYXVsdERyb3BQcmV2aWV3
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkZWxp
dmVyRGVsYXllZERyb3BQcmV2aWV3KToKKworICAgICAgICBBZGQgYW4gYWx0ZXJuYXRlIHZlcnNp
b24gb2YgZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyB0aGF0IGlzIHVzZWQgd2hlbiBpbnNlcnRp
bmcgaW1hZ2UgcGxhY2Vob2xkZXJzLiBSYXRoZXIKKyAgICAgICAgdGhhbiB1c2UgdGV4dCBpbmRp
Y2F0b3IgZGF0YSBvZiB0aGUgZmluYWwgZHJvcHBlZCBjb250ZW50IG9uIHRoZSBwYWdlLCB1c2Ug
dGhlIHJvb3Qtdmlldy1jb29yZGluYXRlIHJlY3RzIG9mCisgICAgICAgIGVhY2ggb2YgdGhlIHBs
YWNlaG9sZGVyIGVsZW1lbnRzIHRvIHJlcG9zaXRpb24gdGhlIGRlZmF1bHQgZHJvcCBwcmV2aWV3
cy4KKworICAgICAgICBUaGVyZSdzIGFkZGl0aW9uYWwgbG9naWMgaGVyZSB0byBoYW5kbGUgdGhl
IGNhc2Ugd2hlcmUgdGhlIGZpbmFsIGltYWdlIGlzIHRhbGxlciB0aGFuIHRoZSBoZWlnaHQgb2Yg
dGhlCisgICAgICAgIHVub2JzY3VyZWQgY29udGVudCByZWN0LCBpbiB3aGljaCBjYXNlIHdlIGNs
aXAgdGhlIGRyb3AgcHJldmlldyB1c2luZyBVSURyYWdQcmV2aWV3UGFyYW1ldGVyJ3MgdmlzaWJs
ZVBhdGggdG8KKyAgICAgICAgcHJldmVudCB0aGUgZHJvcCBwcmV2aWV3IGZyb20gYmVpbmcgc2hv
d24gb3V0c2lkZSBvZiB0aGUgYm91bmRzIG9mIHRoZSB3ZWIgdmlldy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
c2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0ZW1zKToKKwor
ICAgICAgICBDb2xsZWN0cyB0aGUgbGlzdCBvZiBleHBlY3RlZCBpbWFnZSBzaXplcyBmb3IgdGhl
IGRyb3BwZWQgaXRlbSBwcm92aWRlcnMsIG9yIGFuIGVtcHR5IGxpc3QgaW4gdGhlIGNhc2Ugd2hl
cmUKKyAgICAgICAgYW55IG9mIHRoZSBpdGVtIHByb3ZpZGVycyBtYXkgbm90IGJlIHJlcHJlc2Vu
dGVkIGFzIGlubGluZSBpbWFnZXMgb3IgZG8gbm90IGhhdmUgcHJlZGV0ZXJtaW5lZCBzaXplcy4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBs
YWNlaG9sZGVyczpzZXNzaW9uOl0pOgorCisgICAgICAgIElmIHBvc3NpYmxlLCBoYW5kbGVzIHRo
ZSBkcm9wIGJ5IGluc2VydGluZyBpbWFnZSBwbGFjZWhvbGRlcnMgaW5zdGVhZCBvZiB3YWl0aW5n
IGZvciB0aGUgZGF0YSB0byBmaW5pc2ggbG9hZGluZworICAgICAgICBiZWZvcmUgZHJvcHBpbmcu
IFJldHVybnMgd2hldGhlciBvciBub3Qgd2UgZGVjaWRlZCB0byBwcm9jZWVkIHdpdGggdGhlIGlt
YWdlIHBsYWNlaG9sZGVyIGRyb3AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50
ZXJhY3Rpb246cGVyZm9ybURyb3A6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcElu
dGVyYWN0aW9uOml0ZW06d2lsbEFuaW1hdGVEcm9wV2l0aEFuaW1hdG9yOl0pOgorCisgICAgICAg
IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB1bnNlbGVjdGVkIGNvbnRlbnQgc25hcHNob3QgdmlldyBj
b3VsZCBsaW5nZXIgYXJvdW5kIG9uIHRoZSB3ZWIgdmlldyBmb3JldmVyIGFmdGVyIGEgZHJvcAor
ICAgICAgICB3aGVyZSB0aGUgZGF0YSBkb2Vzbid0IGxvYWQgaW4gdGltZSBmb3IgdGhlIGRyb3Ag
dG8gZmluaXNoIGJ5IGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciB0aGVyZSBpcyBhbiBhY3RpdmVs
eQorICAgICAgICBhbmltYXRpbmcgZHJhZyBpdGVtLCBhbmQgb25seSBhcHBseWluZyB0aGUgdW5z
ZWxlY3RlZCBjb250ZW50IHNuYXBzaG90IGlmIHNvLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZHJvcEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6XSk6
CisKKyAgICAgICAgU3Rhc2ggdGhlIGRlZmF1bHQgZHJvcCBwcmV2aWV3IGF3YXkgaGVyZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisKKyAgICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9n
IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZp
bmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorCisgICAgICAgIElmIHRoZSBpbWFnZSB0aGF0
IGZpbmlzaGVkIGxvYWRpbmcgaXMgYSBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVyLCBhbGxvdyBE
cmFnQ29udHJvbGxlciB0byAiZmluYWxpemUiIGl0IGJ5CisgICAgICAgIHN0cmlwcGluZyBhd2F5
IHNvbWUgc3R5bGVzIHRoYXQgd2VyZSB0ZW1wb3JhcmlseSBhZGRlZC4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFk
ZXIuaAppbmRleCA4N2Y0NTU1MDMwOWI1OTUyOTgwNTBiMWQ1OTU3MDVmYmRjNzk3MThiLi42ODNl
MjQ0MzQ5YzkwNWE2ODI5OTczNDBlODM1ZTZlZGE4YTZmZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlk
ZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKLSNlbmRpZgogICAgIGJvb2wgcmVhZFBs
YWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyNlbmRpZgogfTsKIAogY2xhc3MgV2Vi
Q29udGVudE1hcmt1cFJlYWRlciBmaW5hbCA6IHB1YmxpYyBGcmFtZVdlYkNvbnRlbnRSZWFkZXIg
ewpAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKICAg
ICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyNlbmRpZgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA0ZWE4OTMwYTZj
OTkzYzE2OWU5MmE0MDgwMjU4ZjRiYmE1NDljNzU0Li44NTZlYjg4Njg3YTgzNThiMWI3ZTE5NTY4
NjAxOGU1NjM2MTI0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJzZXI7IH0KIAorICAgIGJvb2wgaXNEcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcjsgfQorICAgIHZvaWQgc2V0SXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpIHsgbV9pc0Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVyID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqID0gbnVsbHB0ciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7CiAKQEAgLTE4OSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9leHBlcmltZW50YWxJbWFnZU1lbnVFbmFi
bGVkOwogICAgIGJvb2wgbV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCB7IGZhbHNlIH07
IC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHBhcnNlQXR0cmlidXRlKCkgY2Fu
J3Qgc2VlIHRoZSBvbGQgdmFsdWUuCiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlciB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U+IG1fZWRpdGFibGVJbWFnZTsKICAgICBX
ZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDVjZjNkYWQ3OGUyNzJjMmY3N2NiMGE1OGQw
Njc2YjU0Y2JmYmUwZi4uZGJjZWY1ZjM0MjBiMTY3M2FlY2U2NjIwYzU2YzQxY2JkYzg4MTA0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0yMDYsNiArMjA3
LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2RpZEluaXRpYXRl
RHJhZyA9IGZhbHNlOwogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBj
bGVhckRyYWdDYXJldCgpOworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygp
OwogICAgIAogICAgIG1fY2xpZW50LmRyYWdFbmRlZCgpOwogfQpAQCAtMjM4LDYgKzI0MCwxNiBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgZHJhZ0lzSGFuZGxlZEJ5RG9jdW1lbnQoRHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZAogCiBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CisgICAgaWYgKCFtX2Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVycy5pc0VtcHR5KCkgJiYgbV9kcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlclJhbmdlICYmIHRyeVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGRyYWdEYXRh
KSkgeworICAgICAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycy5jbGVhcigpOworICAgICAg
ICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBudWxscHRyOworICAgICAgICBtX2Rv
Y3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycygpOworCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNQZXJmb3JtaW5nRHJvcCht
X2lzUGVyZm9ybWluZ0Ryb3AsIHRydWUpOwogICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBp
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKSwgV1RGOjpudWxsb3B0LCBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9y
ZVNlbGVjdGlvbkNoYW5nZXMpOwogCkBAIC0xMzEyLDYgKzEzMjQsMTM2IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAgICAgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogfQogCit2b2lkIERy
YWdDb250cm9sbGVyOjpyZW1vdmVBbGxEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKQoreworICAg
IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRv
JiBwbGFjZWhvbGRlciA6IHN0ZDo6ZXhjaGFuZ2UobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMs
IHsgfSkpIHsKKyAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Nvbm5lY3RlZCgpKQorICAgICAg
ICAgICAgcGxhY2Vob2xkZXItPnJlbW92ZSgpOworICAgIH0KK30KKworYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQoreworICAgIEFTU0VSVCghbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKTsKKwor
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBd
LT5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZnJh
bWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJh
bmdlLCB0cnVlKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworCisg
ICAgaWYgKCFyZWFkZXIuZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IGltYWdlRWxlbWVudHM7CisgICAgZm9yIChhdXRv
JiBpbWFnZUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PigqcmVh
ZGVyLmZyYWdtZW50KSkKKyAgICAgICAgaW1hZ2VFbGVtZW50cy5hcHBlbmQoaW1hZ2VFbGVtZW50
KTsKKworICAgIGlmIChpbWFnZUVsZW1lbnRzLnNpemUoKSAhPSBtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50c1tpXTsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyc1tpXTsKKyAgICAgICAgcGxhY2Vob2xkZXItPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBpbWFnZUVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAg
IGlmIChhdXRvIGF0dGFjaG1lbnQgPSBpbWFnZUVsZW1lbnQtPmF0dGFjaG1lbnRFbGVtZW50KCkp
CisgICAgICAgICAgICBwbGFjZWhvbGRlci0+c2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
RHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29u
c3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKQoreworICAgIGF1dG8mIGNhcmV0Q29udHJv
bGxlciA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCk7CisgICAgaWYgKCFjYXJldENvbnRy
b2xsZXIuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkcm9wQ2FyZXQgPSBjYXJldENvbnRyb2xsZXIuY2FyZXRQb3NpdGlvbigpOworICAgIGlm
IChkcm9wQ2FyZXQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWUgPSBt
YWtlUmVmUHRyKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpm
cmFtZSwgV1RGOjpudWxsb3B0LCB7IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2Vs
ZWN0aW9uQ2hhbmdlcyB9KTsKKworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50
OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBmb3IgKGF1dG8mIHNpemUgOiBpbWFnZVNpemVzKSB7
CisgICAgICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOworICAgICAgICBhdXRvIGltYWdlID0g
SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9t
U3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbVN0cmlu
Zzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgMTAwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpOworICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBo
YSgwLjA1KS5jc3NUZXh0KCkpOworICAgICAgICBpbWFnZS0+c2V0SXNEcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcigpOworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShpbWFnZSkp
OworICAgIH0KKworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oZHJvcENhcmV0
KTsKKworICAgIGF1dG8gY29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUo
KmRvY3VtZW50LCBXVEZNb3ZlKGZyYWdtZW50KSwgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
UHJldmVudE5lc3RpbmcsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2UgfSwg
RWRpdEFjdGlvbjo6SW5zZXJ0RnJvbURyb3ApOworICAgIGNvbW1hbmQtPmFwcGx5KCk7CisKKyAg
ICBhdXRvIGluc2VydGVkQ29udGVudFJhbmdlID0gY29tbWFuZC0+aW5zZXJ0ZWRDb250ZW50UmFu
Z2UoKTsKKyAgICBpZiAoIWluc2VydGVkQ29udGVudFJhbmdlKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb250YWlu
ZXIgPSBtYWtlUmVmUHRyKGluc2VydGVkQ29udGVudFJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRh
aW5lcigpKTsKKyAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBW
ZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBwbGFjZWhvbGRlcnM7CisgICAgZm9yIChhdXRv
JiBwbGFjZWhvbGRlciA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGRvd25j
YXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpKSkgeworICAgICAgICBhdXRvIGludGVyc2Vj
dHNOb2RlID0gaW5zZXJ0ZWRDb250ZW50UmFuZ2UtPmludGVyc2VjdHNOb2RlKHBsYWNlaG9sZGVy
KTsKKyAgICAgICAgaWYgKCFpbnRlcnNlY3RzTm9kZS5oYXNFeGNlcHRpb24oKSAmJiBpbnRlcnNl
Y3RzTm9kZS5yZXR1cm5WYWx1ZSgpKQorICAgICAgICAgICAgcGxhY2Vob2xkZXJzLmFwcGVuZChw
bGFjZWhvbGRlcik7CisgICAgfQorCisgICAgaWYgKHBsYWNlaG9sZGVycy5zaXplKCkgIT0gaW1h
Z2VTaXplcy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsYWNlaG9sZGVy
cy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVy
c1tpXTsKKyAgICAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZVNpemVzW2ldOworICAgICAgICBk
b3VibGUgY2xpZW50V2lkdGggPSBwbGFjZWhvbGRlci0+Y2xpZW50V2lkdGgoKTsKKyAgICAgICAg
ZG91YmxlIGhlaWdodFJlc3BlY3RpbmdBc3BlY3RSYXRpbyA9IChpbWFnZVNpemUuaGVpZ2h0KCkg
KiBjbGllbnRXaWR0aCkgLyBpbWFnZVNpemUud2lkdGgoKTsKKyAgICAgICAgcGxhY2Vob2xkZXIt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRy
LCBBdG9tU3RyaW5nOjpudW1iZXIoaGVpZ2h0UmVzcGVjdGluZ0FzcGVjdFJhdGlvKSk7CisgICAg
fQorCisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgbV9kcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnMgPSBXVEZNb3ZlKHBsYWNlaG9sZGVycyk7CisgICAgbV9kcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlclJhbmdlID0gV1RGTW92ZShpbnNlcnRlZENvbnRlbnRSYW5nZSk7CisKKyAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICBjYXJldENvbnRyb2xsZXIuc2V0Q2FyZXRQ
b3NpdGlvbihtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7
Cit9CisKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXIoSFRNTEltYWdlRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJUKHBsYWNlaG9s
ZGVyLmlzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKSk7CisgICAgcGxhY2Vob2xkZXIucmVtb3Zl
QXR0cmlidXRlKEhUTUxOYW1lczo6aGVpZ2h0QXR0cik7CisgICAgcGxhY2Vob2xkZXIucmVtb3Zl
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Cit9CisKIC8v
IE1hbnVhbCBkcmFnIGNhcmV0IG1hbmlwdWxhdGlvbgogdm9pZCBEcmFnQ29udHJvbGxlcjo6cGxh
Y2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDczZmVkMDlmMTBjNTIwYzUxYmYyOGJkZjY0ZDIxZWNj
NmE4ZGI2M2QuLmQyYmExZmNhYjExY2YyYjliOGM0YWQ2Y2JhNzFmMDM1YzIyM2FkMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgRHJh
Z0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlv
bjsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CkBAIC04OCw2ICs4OSwxMiBAQCBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbzsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRW5kZWQo
KTsKICAgICAgICAgCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhY2VEcmFnQ2FyZXQo
Y29uc3QgSW50UG9pbnQmKTsKKworICAgICAgICBjb25zdCBWZWN0b3I8UmVmPEhUTUxJbWFnZUVs
ZW1lbnQ+PiYgZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKCkgY29uc3QgeyByZXR1cm4gbV9kcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnM7IH0KKyAgICAgICAgY29uc3QgUmVmUHRyPFJhbmdlPiYgZHJv
cHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJSYW5nZTsgfQorCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluYWxp
emVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChj
b25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMpOwogICAgICAgICAKICAgICAgICAgYm9v
bCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBz
cmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50
JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgICAgICBzdGF0
aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwpAQCAtMTI4LDYgKzEzNSw5IEBA
IHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogI2VuZGlmCiAgICAgICAgIH0KIAorICAg
ICAgICBib29sIHRyeVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IERyYWdE
YXRhJik7CisgICAgICAgIHZvaWQgcmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKCk7
CisKICAgICAgICAgU3RyaW5nIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgY2xlYW51cEFmdGVyU3lzdGVtRHJh
ZygpOwpAQCAtMTUyLDYgKzE2Miw4IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwog
ICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAgIFVSTCBtX2RyYWdnaW5nSW1h
Z2VVUkw7CiAgICAgICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKKyAgICAg
ICAgVmVjdG9yPFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnM7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdl
OwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRHJhZ2dhYmxlTGluayhjb25z
dCBFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjg3N2Nl
ZGJlNjA4MjZjYzIwODUwYzkxNzFlYjg5NjVkNWE5NDNhYS4uZmI4NjBlMTM4NDUyMWE5ODk1YzQ3
YTUyYjQ5YTI0MzJiYTNmZDg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJl
YWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmKSA9IDA7CisjZW5kaWYKIH07CiAKIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5U
ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLmgKaW5kZXggZjU1MjE5NjFiNmE5MDVkYmY3Njc4ZDAyM2YxNjIyNTU4MTk4NjBiYS4u
NDc1Yzc5YWVkOWJhMjljMTA2ZThkNDQ2ZTIzMjg4ZGUyMWY3MmQ5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JU
IFN0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgTUlNRVR5cGVG
cm9tVVRJVHJlZShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBVVElGcm9t
TUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkNWI1OWM3YmMy
ZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgxMWZhNWYuLjY4YWY4MzQ1Y2Q2ZjRjNmFjNzU4NGE5YWFl
ZjYxZGNmZTUwYWY3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC03NDQsNiArNzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlQWRkaXRpb25hbERy
YWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7CiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRB
Y3Rpb25zKTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2Vk
QWN0aW9ucyk7CisgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGE+KTsKICAgICB2b2lkIGRpZENvbmNsdWRlRHJvcCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oCmluZGV4IGY1N2RiOWYwOWUxNWRiYzRlM2JkYzBiOTQwOTViNTA4MTdlODE0ODkuLmQyZTBi
OTA5ZmVjNTQ0YzUzMjk2MTYzMDJmOGY3YmFhYjk4MjIzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTU5
LDYgKzU5LDExIEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIE5TSW50ZWdlciBpdGVt
SWRlbnRpZmllciB7IDAgfTsKIH07CiAKK3N0cnVjdCBJdGVtQW5kUHJldmlldyB7CisgICAgUmV0
YWluUHRyPFVJRHJhZ0l0ZW0+IGl0ZW07CisgICAgUmV0YWluUHRyPFVJVGFyZ2V0ZWREcmFnUHJl
dmlldz4gcHJldmlldzsKK307CisKIHN0cnVjdCBJdGVtQW5kUHJldmlld1Byb3ZpZGVyIHsKICAg
ICBSZXRhaW5QdHI8VUlEcmFnSXRlbT4gaXRlbTsKICAgICBCbG9ja1B0cjx2b2lkKFVJVGFyZ2V0
ZWREcmFnUHJldmlldyAqKT4gcHJvdmlkZXI7CkBAIC05OCwxMyArMTAzLDE3IEBAIHB1YmxpYzoK
ICAgICBCbG9ja1B0cjx2b2lkKCk+IHRha2VEcmFnQ2FuY2VsU2V0RG93bkJsb2NrKCkgeyByZXR1
cm4gV1RGTW92ZShtX2RyYWdDYW5jZWxTZXREb3duQmxvY2spOyB9CiAgICAgQmxvY2tQdHI8dm9p
ZChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKik+IHRha2VBZGREcmFnSXRlbUNvbXBsZXRpb25CbG9j
aygpIHsgcmV0dXJuIFdURk1vdmUobV9hZGREcmFnSXRlbUNvbXBsZXRpb25CbG9jayk7IH0KIAor
ICAgIHZvaWQgc2V0RGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKiwgVUlUYXJnZXRlZERy
YWdQcmV2aWV3ICopOwogICAgIHZvaWQgcHJlcGFyZUZvckRlbGF5ZWREcm9wUHJldmlldyhVSURy
YWdJdGVtICosIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcp
KTsKICAgICB2b2lkIGRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpjb250ZW50Vmll
dywgVUlWaWV3ICpwcmV2aWV3Q29udGFpbmVyLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRl
bnRWaWV3LCBDR1JlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0LCBOU0FycmF5PFVJRHJhZ0l0ZW0g
Kj4gKiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwbGFjZWhvbGRlclJlY3RzKTsK
ICAgICB2b2lkIGNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiAgICAg
T3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBhY3RpdmVEcmFnU291cmNlRm9ySXRlbShVSURyYWdJ
dGVtICopIGNvbnN0OworICAgIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqZGVmYXVsdERyb3BQcmV2
aWV3KFVJRHJhZ0l0ZW0gKikgY29uc3Q7CisgICAgQmxvY2tQdHI8dm9pZChVSVRhcmdldGVkRHJh
Z1ByZXZpZXcgKik+IGRyb3BQcmV2aWV3UHJvdmlkZXIoVUlEcmFnSXRlbSAqKTsKIAogICAgIENH
UG9pbnQgbV9sYXN0R2xvYmFsUG9zaXRpb24geyBDR1BvaW50WmVybyB9OwogICAgIENHUG9pbnQg
bV9hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCB7IENHUG9pbnRaZXJvIH07CkBAIC0xMTksNiAr
MTI4LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IG1fc3RhZ2Vk
RHJhZ1NvdXJjZTsKICAgICBWZWN0b3I8RHJhZ1NvdXJjZVN0YXRlPiBtX2FjdGl2ZURyYWdTb3Vy
Y2VzOwogICAgIFZlY3RvcjxJdGVtQW5kUHJldmlld1Byb3ZpZGVyPiBtX2RlbGF5ZWRJdGVtUHJl
dmlld1Byb3ZpZGVyczsKKyAgICBWZWN0b3I8SXRlbUFuZFByZXZpZXc+IG1fZGVmYXVsdERyb3BQ
cmV2aWV3czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXgg
YWYyNzZhMzAzMDkyZTA2YTgwODk0NzM3MDllOWJhY2UxZWVlNGQ5NC4uNTg4ZTgzYzk1MmFjOTFm
MzE5ZWRlMWQwY2Y4NTM3ZmVmYzcxMDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC0yMywxMSArMjMs
MTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgiCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JbWFnZS5oPgogCkBAIC0xODUsNiArMTg2LDMxIEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjpkcmFnU2Vzc2lvbldpbGxCZWdpbigpCiAgICAgdXBkYXRlUHJldmlld3NGb3JB
Y3RpdmVEcmFnU291cmNlcygpOwogfQogCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
c2V0RGVmYXVsdERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKml0ZW0sIFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqcHJldmlldykKK3sKKyAgICBtX2RlZmF1bHREcm9wUHJldmlld3MuYXBwZW5kKHsgaXRl
bSwgcHJldmlldyB9KTsKK30KKworVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGU6OmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJdGVtICppdGVtKSBjb25zdAor
eworICAgIGF1dG8gbWF0Y2hJbmRleCA9IG1fZGVmYXVsdERyb3BQcmV2aWV3cy5maW5kTWF0Y2hp
bmcoWyZdIChhdXRvJiBpdGVtQW5kUHJldmlldykgeworICAgICAgICByZXR1cm4gaXRlbUFuZFBy
ZXZpZXcuaXRlbSA9PSBpdGVtOworICAgIH0pOworICAgIHJldHVybiBtYXRjaEluZGV4ID09IG5v
dEZvdW5kID8gbmlsIDogbV9kZWZhdWx0RHJvcFByZXZpZXdzW21hdGNoSW5kZXhdLnByZXZpZXcu
Z2V0KCk7Cit9CisKK0Jsb2NrUHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopPiBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OmRyb3BQcmV2aWV3UHJvdmlkZXIoVUlEcmFnSXRlbSAqaXRl
bSkKK3sKKyAgICBhdXRvIG1hdGNoSW5kZXggPSBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVy
cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBpdGVtQW5kUHJvdmlkZXIpIHsKKyAgICAgICAgcmV0
dXJuIGl0ZW1BbmRQcm92aWRlci5pdGVtID09IGl0ZW07CisgICAgfSk7CisKKyAgICBpZiAobWF0
Y2hJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBt
X2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVyc1ttYXRjaEluZGV4XS5wcm92aWRlcjsKK30KKwog
dm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnByZXBhcmVGb3JEZWxheWVkRHJvcFByZXZp
ZXcoVUlEcmFnSXRlbSAqaXRlbSwgdm9pZChecHJvdmlkZXIpKFVJVGFyZ2V0ZWREcmFnUHJldmll
dyAqcHJldmlldykpCiB7CiAgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuYXBwZW5k
KHsgaXRlbSwgcHJvdmlkZXIgfSk7CkBAIC0yMDIsNiArMjI4LDYxIEBAIHZvaWQgRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KFVJVmlldyAqY29udGVu
dFZpZXcsIFVJCiAgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKIH0K
IAordm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRlbGl2ZXJEZWxheWVkRHJvcFByZXZp
ZXcoVUlWaWV3ICpjb250ZW50VmlldywgQ0dSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCwgTlNB
cnJheTxVSURyYWdJdGVtICo+ICppdGVtcywgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwbGFjZWhv
bGRlclJlY3RzKQoreworICAgIGlmIChpdGVtcy5jb3VudCAhPSBwbGFjZWhvbGRlclJlY3RzLnNp
emUoKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBhbmlt
YXRlIGltYWdlIHBsYWNlaG9sZGVyczogbnVtYmVyIG9mIGRyYWcgaXRlbXMgKCV0dSkgZG9lcyBu
b3QgbWF0Y2ggbnVtYmVyIG9mIHBsYWNlaG9sZGVycyAoJXR1KSIsIGl0ZW1zLmNvdW50LCBwbGFj
ZWhvbGRlclJlY3RzLnNpemUoKSk7CisgICAgICAgIGNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3
UHJvdmlkZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBsYWNlaG9sZGVyUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVUlEcmFn
SXRlbSAqaXRlbSA9IFtpdGVtcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBhdXRvJiBwbGFj
ZWhvbGRlclJlY3QgPSBwbGFjZWhvbGRlclJlY3RzW2ldOworICAgICAgICBhdXRvIHByb3ZpZGVy
ID0gZHJvcFByZXZpZXdQcm92aWRlcihpdGVtKTsKKyAgICAgICAgaWYgKCFwcm92aWRlcikKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gZGVmYXVsdFByZXZpZXcgPSBkZWZh
dWx0RHJvcFByZXZpZXcoaXRlbSk7CisgICAgICAgIGF1dG8gZGVmYXVsdFByZXZpZXdTaXplID0g
W2RlZmF1bHRQcmV2aWV3IHNpemVdOworICAgICAgICBpZiAoIWRlZmF1bHRQcmV2aWV3IHx8IGRl
ZmF1bHRQcmV2aWV3U2l6ZS53aWR0aCA8PSAwIHx8IGRlZmF1bHRQcmV2aWV3U2l6ZS5oZWlnaHQg
PD0gMCB8fCBwbGFjZWhvbGRlclJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwcm92aWRl
cihuaWwpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBGbG9h
dFJlY3QgcHJldmlld0ludGVyc2VjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KENHUmVjdElu
dGVyc2VjdGlvbih1bm9ic2N1cmVkQ29udGVudFJlY3QsIHBsYWNlaG9sZGVyUmVjdCkpOworICAg
ICAgICBpZiAocHJldmlld0ludGVyc2VjdGlvblJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAvLyBJZiB0aGUgcHJldmlldyByZWN0IGlzIGNvbXBsZXRlbHkgb2Zmc2NyZWVuLCBkb24ndCBi
b3RoZXIgdHJ5aW5nIHRvIGNsaXAgb3V0IG9yIHNjYWxlIHRoZSBkZWZhdWx0IHByZXZpZXc7Cisg
ICAgICAgICAgICAvLyBzaW1wbHkgcmV0YXJnZXQgdGhlIGRlZmF1bHQgcHJldmlldy4KKyAgICAg
ICAgICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2Nd
IGluaXRXaXRoQ29udGFpbmVyOmNvbnRlbnRWaWV3IGNlbnRlcjpwbGFjZWhvbGRlclJlY3QuY2Vu
dGVyKCldKTsKKyAgICAgICAgICAgIHByb3ZpZGVyKFtkZWZhdWx0UHJldmlldyByZXRhcmdldGVk
UHJldmlld1dpdGhUYXJnZXQ6dGFyZ2V0LmdldCgpXSk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFRhcmdldGVkIHByZXZpZXdzIGRvbid0IGNsaXAgdG8g
dGhlIGJvdW5kcyBvZiBhbnkgZW5jbG9zaW5nIHZpZXc7IHRoaXMgbWVhbnMgdGhhdCB3aGVuIHRh
cmdldGluZyBwcmV2aWV3cyBvdXRzaWRlCisgICAgICAgIC8vIHRoZSB2aXNpYmxlIGJvdW5kcyBv
ZiB0aGUgY29udGVudCB2aWV3LCB0aGUgcHJldmlldyB3aWxsIHNwaWxsIG91dCB0aGUgd2ViIHZp
ZXcuIFRoaXMgaXMgbW9zdCBub3RpY2VhYmxlIHdoZW4KKyAgICAgICAgLy8gZHJvcHBpbmcgYSB0
YWxsIGltYWdlIGludG8gTWFpbCBjb21wb3NlIG9uIGlPUyAxMywgd2hlcmUgdGhlIGJvdHRvbSBv
ZiB0aGUgY29tcG9zZSB3aW5kb3cgaXMgbm90IGZsdXNoIGFnYWluc3QKKyAgICAgICAgLy8gdGhl
IGJvdHRvbSBvZiB0aGUgd2luZG93LiBUbyBtaXRpZ2F0ZSB0aGlzLCB3ZSB1c2UgdGhlIHByZXZp
ZXcgdGFyZ2V0J3MgYHZpc2libGVQYXRoYCBwcm9wZXJ0eSB0byBjbGlwIHRoZSBkZWZhdWx0Cisg
ICAgICAgIC8vIGRyb3AgcHJldmlldydzIHZpZXcsIGJ5IHRoZSBzYW1lIHByb3BvcnRpb24gdGhh
dCB0aGUgZmluYWwgcGxhY2Vob2xkZXIgaW1hZ2UgaXMgY2xpcHBlZCAod2l0aCByZXNwZWN0IHRv
IHRoZQorICAgICAgICAvLyB1bm9ic2N1cmVkIGNvbnRlbnQgcmVjdCkuCisgICAgICAgIGF1dG8g
cHJldmlld0JvdW5kcyA9IFtkZWZhdWx0UHJldmlldyB2aWV3XS5ib3VuZHM7CisgICAgICAgIGF1
dG8gaW5zZXRQcmV2aWV3Qm91bmRzID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHByZXZpZXdCb3Vu
ZHMsIHsKKyAgICAgICAgICAgIChwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC55KCkgLSBwbGFjZWhv
bGRlclJlY3QueSgpKSAvIHBsYWNlaG9sZGVyUmVjdC5oZWlnaHQoKSAqIHByZXZpZXdCb3VuZHMu
c2l6ZS5oZWlnaHQsCisgICAgICAgICAgICAocHJldmlld0ludGVyc2VjdGlvblJlY3QueCgpIC0g
cGxhY2Vob2xkZXJSZWN0LngoKSkgLyBwbGFjZWhvbGRlclJlY3Qud2lkdGgoKSAqIHByZXZpZXdC
b3VuZHMuc2l6ZS53aWR0aCwKKyAgICAgICAgICAgIChwbGFjZWhvbGRlclJlY3QubWF4WSgpIC0g
cHJldmlld0ludGVyc2VjdGlvblJlY3QubWF4WSgpKSAvIHBsYWNlaG9sZGVyUmVjdC5oZWlnaHQo
KSAqIHByZXZpZXdCb3VuZHMuc2l6ZS5oZWlnaHQsCisgICAgICAgICAgICAocGxhY2Vob2xkZXJS
ZWN0Lm1heFgoKSAtIHByZXZpZXdJbnRlcnNlY3Rpb25SZWN0Lm1heFgoKSkgLyBwbGFjZWhvbGRl
clJlY3Qud2lkdGgoKSAqIHByZXZpZXdCb3VuZHMuc2l6ZS53aWR0aAorICAgICAgICB9KTsKKwor
ICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHBsYWNl
aG9sZGVyUmVjdC53aWR0aCgpIC8gZGVmYXVsdFByZXZpZXdTaXplLndpZHRoLCBwbGFjZWhvbGRl
clJlY3QuaGVpZ2h0KCkgLyBkZWZhdWx0UHJldmlld1NpemUuaGVpZ2h0KTsKKyAgICAgICAgYXV0
byB0YXJnZXQgPSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10gaW5pdFdpdGhD
b250YWluZXI6Y29udGVudFZpZXcgY2VudGVyOnByZXZpZXdJbnRlcnNlY3Rpb25SZWN0LmNlbnRl
cigpIHRyYW5zZm9ybTp0cmFuc2Zvcm1dKTsKKyAgICAgICAgW2RlZmF1bHRQcmV2aWV3IHBhcmFt
ZXRlcnNdLnZpc2libGVQYXRoID0gW1VJQmV6aWVyUGF0aCBiZXppZXJQYXRoV2l0aFJlY3Q6aW5z
ZXRQcmV2aWV3Qm91bmRzXTsKKyAgICAgICAgYXV0byBuZXdQcmV2aWV3ID0gYWRvcHROUyhbW1VJ
VGFyZ2V0ZWREcmFnUHJldmlldyBhbGxvY10gaW5pdFdpdGhWaWV3OltkZWZhdWx0UHJldmlldyB2
aWV3XSBwYXJhbWV0ZXJzOltkZWZhdWx0UHJldmlldyBwYXJhbWV0ZXJzXSB0YXJnZXQ6dGFyZ2V0
LmdldCgpXSk7CisgICAgICAgIHByb3ZpZGVyKG5ld1ByZXZpZXcuZ2V0KCkpOworICAgIH0KKwor
ICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNsZWFyKCk7Cit9CisKIHZvaWQgRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpjbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVy
cygpCiB7CiAgICAgZm9yIChhdXRvJiBpdGVtQW5kUHJldmlld1Byb3ZpZGVyIDogbV9kZWxheWVk
SXRlbVByZXZpZXdQcm92aWRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggOTQ2NjE4NjkxYjRjZGQ5Zjhl
NzU2YWM4YjczOTg5ZDcxYTNhZDhlMy4uZjAzMThhZjEzOTM5MzU0NjMwZGQ4ZmU5MGNiZGQwY2Qy
MjhiZTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzUzLDYgKzM1Myw3IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAKICAgICBCT09MIF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlOwogICAgIEJPT0wgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90OworICAgIE5T
SW50ZWdlciBfZHJvcEFuaW1hdGlvbkNvdW50OwogCiAgICAgQk9PTCBfaGFzU2V0VXBJbnRlcmFj
dGlvbnM7CiAgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3VudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGQ0ZThkZDg2YzMyM2U3YmRmMmU0NWY0ODczMzAwOTNmMDc0YTBk
NDAuLmY2ZDk5OTc4NzI4ZTk2ZThiNmQyZmZmOTFmN2E1NTg5NzJkZTUyODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtOTMsNiArOTMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVi
b2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoLmg+CkBAIC0xMDIsNiArMTAzLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VU
SVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rp
b24uaD4KQEAgLTY3MDUsNiArNjcwNyw5IEBAIC0gKHZvaWQpX2RlbGl2ZXJEZWxheWVkRHJvcFBy
ZXZpZXdJZlBvc3NpYmxlOihPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0CiAgICAg
aWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYg
KCFfZHJvcEFuaW1hdGlvbkNvdW50KQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHVuc2Vs
ZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsK
ICAgICBfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBh
bGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0
KCldKTsKICAgICBbX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0RnJhbWU6ZGF0YS0+Y29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwpAQCAt
Njk3MSw2ICs2OTc2LDcyIEBAIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50
KXBvaW50IHdpdGhDb250ZXh0UmVxdWVzdDooVUlXS0RvY3VtZW50UmVxCiAKICNlbmRpZgogCitz
dGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRz
VG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyhOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICppdGVt
UHJvdmlkZXJzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplczsKKyAgICBm
b3IgKE5TSXRlbVByb3ZpZGVyICppdGVtIGluIGl0ZW1Qcm92aWRlcnMpIHsKKyAgICAgICAgaWYg
KCFXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoV2Vi
Q29yZTo6TUlNRVR5cGVGcm9tVVRJKGl0ZW0ud2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXMuZmly
c3RPYmplY3QpKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgV2ViQ29yZTo6
SW50U2l6ZSBwcmVzZW50YXRpb25TaXplKGl0ZW0ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSk7
CisgICAgICAgIGlmIChwcmVzZW50YXRpb25TaXplLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICAgICAgc2l6ZXMuYXBwZW5kKFdURk1vdmUocHJlc2VudGF0aW9uU2l6
ZSkpOworICAgIH0KKyAgICByZXR1cm4gc2l6ZXM7Cit9CisKKy0gKEJPT0wpX2hhbmRsZURyb3BC
eUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOihOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycyBzZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgoreworICAg
IGlmICghX3dlYlZpZXcuX2VkaXRhYmxlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBpZiAo
X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kcmFnU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4g
Tk87CisKKyAgICBpZiAoc2Vzc2lvbi5pdGVtcy5jb3VudCAhPSBpdGVtUHJvdmlkZXJzLmNvdW50
KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBhdXRvIGltYWdlUGxhY2Vob2xkZXJTaXplcyA9
IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyhpdGVt
UHJvdmlkZXJzKTsKKyAgICBpZiAoaW1hZ2VQbGFjZWhvbGRlclNpemVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIE5POworCisgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJJbnNlcnRp
bmcgZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlcnMgZm9yIHNlc3Npb246ICVwIiwgc2Vzc2lvbik7
CisKKyAgICBfcGFnZS0+aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlUGxhY2Vo
b2xkZXJTaXplcywgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGRyYWdJdGVtcyA9
IHJldGFpblB0cihzZXNzaW9uLml0ZW1zKV0gKGF1dG8mIHBsYWNlaG9sZGVyUmVjdHMsIGF1dG8g
ZGF0YSkgeworICAgICAgICBhdXRvJiBzdGF0ZSA9IHByb3RlY3RlZFNlbGYtPl9kcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGU7CisgICAgICAgIGlmICghZGF0YSB8fCAhcHJvdGVjdGVkU2VsZi0+X2Ry
b3BBbmltYXRpb25Db3VudCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3As
ICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IG1pc3NpbmcgdGV4dCBpbmRp
Y2F0b3IgZGF0YS4iKTsKKyAgICAgICAgICAgIHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2
aWV3UHJvdmlkZXJzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbiA9IGRhdGEtPmNvbnRlbnRJbWFnZVdpdGhv
dXRTZWxlY3Rpb247CisgICAgICAgIGlmICghc25hcHNob3RXaXRob3V0U2VsZWN0aW9uKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBhbmltYXRlIGlt
YWdlIHBsYWNlaG9sZGVyczogbWlzc2luZyB1bnNlbGVjdGVkIGNvbnRlbnQgaW1hZ2UuIik7Cisg
ICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byB1bnNlbGVjdGVk
U25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0aXZlSW1hZ2UoKTsK
KyAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkgeworICAgICAgICAgICAgUkVM
RUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRl
cnM6IGNvdWxkIG5vdCBkZWNvZGUgdW5zZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOworICAgICAg
ICAgICAgc3RhdGUuY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRl
bnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25V
cF0pOworICAgICAgICBhdXRvIHNuYXBzaG90VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBh
bGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0
KCldKTsKKyAgICAgICAgW3NuYXBzaG90VmlldyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VX
aXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CisgICAgICAgIFtwcm90
ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25hcHNob3RWaWV3LmdldCgpXTsKKyAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90Vmll
dyk7CisgICAgICAgIHN0YXRlLmRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcocHJvdGVjdGVkU2Vs
Zi5nZXQoKSwgW3Byb3RlY3RlZFNlbGYgdW5vYnNjdXJlZENvbnRlbnRSZWN0XSwgZHJhZ0l0ZW1z
LmdldCgpLCBwbGFjZWhvbGRlclJlY3RzKTsKKyAgICB9KTsKKworICAgIHJldHVybiBZRVM7Cit9
CisKICNwcmFnbWEgbWFyayAtIFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdhdGUKIAogLSAoQk9PTClf
ZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNob3VsZERl
bGF5Q29tcGV0aW5nR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKiljb21w
ZXRpbmdHZXN0dXJlUmVjb2duaXplcgpAQCAtNzI1MSw2ICs3MzIyLDcgQEAgLSAodm9pZClkcm9w
SW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcGVyZm9ybURyb3A6
KGlkIDxVSURyb3AKICAgICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFu
Y2VdIHNldEl0ZW1Qcm92aWRlcnM6aXRlbVByb3ZpZGVyc107CiAgICAgW1tXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXSBpbmNyZW1lbnRQZW5kaW5nT3BlcmF0aW9uQ291
bnRdOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvckRyb3BTZXNzaW9uOnNl
c3Npb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55XTsK
KyAgICBCT09MIHNob3VsZFNuYXBzaG90VmlldyA9ICFbc2VsZiBfaGFuZGxlRHJvcEJ5SW5zZXJ0
aW5nSW1hZ2VQbGFjZWhvbGRlcnM6aXRlbVByb3ZpZGVycyBzZXNzaW9uOnNlc3Npb25dOwogCiAg
ICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJMb2FkaW5nIGRhdGEgZnJvbSAldHUgaXRlbSBw
cm92aWRlcnMgZm9yIHNlc3Npb246ICVwIiwgaXRlbVByb3ZpZGVycy5jb3VudCwgc2Vzc2lvbik7
CiAgICAgLy8gQWx3YXlzIGxvYWRpbmcgY29udGVudCBmcm9tIHRoZSBpdGVtIHByb3ZpZGVyIGVu
c3VyZXMgdGhhdCB0aGUgd2ViIHByb2Nlc3Mgd2lsbCBiZSBhbGxvd2VkIHRvIGNhbGwgYmFjayBp
biB0byB0aGUgVUkKQEAgLTcyNTgsNyArNzMzMCw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9u
OihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHBlcmZvcm1Ecm9wOihpZCA8VUlEcm9w
CiAgICAgLy8gb3IgdGhlIHBhZ2UgcHJldmVudGVkIGRlZmF1bHQgb24gYGRyYWdvdmVyYCwgYnV0
IHdpdGhvdXQgdGhpcywgZHJvcHBpbmcgaW50byBhIG5vcm1hbCBlZGl0YWJsZSBhcmVhcyB3aWxs
IGZhaWwgZHVlIHRvCiAgICAgLy8gaXRlbSBwcm92aWRlcnMgbm90IGxvYWRpbmcgYW55IGRhdGEu
CiAgICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHJldGFpbmVkU2VsZihzZWxmKTsKLSAgICBb
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGRvQWZ0ZXJMb2FkaW5n
UHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOltyZXRhaW5lZFNlbGYsIGNhcHR1cmVkRHJhZ0Rh
dGEgPSBXVEZNb3ZlKGRyYWdEYXRhKV0gKE5TQXJyYXkgKmZpbGVVUkxzKSBtdXRhYmxlIHsKKyAg
ICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGRvQWZ0ZXJMb2Fk
aW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOltyZXRhaW5lZFNlbGYsIGNhcHR1cmVkRHJh
Z0RhdGEgPSBXVEZNb3ZlKGRyYWdEYXRhKSwgc2hvdWxkU25hcHNob3RWaWV3XSAoTlNBcnJheSAq
ZmlsZVVSTHMpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkxv
YWRlZCBkYXRhIGludG8gJXR1IGZpbGVzIiwgZmlsZVVSTHMuY291bnQpOwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBmaWxlbmFtZXM7CiAgICAgICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gZmls
ZVVSTHMpCkBAIC03MjY5LDE4ICs3MzQxLDIwIEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihV
SURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHBlcmZvcm1Ecm9wOihpZCA8VUlEcm9wCiAg
ICAgICAgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVu
c2lvbkZvclVwbG9hZDsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGFnZS0+Y3JlYXRlU2FuZGJv
eEV4dGVuc2lvbnNJZk5lZWRlZChmaWxlbmFtZXMsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNh
bmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wYWdlLT5w
ZXJmb3JtRHJhZ09wZXJhdGlvbihjYXB0dXJlZERyYWdEYXRhLCAiZGF0YSBpbnRlcmFjdGlvbiBw
YXN0ZWJvYXJkIiwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uRm9yVXBsb2FkKSk7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+X3Zpc2libGVD
b250ZW50Vmlld1NuYXBzaG90ID0gW3JldGFpbmVkU2VsZiBzbmFwc2hvdFZpZXdBZnRlclNjcmVl
blVwZGF0ZXM6Tk9dOwotICAgICAgICBbVUlWaWV3IHBlcmZvcm1XaXRob3V0QW5pbWF0aW9uOlty
ZXRhaW5lZFNlbGZdIHsKKyAgICAgICAgaWYgKHNob3VsZFNuYXBzaG90VmlldykgeworICAgICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgPSBbcmV0YWlu
ZWRTZWxmIHNuYXBzaG90Vmlld0FmdGVyU2NyZWVuVXBkYXRlczpOT107CiAgICAgICAgICAgICBb
cmV0YWluZWRTZWxmLT5fdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3Qgc2V0RnJhbWU6W3JldGFp
bmVkU2VsZiBib3VuZHNdXTsKICAgICAgICAgICAgIFtyZXRhaW5lZFNlbGYgYWRkU3Vidmlldzpy
ZXRhaW5lZFNlbGYtPl92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQoKV07Ci0gICAgICAg
IH1dOworICAgICAgICB9CiAgICAgfV07CiB9CiAKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihV
SURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGl0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdp
bGxBbmltYXRlRHJvcFdpdGhBbmltYXRvcjooaWQgPFVJRHJhZ0FuaW1hdGluZz4pYW5pbWF0b3IK
IHsKKyAgICBfZHJvcEFuaW1hdGlvbkNvdW50Kys7CiAgICAgW2FuaW1hdG9yIGFkZENvbXBsZXRp
b246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChVSVZpZXdBbmltYXRpbmdQb3NpdGlv
bikgewotICAgICAgICBbc3RkOjpleGNoYW5nZShzdHJvbmdTZWxmLT5fdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgaWYgKCEtLXN0
cm9uZ1NlbGYtPl9kcm9wQW5pbWF0aW9uQ291bnQpCisgICAgICAgICAgICBbc3RkOjpleGNoYW5n
ZShzdHJvbmdTZWxmLT5fdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKICAgICB9XTsKIH0KIApAQCAtNzI5NCw2ICs3MzY4LDggQEAgLSAodm9pZClk
cm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uY2x1ZGVE
cm9wOihpZCA8VUlEcm8KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJvcEludGVyYWN0
aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JEcm9wcGluZ0l0
ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
KilkZWZhdWx0UHJldmlldwogeworICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuc2V0RGVm
YXVsdERyb3BQcmV2aWV3KGl0ZW0sIGRlZmF1bHRQcmV2aWV3KTsKKwogICAgIENHUmVjdCBjYXJl
dFJlY3QgPSBfcGFnZS0+Y3VycmVudERyYWdDYXJldFJlY3QoKTsKICAgICBpZiAoQ0dSZWN0SXNF
bXB0eShjYXJldFJlY3QpKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMGQ4ZDhmZGJmMWEzY2NkYjhl
OWYzMDBkYzBiZWZjNmMxNTg0OTIwNC4uYzIxZTQ5NmYwZDUwYzhkYjA3YmUxNGE1MjcwOWYwZDZj
MTdmMjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0xMjE1LDYgKzEyMTUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
ZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG8KICAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25h
bEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxv
d2VkQWN0aW9ucyksIG1fd2ViUGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omluc2Vy
dERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgT3B0aW9u
YWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV93ZWJQYWdlSUQpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBXVEY6Om51bGxvcHQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFJlY2VpdmVFZGl0
RHJhZ1NuYXBzaG90KCkKIHsKICAgICBwYWdlQ2xpZW50KCkud2lsbFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUxN2FhMmQxMjU4Ni4uZTYzZmJmZmQ3Yjkz
ODRmMTZhZDRlNWExZmRiM2U4ZGI1NTUzMWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTI4OSw2ICsxMjg5LDcgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lk
IHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93
ZWRBY3Rpb25zKTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOworICAg
IHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBs
eSk7CiAgICAgdm9pZCBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCA1YjllMWUwN2ViN2Q4YjcwYjI1NWFlMmI3MmI2Njk1MDQ4OWNhZTM3Li5l
ZTY2YjNkMjM2OTk1OTkxODdmZjljN2U0N2JmNGVjMDU0ODJhOTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMx
MCw2ICszMTAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChXZWJD
b3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9z
aXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQogICAgIFJlcXVlc3RBZGRpdGlvbmFsSXRl
bXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQorICAg
IEluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4g
aW1hZ2VTaXplKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGRyb3BQcmV2aWV3UmVjdHMs
IE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3lu
YwogICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzOGUxYjk1NTc1NzNk
NjFmN2YzYzFiMmRhZTAwMDU2MDY4ODAwOTRhLi44M2JlMWM3OGY3MjEzYzQwM2M1MGRhMzc1N2Fl
MWRkZGVjYTEyOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtODk0LDYgKzg5NCw0MCBAQCB2b2lkIFdlYlBhZ2U6OnJl
cXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpbwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWRkaXRp
b25hbERyYWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwogfQogCit2b2lkIFdlYlBhZ2U6
Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGlt
YWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+Jiwg
T3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBseSkKK3sKKyAgICBt
X3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRD
YXJldChpbWFnZVNpemVzKTsKKyAgICBhdXRvIHBsYWNlaG9sZGVyUmVjdHMgPSBtX3BhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKCkubWFwKFsmXSAoYXV0byYg
ZWxlbWVudCkgeworICAgICAgICByZXR1cm4gcm9vdFZpZXdCb3VuZHNGb3JFbGVtZW50KGVsZW1l
bnQpOworICAgIH0pOworCisgICAgYXV0byBpbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSgpOworICAgIGlm
IChwbGFjZWhvbGRlclJlY3RzLnNpemUoKSAhPSBpbWFnZVNpemVzLnNpemUoKSkgeworICAgICAg
ICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBpbnNlcnQgZHJvcHBlZCBpbWFn
ZSBwbGFjZWhvbGRlcnM6IHBsYWNlaG9sZGVyIHJlY3QgY291bnQgKCV0dSkgZG9lcyBub3QgbWF0
Y2ggaW1hZ2Ugc2l6ZSBjb3VudCAoJXR1KS4iLCBwbGFjZWhvbGRlclJlY3RzLnNpemUoKSwgaW1h
Z2VTaXplcy5zaXplKCkpOworICAgICAgICByZXBseSh7IH0sIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlUGxhY2Vob2xkZXJSYW5nZSkgewor
ICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBpbnNlcnQgZHJvcHBl
ZCBpbWFnZSBwbGFjZWhvbGRlcnM6IG5vIGltYWdlIHBsYWNlaG9sZGVyIHJhbmdlLiIpOworICAg
ICAgICByZXBseSh7IH0sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvckRhdGE7CisgICAg
T3B0aW9uU2V0PFRleHRJbmRpY2F0b3JPcHRpb24+IHRleHRJbmRpY2F0b3JPcHRpb25zID0gewor
ICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29u
dGVudFdpdGhvdXRTZWxlY3Rpb24sCisgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25FeHBhbmRD
bGlwQmV5b25kVmlzaWJsZVJlY3QsCisgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEFs
bENvbnRlbnQsCisgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VTZWxlY3Rpb25SZWN0Rm9y
U2l6aW5nCisgICAgfTsKKworICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmltYWdlUGxhY2Vob2xkZXJSYW5nZSwgdGV4dEluZGljYXRv
ck9wdGlvbnMudG9SYXcoKSwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5v
bmUsIHsgfSkpCisgICAgICAgIHRleHRJbmRpY2F0b3JEYXRhID0gdGV4dEluZGljYXRvci0+ZGF0
YSgpOworCisgICAgcmVwbHkoV1RGTW92ZShwbGFjZWhvbGRlclJlY3RzKSwgV1RGTW92ZSh0ZXh0
SW5kaWNhdG9yRGF0YSkpOworfQorCiB2b2lkIFdlYlBhZ2U6OmRpZENvbmNsdWRlRHJvcCgpCiB7
CiAgICAgbV9yYW5nZUZvckRyb3BTbmFwc2hvdCA9IG51bGxwdHI7CkBAIC05MjMsNiArOTU3LDkg
QEAgdm9pZCBXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREcmFnKCkKIAogdm9pZCBXZWJQYWdlOjpk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CisgICAgaWYgKGVsZW1lbnQuaXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigp
KQorICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZmluYWxpemVEcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcihlbGVtZW50KTsKKwogICAgIGlmIChtX3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9y
RHJvcFNuYXBzaG90LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWFmMWY4YWE3NzVjNDBmNmM4
ZGFhNjIzMmY2MmIzNDE5M2NhOWNiNi4uNWI3M2EzYTk2YzBiN2NiZGYwZWFhMTMxYWFkN2FlY2Jm
ZGE3ZmRmMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA5LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3AgYW5pbWF0aW9uIHdoZW4gZHJhZ2dp
bmcgaW1hZ2VzIGZyb20gUGhvdG9zIHRvIFdlYktpdDIgTWFpbCBjb21wb3NlIGlzIGluY29ycmVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjc0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTI1MDk1Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IEFQSSB0ZXN0
cyB0byBleGVyY2lzZSB0aGUgbmV3IGltYWdlIHBsYWNlaG9sZGVyIGRyb3AgY29kZXBhdGgsIGlu
IGFkZGl0aW9uIHRvIHRlc3RpbmcKKyAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgdG8gc2ltdWxhdGUg
dGhlIHRpbWluZyBvZiBkcm9wIGFuaW1hdGlvbiBkZWxlZ2F0ZSBjYWxscy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW06CisgICAgICAgICgtW05TQXJyYXkgX2F0dGFjaG1lbnRXaXRoTmFtZTpdKToKKyAgICAg
ICAgKC1bVGVzdFdLV2ViVmlldyBhbGxCb3VuZGluZ0NsaWVudFJlY3RzOl0pOgorCisgICAgICAg
IEFkZCBzb21lIG5ldyBBUEkgdGVzdGluZyBoZWxwZXIgbWV0aG9kcy4KKworICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dGFyZ2V0ZWRJbWFnZURyYWdQcmV2aWV3KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCisgICAgICAgIEFkZCB0d28gbmV3IHRlc3RzLCB0bzoKKyAgICAgICAg
KDEpIHZlcmlmeSB0aGF0IGltYWdlcyBhcmUgZHJvcHBlZCBhcyBhdHRhY2htZW50LWJhY2tlZCBw
bGFjZWhvbGRlciBpbWFnZSBlbGVtZW50cyB3aGVuIHRoZSB3ZWIgdmlldyBpcyBlZGl0YWJsZQor
ICAgICAgICAgICAgYW5kIGVuYWJsZXMgYXR0YWNobWVudCBlbGVtZW50cywgYW5kCisgICAgICAg
ICgyKSB2ZXJpZnkgdGhhdCB3aGVuIGRyb3BwaW5nIGFuIGltYWdlIHRhbGxlciB0aGFuIHRoZSB3
ZWIgdmlldywgdGhlIGJvdHRvbSBwb3J0aW9uIG9mIHRoZSBkcm9wIHByZXZpZXcgaXMKKyAgICAg
ICAgICAgIGNsaXBwZWQgdXNpbmcgdGhlIHRhcmdldGVkIHByZXZpZXcgcGFyYW1ldGVyJ3Mgdmlz
aWJsZVBhdGguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tOgorICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOndpdGhEYXRhOl0pOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL05TSXRlbVByb3ZpZGVyQWRkaXRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW06
IEFkZGVkLgorCisgICAgICAgIE1vdmUgc29tZSBjb21tb24gaGVscGVycyBmb3IgcmVnaXN0ZXJp
bmcgZGF0YSBvbiBhIE5TSXRlbVByb3ZpZGVyIHRvIGEgc2VwYXJhdGUgZmlsZSwgc28gdGhhdCBp
dCBjYW4gYmUgdXNlZCBpbgorICAgICAgICBib3RoIFdLQXR0YWNobWVudFRlc3RzIGFuZCBEcmFn
QW5kRHJvcFRlc3RzLgorCisgICAgICAgICgtW05TSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJl
cHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6d2l0aERhdGE6XSk6CisgICAgICAgICgtW05T
SXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
d2l0aERhdGE6bG9hZGluZ0RlbGF5Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBpbml0V2l0aFdlYlZpZXc6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9j
b25jbHVkZURyb3BBbmRQZXJmb3JtT3BlcmF0aW9uSWZOZWNlc3NhcnldKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgY2xlYXJFeHRlcm5hbERyYWdJbmZvcm1hdGlvbl0pOgorICAg
ICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6ZGVm
YXVsdERyb3BQcmV2aWV3czpdKToKKworICAgICAgICBBZGQgYSBuZXcgbWV0aG9kIHRvIGFsbG93
IHRlc3RzIHRvIHNwZWNpZnkgYm90aCBhIGxpc3Qgb2YgZXh0ZXJuYWxseSBkcmFnZ2VkIGl0ZW0g
cHJvdmlkZXJzLCBhcyB3ZWxsIGFzIGRlZmF1bHQKKyAgICAgICAgdGFyZ2V0ZWQgcHJldmlld3Mg
Zm9yIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgaXRlbXMuIFRoZXNlIGRlZmF1bHQgcHJldmll
d3MgYXJlIHVzZWQgd2hlbiBpbnZva2luZyB0aGUgZHJvcAorICAgICAgICBpbnRlcmFjdGlvbiBk
ZWxlZ2F0ZSdzIHByZXZpZXcgZ2VuZXJhdGlvbiBtZXRob2RzLgorCisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGFkZEFuaW1hdGlvbnM6XSk6CisKKyAgICAgICAgTm90IGltcGxlbWVu
dGVkIHlldDsgZm9yIG5vdywgdGhpcyBzaW1wbHkgYXNzZXJ0cy4KKworICAgICAgICAoLVtEcmFn
QW5kRHJvcFNpbXVsYXRvciBhZGRDb21wbGV0aW9uOl0pOgorCisgICAgICAgIFF1ZXVlcyBhIGNv
bXBsZXRpb24gaGFuZGxlciwgd2hpY2ggaXMgaW52b2tlZCB3aGVuIHRoZSBkcm9wIGFuaW1hdGlv
biBmb3IgZWFjaCBpdGVtIGNvbXBsZXRlcy4gRGVwZW5kaW5nIG9uIHRoZQorICAgICAgICB2YWx1
ZSBvZiBEcmFnQW5kRHJvcFNpbXVsYXRvcidzIC1kcm9wQW5pbWF0aW9uVGltaW5nLCB0aGlzIG1h
eSBvY2N1ciBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGhhbmRsaW5nIHRoZSBkcm9wLgorICAgICAg
ICBCeSBkZWZhdWx0LCB0aGVzZSB3aWxsIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGRyb3AgY29tcGxl
dGVzLCB3aGljaCByZXByZXNlbnRzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBkYXRhIGNhbiBiZQor
ICAgICAgICBsb2FkZWQgcXVpY2tseSByZWxhdGl2ZSB0byB0aGUgZHJvcCBhbmltYXRpb24uCisK
KyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgX2ludm9rZURyb3BBbmltYXRpb25Db21w
bGV0aW9uQmxvY2tzQW5kQ29uY2x1ZGVEcm9wXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2lt
dWxhdG9yIF93ZWJWaWV3OmRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6Zm9yU2Vz
c2lvbjppdGVtUHJvdmlkZXJzOl0pOgorCiAyMDE5LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEluY29ycmVjdCBzZWxlY3Rpb24gcmVjdCBy
ZXZlYWxlZCBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhIGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiMTFkZGU1MjViMmViYjQ2NDgxOWI2MDM2YmIx
NDVjNWEzNDI5ODQuLjBjZDU3YjNlZmUyMzJkMjQ4ODFlODgyNzdhMTZjMjUyMjA3YjE4YjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIzLDYgKzEwMjMsNyBAQAogCQlGNEUwQTJCNDIx
MjI0MDJCMDBBRjdDN0YgLyogaW1hZ2UtYW5kLWZpbGUtdXBsb2FkLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMEEyQjMyMTIyM0Yy
RDAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sICovOyB9OwogCQlGNEUwQTJC
ODIxMjI4NDc0MDBBRjdDN0YgLyogVGVzdEZpbGVQcm9taXNlUmVjZWl2ZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEUwQTJCNzIxMjI4NDc0MDBB
RjdDN0YgLyogVGVzdEZpbGVQcm9taXNlUmVjZWl2ZXIubW0gKi87IH07CiAJCUY0RTNEODA4MjBG
NzBCQjkwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRF
M0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGlj
bGUuaHRtbCAqLzsgfTsKKwkJRjRFQjRFOTEyMzI4QUMzMDAwNTc0REFCIC8qIE5TSXRlbVByb3Zp
ZGVyQWRkaXRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRFQjRFOTAyMzI4QUMzMDAwNTc0REFCIC8qIE5TSXRlbVByb3ZpZGVyQWRkaXRpb25z
Lm1tICovOyB9OwogCQlGNEYxMzc5MjFEOUI2ODNFMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVz
dC1ub3ctcGxheWluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRlby10
ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi87IH07CiAJCUY0RjQwNUJDMUQ0QzBEMUMwMDdBOTcwNyAv
KiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RjQwNUJBMUQ0QzBD
RjgwMDdBOTcwNyAvKiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1s
ICovOyB9OwogCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5n
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3MDcgLyogc2tpbm55LWF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKQEAgLTI1MTAsNiArMjUxMSw4
IEBACiAJCUY0RTBBMkI2MjEyMjg0NzQwMEFGN0M3RiAvKiBUZXN0RmlsZVByb21pc2VSZWNlaXZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmlsZVByb21pc2VSZWNlaXZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEUwQTJCNzIxMjI4NDc0MDBBRjdDN0YgLyogVGVzdEZpbGVQ
cm9taXNlUmVjZWl2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0RmlsZVByb21pc2VS
ZWNlaXZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFM0Q4MDcyMEY3MDhF
NDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRp
Y2xlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEVCNEU4RjIzMjhBQzMw
MDA1NzREQUIgLyogTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTlNJ
dGVtUHJvdmlkZXJBZGRpdGlvbnMuaDsgcGF0aCA9IGNvY29hL05TSXRlbVByb3ZpZGVyQWRkaXRp
b25zLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJRjRFQjRFOTAyMzI4QUMzMDAw
NTc0REFCIC8qIE5TSXRlbVByb3ZpZGVyQWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW07IHBhdGggPSBjb2NvYS9OU0l0ZW1Qcm92aWRl
ckFkZGl0aW9ucy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlGNEYxMzc5MTFE
OUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjQwNUJBMUQ0QzBDRjgwMDdBOTcw
NyAvKiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY0MDVCQjFENEMwQ0Y4
MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1h
dWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MTIsNiArMjgxNSw4
IEBACiAJCQkJQ0QyRDBEMTkyMTM0NjU1NjAwMThDNzg0IC8qIE5vd1BsYXlpbmcubW0gKi8sCiAJ
CQkJMkVDRkY1NTQxRDlCMTJGODAwQjU1Mzk0IC8qIE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1t
ICovLAogCQkJCUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tICovLAorCQkJCUY0RUI0RThGMjMyOEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Qcm92aWRlckFk
ZGl0aW9ucy5oICovLAorCQkJCUY0RUI0RTkwMjMyOEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Qcm92
aWRlckFkZGl0aW9ucy5tbSAqLywKIAkJCQkzN0EyMkFBNTFEQ0FBMjcyMDBBRkJGQzQgLyogT2Jz
ZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJQ0VBNkNG
MjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJCQlDRUJD
QTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0g
Ki8sCkBAIC00NjA1LDYgKzQ2MTAsNyBAQAogCQkJCTJFQ0ZGNTU1MUQ5QjEyRjgwMEI1NTM5NCAv
KiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMEYwNDdF
MUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjQ0Mjg1MUQyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSBp
biBTb3VyY2VzICovLAorCQkJCUY0RUI0RTkxMjMyOEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Qcm92
aWRlckFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QTIyQUE3MURDQUEyNzIwMEFG
QkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJENzAwNTk5MjFFREE0RDAwMDM0NjNDQiAvKiBPZmZzY3JlZW5XaW5k
b3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNTFBNDExQUY2MDA0NDdDNEMgLyogT3Bl
bkFuZENsb3NlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRl
eCAyNDIyYzEzNGFiYjdlMzJkZjUxMDM3NTNiNDVjODljNDI5ZGIxZTcyLi5iNmZjZDkzNTg1MGVi
ZDY3YjJiMTg2MTBlNDg4OTA2NjVlMzE5MmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKIAogI2ltcG9y
dCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIKKyNpbXBvcnQgIk5TSXRlbVByb3ZpZGVyQWRkaXRp
b25zLmgiCiAjaW1wb3J0ICJQZW5jaWxLaXRUZXN0U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtNTMsNiAr
NTQsMjEgQEAgU09GVF9MSU5LX0ZSQU1FV09SSyhNYXBLaXQpCiBTT0ZUX0xJTktfQ0xBU1MoTWFw
S2l0LCBNS01hcEl0ZW0pCiBTT0ZUX0xJTktfQ0xBU1MoTWFwS2l0LCBNS1BsYWNlbWFyaykKIAor
QGludGVyZmFjZSBOU0FycmF5IChBdHRhY2htZW50VGVzdGluZ0hlbHBlcnMpCistIChfV0tBdHRh
Y2htZW50ICopX2F0dGFjaG1lbnRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lOworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gTlNBcnJheSAoQXR0YWNobWVudFRlc3RpbmdIZWxwZXJzKQorLSAoX1dL
QXR0YWNobWVudCAqKV9hdHRhY2htZW50V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBzZWxmKSB7CisgICAgICAgIGlmIChb
YXR0YWNobWVudC5pbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOm5hbWVdKQorICAgICAgICAgICAg
cmV0dXJuIGF0dGFjaG1lbnQ7CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CitAZW5kCisKICNk
ZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkgfHwgUExBVEZPUk0oTUFDKSkKIAogQGludGVyZmFjZSBBdHRhY2htZW50VXBkYXRlT2JzZXJ2
ZXIgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4KQEAgLTI3MSw2ICsyODcsMjUgQEAg
LSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOihOU1N0cmluZyAqKWZpbGVuYW0KICAgICByZXR1cm4gYXR0YWNobWVudC5hdXRvcmVsZWFz
ZSgpOwogfQogCistIChOU0FycmF5PE5TVmFsdWUgKj4gKilhbGxCb3VuZGluZ0NsaWVudFJlY3Rz
OihOU1N0cmluZyAqKXF1ZXJ5U2VsZWN0b3IKK3sKKyAgICBhdXRvIHJlY3RzID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgYm9vbCBkb25lRXZhbHVhdGluZ1Nj
cmlwdCA9IGZhbHNlOworICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnJUAnKSkubWFw
KGUgPT4geyBjb25zdCByID0gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgcmV0dXJuIFtyLmxl
ZnQsIHIudG9wLCByLndpZHRoLCByLmhlaWdodF07IH0pIiwgcXVlcnlTZWxlY3Rvcl07CisgICAg
W3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbcmVjdHMs
ICZkb25lRXZhbHVhdGluZ1NjcmlwdF0gKE5TQXJyYXk8TlNBcnJheTxOU051bWJlciAqPiAqPiAq
cmVzdWx0LCBOU0Vycm9yICopIHsKKyAgICAgICAgZm9yIChOU0FycmF5PE5TTnVtYmVyICo+ICpy
ZWN0SW5mbyBpbiByZXN1bHQpIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAg
ICAgW3JlY3RzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6Q0dSZWN0TWFrZShy
ZWN0SW5mb1swXS5mbG9hdFZhbHVlLCByZWN0SW5mb1sxXS5mbG9hdFZhbHVlLCByZWN0SW5mb1sy
XS5mbG9hdFZhbHVlLCByZWN0SW5mb1szXS5mbG9hdFZhbHVlKV1dOworI2Vsc2UKKyAgICAgICAg
ICAgIFtyZWN0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpOU01ha2VSZWN0KHJl
Y3RJbmZvWzBdLmZsb2F0VmFsdWUsIHJlY3RJbmZvWzFdLmZsb2F0VmFsdWUsIHJlY3RJbmZvWzJd
LmZsb2F0VmFsdWUsIHJlY3RJbmZvWzNdLmZsb2F0VmFsdWUpXV07CisjZW5kaWYKKyAgICAgICAg
fQorICAgICAgICBkb25lRXZhbHVhdGluZ1NjcmlwdCA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ1NjcmlwdCk7CisgICAgcmV0dXJu
IHJlY3RzLmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKENHUG9pbnQpYXR0YWNobWVudEVsZW1lbnRN
aWRQb2ludAogewogICAgIF9fYmxvY2sgQ0dQb2ludCBtaWRQb2ludDsKQEAgLTE2NTAsNiArMTY4
NSw5MCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBEcmFnQXR0YWNobWVudFdpdGhOb1R5
cGVTaG91bGROb3RDcmFzaCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKK3N0YXRpYyBS
ZXRhaW5QdHI8VUlUYXJnZXRlZERyYWdQcmV2aWV3PiB0YXJnZXRlZEltYWdlRHJhZ1ByZXZpZXco
V0tXZWJWaWV3ICp3ZWJWaWV3LCBOU0RhdGEgKmltYWdlRGF0YSwgQ0dTaXplIHNpemUpCit7Cisg
ICAgYXV0byBpbWFnZVZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRo
SW1hZ2U6W1VJSW1hZ2UgaW1hZ2VXaXRoRGF0YTppbWFnZURhdGFdXSk7CisgICAgW2ltYWdlVmll
dyBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCldOwor
ICAgIGF1dG8gZGVmYXVsdERyb3BUYXJnZXQgPSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1Rhcmdl
dCBhbGxvY10gaW5pdFdpdGhDb250YWluZXI6d2ViVmlldyBjZW50ZXI6Q0dQb2ludE1ha2UoNDUw
LCA0NTApXSk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdQ
YXJhbWV0ZXJzIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVRhcmdldGVk
RHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmlldzppbWFnZVZpZXcuZ2V0KCkgcGFyYW1ldGVy
czpwYXJhbWV0ZXJzLmdldCgpIHRhcmdldDpkZWZhdWx0RHJvcFRhcmdldC5nZXQoKV0pOworfQor
CitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBUYXJnZXRlZFByZXZpZXdzV2hlbkRyb3BwaW5n
SW1hZ2VzKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoKTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVTXTsKKworICAgIGF1dG8gc2ltdWxh
dG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOworCisgICAgLy8gVGhlIGZpcnN0IGl0ZW0gcHJldmlldyBzaG91
bGQgYmUgc2NhbGVkIGRvd24gYnkgYSBmYWN0b3Igb2YgMi4KKyAgICBhdXRvIGZpcnN0UHJldmll
dyA9IHRhcmdldGVkSW1hZ2VEcmFnUHJldmlldyh3ZWJWaWV3LmdldCgpLCB0ZXN0SW1hZ2VEYXRh
KCksIENHU2l6ZU1ha2UoNDMwLCAzNDgpKTsKKyAgICBhdXRvIGZpcnN0SXRlbSA9IGFkb3B0TlMo
W1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtmaXJzdEl0ZW0gcmVnaXN0ZXJE
YXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlUE5HIHdpdGhEYXRhOnRlc3RJbWFnZURhdGEoKSBsb2FkaW5nRGVsYXk6MC41XTsKKyAg
ICBbZmlyc3RJdGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6Q0dTaXplTWFrZSgyMTUs
IDE3NCldOworICAgIFtmaXJzdEl0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImljb24iXTsKKworICAg
IC8vIFRoZSBzZWNvbmQgaXRlbSBwcmV2aWV3IHNob3VsZCBiZSBzY2FsZWQgdXAgYnkgYSBmYWN0
b3Igb2YgMi4KKyAgICBhdXRvIHNlY29uZFByZXZpZXcgPSB0YXJnZXRlZEltYWdlRHJhZ1ByZXZp
ZXcod2ViVmlldy5nZXQoKSwgdGVzdEdJRkRhdGEoKSwgQ0dTaXplTWFrZSgyNiwgMzIpKTsKKyAg
ICBhdXRvIHNlY29uZEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbc2Vjb25kSXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVu
dGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVHSUYgd2l0aERhdGE6dGVzdEdJRkRh
dGEoKSBsb2FkaW5nRGVsYXk6MC41XTsKKyAgICBbc2Vjb25kSXRlbSBzZXRQcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplOkNHU2l6ZU1ha2UoNTIsIDY0KV07CisgICAgW3NlY29uZEl0ZW0gc2V0U3Vn
Z2VzdGVkTmFtZTpAImFwcGxlIl07CisKKyAgICBbc2ltdWxhdG9yIHNldERyb3BBbmltYXRpb25U
aW1pbmc6RHJvcEFuaW1hdGlvblNob3VsZEZpbmlzaEJlZm9yZUhhbmRsaW5nRHJvcF07CisgICAg
W3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6W05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czpmaXJzdEl0ZW0uZ2V0KCksIHNlY29uZEl0ZW0uZ2V0KCksIG5pbF0gZGVmYXVsdERyb3BQ
cmV2aWV3czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmZpcnN0UHJldmlldy5nZXQoKSwgc2Vj
b25kUHJldmlldy5nZXQoKSwgbmlsXV07CisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRN
YWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDQ1MCwgNDUwKV07CisKKyAgICBFWFBFQ1RfRVEoW3Np
bXVsYXRvciBkZWxheWVkRHJvcFByZXZpZXdzXS5jb3VudCwgMlUpOworICAgIFVJVGFyZ2V0ZWRE
cmFnUHJldmlldyAqZmlyc3REZWxheWVkUHJldmlldyA9IFtzaW11bGF0b3IgZGVsYXllZERyb3BQ
cmV2aWV3c10uZmlyc3RPYmplY3Q7CisgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpzZWNvbmRE
ZWxheWVkUHJldmlldyA9IFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10ubGFzdE9iamVj
dDsKKyAgICBhdXRvIGltYWdlRWxlbWVudEJvdW5kcyA9IHJldGFpblB0cihbd2ViVmlldyBhbGxC
b3VuZGluZ0NsaWVudFJlY3RzOkAiSU1HIl0pOworCisgICAgRVhQRUNUX1RSVUUoQ0dBZmZpbmVU
cmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDAuNSwg
MC41KSwgZmlyc3REZWxheWVkUHJldmlldy50YXJnZXQudHJhbnNmb3JtKSk7CisgICAgRVhQRUNU
X1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QoQ0dSZWN0TWFrZSgwLCAwLCA0MzAsIDM0OCksIGZpcnN0
RGVsYXllZFByZXZpZXcucGFyYW1ldGVycy52aXNpYmxlUGF0aC5ib3VuZHMpKTsKKyAgICBFWFBF
Q1RfVFJVRShDR1JlY3RDb250YWluc1BvaW50KFtpbWFnZUVsZW1lbnRCb3VuZHMgZmlyc3RPYmpl
Y3RdLkNHUmVjdFZhbHVlLCBmaXJzdERlbGF5ZWRQcmV2aWV3LnRhcmdldC5jZW50ZXIpKTsKKwor
ICAgIEVYUEVDVF9UUlVFKENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9ybShDR0FmZmlu
ZVRyYW5zZm9ybU1ha2VTY2FsZSgyLCAyKSwgc2Vjb25kRGVsYXllZFByZXZpZXcudGFyZ2V0LnRy
YW5zZm9ybSkpOworICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KENHUmVjdE1ha2Uo
MCwgMCwgMjYsIDMyKSwgc2Vjb25kRGVsYXllZFByZXZpZXcucGFyYW1ldGVycy52aXNpYmxlUGF0
aC5ib3VuZHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR1JlY3RDb250YWluc1BvaW50KFtpbWFnZUVs
ZW1lbnRCb3VuZHMgbGFzdE9iamVjdF0uQ0dSZWN0VmFsdWUsIHNlY29uZERlbGF5ZWRQcmV2aWV3
LnRhcmdldC5jZW50ZXIpKTsKKworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1
ZXJ5U2VsZWN0b3I6QCJJTUciXTsKKyAgICBfV0tBdHRhY2htZW50ICpwbmdBdHRhY2htZW50ID0g
W1tzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10gX2F0dGFjaG1lbnRXaXRoTmFtZTpAImlj
b24ucG5nIl07CisgICAgX1dLQXR0YWNobWVudCAqZ2lmQXR0YWNobWVudCA9IFtbc2ltdWxhdG9y
IGluc2VydGVkQXR0YWNobWVudHNdIF9hdHRhY2htZW50V2l0aE5hbWU6QCJhcHBsZS5naWYiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEocG5nQXR0YWNobWVudC5pbmZvLmNvbnRlbnRUeXBlLCBAImlt
YWdlL3BuZyIpOworICAgIEVYUEVDVF9XS19TVFJFUShnaWZBdHRhY2htZW50LmluZm8uY29udGVu
dFR5cGUsIEAiaW1hZ2UvZ2lmIik7Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIFRh
cmdldGVkUHJldmlld0lzQ2xpcHBlZFdoZW5Ecm9wcGluZ1RhbGxJbWFnZSkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2UoODAwLCAy
MDApKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQuYm9keS5zdHlsZS5tYXJnaW4gPSAnMCciXTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6
WUVTXTsKKworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmV0YWluUHRyKFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCI0MDB4
NDAwLWdyZWVuIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXSk7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisK
KyAgICBhdXRvIHByZXZpZXcgPSB0YXJnZXRlZEltYWdlRHJhZ1ByZXZpZXcod2ViVmlldy5nZXQo
KSwgaW1hZ2VEYXRhLmdldCgpLCBDR1NpemVNYWtlKDEwMCwgMTAwKSk7CisgICAgYXV0byBpdGVt
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW0gcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJp
bmcgKilrVVRUeXBlUE5HIHdpdGhEYXRhOmltYWdlRGF0YS5nZXQoKSBsb2FkaW5nRGVsYXk6MC41
XTsKKyAgICBbaXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOkNHU2l6ZU1ha2UoNDAw
LCA0MDApXTsKKyAgICBbaXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiZ3JlZW4iXTsKKworICAgIFtz
aW11bGF0b3Igc2V0RHJvcEFuaW1hdGlvblRpbWluZzpEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNo
QmVmb3JlSGFuZGxpbmdEcm9wXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3Zp
ZGVyczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6aXRlbS5nZXQoKV0gZGVmYXVsdERyb3BQcmV2
aWV3czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cHJldmlldy5nZXQoKV1dOworICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSgzNTAsIDM1MCld
OworCisgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERyb3BQcmV2aWV3c10uY291bnQs
IDFVKTsKKyAgICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmRlbGF5ZWRQcmV2aWV3ID0gW3NpbXVs
YXRvciBkZWxheWVkRHJvcFByZXZpZXdzXS5maXJzdE9iamVjdDsKKyAgICBFWFBFQ1RfVFJVRShD
R0FmZmluZVRyYW5zZm9ybUVxdWFsVG9UcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoNCwgNCksIGRlbGF5ZWRQcmV2aWV3LnRhcmdldC50cmFuc2Zvcm0pKTsKKyAgICBFWFBFQ1Rf
VFJVRShDR1JlY3RFcXVhbFRvUmVjdChDR1JlY3RNYWtlKDAsIDAsIDEwMCwgNTApLCBkZWxheWVk
UHJldmlldy5wYXJhbWV0ZXJzLnZpc2libGVQYXRoLmJvdW5kcykpOworICAgIEVYUEVDVF9UUlVF
KENHUG9pbnRFcXVhbFRvUG9pbnQoQ0dQb2ludE1ha2UoMjAwLCAxMDApLCBkZWxheWVkUHJldmll
dy50YXJnZXQuY2VudGVyKSk7CisKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBx
dWVyeVNlbGVjdG9yOkAiSU1HIl07CisgICAgX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCA9IFtb
c2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdIF9hdHRhY2htZW50V2l0aE5hbWU6QCJncmVl
bi5wbmciXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoYXR0YWNobWVudC5pbmZvLmNvbnRlbnRUeXBl
LCBAImltYWdlL3BuZyIpOworfQorCiBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnRE
cm9wcGVkSW1hZ2VBc0F0dGFjaG1lbnQpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNDcwOTA0NzZkN2NlNTMxMTRlM2Ri
ODNiOTI2ZmUzMmNmYmYxZTA0OS4uZjVlNTZlNjk3ZDJmMGNiNzA1MmViMzBjMWQzNWUyM2UxODY2
MTU4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERy
b3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5k
RHJvcFRlc3RzSU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkNsYXNzTWV0aG9k
U3dpenpsZXIuaCIKICNpbXBvcnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJO
U0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC01Mywx
MCArNTQsNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLKE1hcEtpdCkKIFNPRlRfTElOS19DTEFTUyhN
YXBLaXQsIE1LTWFwSXRlbSkKIFNPRlRfTElOS19DTEFTUyhNYXBLaXQsIE1LUGxhY2VtYXJrKQog
Ci10eXBlZGVmIHZvaWQgKF5GaWxlTG9hZENvbXBsZXRpb25CbG9jaykoTlNVUkwgKiwgQk9PTCwg
TlNFcnJvciAqKTsKLXR5cGVkZWYgdm9pZCAoXkRhdGFMb2FkQ29tcGxldGlvbkJsb2NrKShOU0Rh
dGEgKiwgTlNFcnJvciAqKTsKLXR5cGVkZWYgdm9pZCAoXk5TSXRlbVByb3ZpZGVyRGF0YUxvYWRD
b21wbGV0aW9uQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopOwotCiAjaWYgIVVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKIEBpbnRlcmZhY2UgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9w
dGlvbnMgOiBOU09iamVjdApAQCAtODEsMTkgKzc4LDYgQEAgc3RhdGljIE5TRGF0YSAqdGVzdFpJ
UEFyY2hpdmUoKQogICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp6aXBG
aWxlVVJMXTsKIH0KIAotQGltcGxlbWVudGF0aW9uIE5TSXRlbVByb3ZpZGVyIChEcmFnQW5kRHJv
cFRlc3RzKQotCi0tICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6KE5TRGF0YSAqKWRhdGEK
LXsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZERhdGEgPSBkYXRhOwotICAgIFtzZWxm
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZp
ZXIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBs
b2FkSGFuZGxlcjogW3JldGFpbmVkRGF0YV0gKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGJsb2Nr
KSAtPiBOU1Byb2dyZXNzICogewotICAgICAgICBibG9jayhyZXRhaW5lZERhdGEuZ2V0KCksIG5p
bCk7Ci0gICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRvdGFs
VW5pdENvdW50OjEwMF07Ci0gICAgfV07Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIFRl
c3RXS1dlYlZpZXcgKERyYWdBbmREcm9wVGVzdHMpCiAKIC0gKEJPT0wpZWRpdG9yQ29udGFpbnNJ
bWFnZUVsZW1lbnQKQEAgLTk5Nyw3ICs5ODEsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4
dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiAgICAgTlNTdHJpbmcgKnRleHRQYXlsb2Fk
ID0gQCJDZWNpIG4nZXN0IHBhcyB1bmUgc3RyaW5nIjsKICAgICBhdXRvIHNpbXVsYXRvciA9IGFk
b3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZp
ZXcuZ2V0KCldKTsKICAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tO
U0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIg
cmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooTlNJdGVt
UHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgW3Np
bXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVu
dGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxp
dHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6
Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCiAg
ICAgewogICAgICAgICBjb21wbGV0aW9uQmxvY2soW3RleHRQYXlsb2FkIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgbmlsKTsKICAgICAgICAgcmV0dXJuIFtOU1Byb2dy
ZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKQEAgLTEwMTcsNyAr
MTAwMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VKUEVHT25seSkK
IAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIGF1dG8gc2ltdWxhdGVk
SXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5
cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHZpc2liaWxpdHk6
TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5T
UHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRp
b25CbG9jaykKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUpQRUcg
dmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2Fk
SGFuZGxlcjpeTlNQcm9ncmVzcyAqKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25C
bG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25CbG9jayhVSUltYWdlSlBFR1JlcHJlc2Vu
dGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KSwgbmlsKTsKICAgICAgICAgcmV0dXJuIFtOU1By
b2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKQEAgLTEzMTMs
NyArMTI5Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgSW5qZWN0ZWRCdW5kbGVPdmVycmlk
ZVBlcmZvcm1Ud29TdGVwRHJvcCkKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCkiXTsKIAogICAgIGF1dG8g
c2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRh
dGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxh
aW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlB
bGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxl
dGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJl
Z2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKERhdGFMb2Fk
Q29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRp
b25CbG9jayhbQCJIZWxsbyB3b3JsZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVz
c1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwpAQCAtMTMzNiw3ICsxMzIwLDcgQEAgVEVTVChEcmFn
QW5kRHJvcFRlc3RzLCBJbmplY3RlZEJ1bmRsZUFsbG93UGVyZm9ybVR3b1N0ZXBEcm9wKQogICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKSJdOwogCiAgICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBh
ZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbc2ltdWxhdGVkSXRl
bVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Q
cm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVz
cyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2Nr
KQorICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4
dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxv
YWRIYW5kbGVyOl5OU1Byb2dyZXNzICooRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlv
bkJsb2NrKQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFtAIkhlbGxvIHdvcmxkIiBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJl
dHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07
CkBAIC0xNTgxLDE0ICsxNTY1LDE0IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZExvYWRpbmcpCiAKICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkID0gW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2Vd
OwogICAgIGF1dG8gZmFzdEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKLSAgICBbZmFzdEl0ZW0gcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRl
bnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCB2aXNpYmls
aXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVy
Ol5OU1Byb2dyZXNzICooTlNJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21w
bGV0aW9uQmxvY2spCisgICAgW2Zhc3RJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQg
dmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2Fk
SGFuZGxlcjpeTlNQcm9ncmVzcyAqKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25C
bG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25CbG9jayhbZmFzdFN0cmluZyBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfV07CiAKICAgICBhdXRvIHNsb3dJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Nsb3dJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0
aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFs
bCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0
aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIFtzbG93SXRlbSByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVV
VEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2li
aWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9j
ayBjb21wbGV0aW9uQmxvY2spCiAgICAgewogICAgICAgICBzbGVlcCgyX3MpOwogICAgICAgICBj
b21wbGV0aW9uQmxvY2soW3Nsb3dTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddLCBuaWwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9E
cmFnQW5kRHJvcFNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5k
RHJvcFNpbXVsYXRvci5oCmluZGV4IDdmMzFjNGZmNzE2YjdmODdhMmU2YzM5OTQxNmQwYTZkNWI2
OWNiZDQuLmI1YjBkZDNkM2UwNTNmMzI2ZTMzZWY2NTlmNmE2OGMyYjQ4MTQyMWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKQEAgLTQ3
LDYgKzQ3LDExIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERyYWdBbmREcm9wUGhhc2Up
IHsKICAgICBEcmFnQW5kRHJvcFBoYXNlUGVyZm9ybWluZ0Ryb3AgPSA0CiB9OwogCit0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBEcm9wQW5pbWF0aW9uVGltaW5nKSB7CisgICAgRHJvcEFuaW1h
dGlvblNob3VsZEZpbmlzaEFmdGVySGFuZGxpbmdEcm9wLAorICAgIERyb3BBbmltYXRpb25TaG91
bGRGaW5pc2hCZWZvcmVIYW5kbGluZ0Ryb3AKK307CisKIHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5T
TnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9DR1BvaW50VmFsdWVNYXA7CiAKIEBpbnRl
cmZhY2UgTW9ja0RyYWdEcm9wU2Vzc2lvbiA6IE5TT2JqZWN0IDxVSURyYWdEcm9wU2Vzc2lvbj4g
ewpAQCAtOTEsNiArOTYsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1Zh
bHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXc7CiAtICh2b2lkKXJ1bkZyb206KENH
UG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbiBhZGRpdGlvbmFsSXRl
bVJlcXVlc3RMb2NhdGlvbnM6KFByb2dyZXNzVG9DR1BvaW50VmFsdWVNYXApYWRkaXRpb25hbEl0
ZW1SZXF1ZXN0TG9jYXRpb25zOwogLSAodm9pZCllbnN1cmVJbnB1dFNlc3Npb247CistICh2b2lk
KXNldEV4dGVybmFsSXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKWl0
ZW1Qcm92aWRlcnMgZGVmYXVsdERyb3BQcmV2aWV3czooTlNBcnJheTxVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKj4gKilwcmV2aWV3czsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBE
cmFnQW5kRHJvcFBoYXNlIHBoYXNlOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dz
Rm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uOwpAQCAtMTE1LDYgKzEyMSw3IEBAIHR5cGVkZWYgTlNE
aWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9DR1BvaW50VmFsdWVN
YXA7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8VUlUYXJnZXRlZERy
YWdQcmV2aWV3ICo+ICpjYW5jZWxsYXRpb25QcmV2aWV3czsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNBcnJheSAqZHJvcFByZXZpZXdzOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0FycmF5ICpkZWxheWVkRHJvcFByZXZpZXdzOworQHByb3BlcnR5IChub25h
dG9taWMpIERyb3BBbmltYXRpb25UaW1pbmcgZHJvcEFuaW1hdGlvblRpbWluZzsKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDhmZjc3MmJiNGU1
Y2VhMDI1ZTBlZGMxNjI3NjMxMGVlNjIwYTRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9OU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisKK3R5cGVkZWYgdm9pZCAoXkZpbGVMb2FkQ29tcGxldGlvbkJsb2NrKShOU1VS
TCAqLCBCT09MLCBOU0Vycm9yICopOwordHlwZWRlZiB2b2lkICheRGF0YUxvYWRDb21wbGV0aW9u
QmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopOworCitAaW50ZXJmYWNlIE5TSXRlbVByb3ZpZGVy
IChOU0l0ZW1Qcm92aWRlckFkZGl0aW9ucykKKy0gKHZvaWQpcmVnaXN0ZXJEYXRhUmVwcmVzZW50
YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllciB3aXRoRGF0
YTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JU
eXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllciB3aXRoRGF0YTooTlNEYXRh
ICopZGF0YSBsb2FkaW5nRGVsYXk6KE5TVGltZUludGVydmFsKWRlbGF5OworQGVuZApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9OU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjdiZDVkYzY1OTE4ZjRiNjA3YzAzMDhiOGMxNGQzZTBkMmRkZjZjMQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvTlNJdGVtUHJvdmlkZXJB
ZGRpdGlvbnMubW0KQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCIKKworI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlv
biBOU0l0ZW1Qcm92aWRlciAoTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMpCisKKy0gKHZvaWQpcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBl
SWRlbnRpZmllciB3aXRoRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIFtzZWxmIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgd2l0aERh
dGE6ZGF0YSBsb2FkaW5nRGVsYXk6MF07Cit9CisKKy0gKHZvaWQpcmVnaXN0ZXJEYXRhUmVwcmVz
ZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllciB3aXRo
RGF0YTooTlNEYXRhICopZGF0YSBsb2FkaW5nRGVsYXk6KE5TVGltZUludGVydmFsKWRlbGF5Cit7
CisgICAgYXV0byByZXRhaW5lZERhdGEgPSByZXRhaW5QdHIoZGF0YSk7CisgICAgW3NlbGYgcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp0eXBlSWRlbnRpZmllciB2
aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRI
YW5kbGVyOiBbcmV0YWluZWREYXRhLCBkZWxheV0gKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGJs
b2NrKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICBpZiAoZGVsYXkgPiAwKSB7CisgICAgICAg
ICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAoaW50
NjRfdCkoZGVsYXkgKiBOU0VDX1BFUl9TRUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKSwgcmV0YWluZWREYXRhXSB7CisgICAgICAgICAg
ICAgICAgYmxvY2socmV0YWluZWREYXRhLmdldCgpLCBuaWwpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmxvY2socmV0YWluZWREYXRhLmdldCgpLCBuaWwp
OworICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVu
aXRDb3VudDoxMDBdOworICAgIH1dOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDU1NTU3YmFjZDA3MzE3
MmU0ZDY3MDEwYzEyOGFhMjZkY2EyZWNkYjcuLjhlYjViMDZjOWNkMmY5NDc4NDg5ZGNlNzMyYzI5
OTI4OWUyNzA3ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmRE
cm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmRE
cm9wU2ltdWxhdG9ySU9TLm1tCkBAIC0yOTYsNiArMjk2LDkgQEAgSUdOT1JFX1dBUk5JTkdTX0VO
RAogCiBAZW5kCiAKK0BpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgKCkgPFVJRHJhZ0Fu
aW1hdGluZz4KK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsK
ICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPE1v
Y2tEcmFnU2Vzc2lvbj4gX2RyYWdTZXNzaW9uOwpAQCAtMzE0LDYgKzMxNyw3IEBAIEBpbXBsZW1l
bnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPj4gX2NhbmNlbGxhdGlvblByZXZpZXdzOwogICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2Ryb3BQcmV2aWV3czsKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF9kZWxheWVkRHJvcFByZXZpZXdzOworICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gX2RlZmF1bHREcm9wUHJldmlld3NGb3JFeHRlcm5hbEl0ZW1zOwogCiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PF9XS0F0dGFjaG1lbnQgKj4+IF9pbnNlcnRlZEF0dGFj
aG1lbnRzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxfV0tBdHRhY2htZW50ICo+PiBf
cmVtb3ZlZEF0dGFjaG1lbnRzOwpAQCAtMzMyLDYgKzMzNiw3IEBAIEBpbXBsZW1lbnRhdGlvbiBE
cmFnQW5kRHJvcFNpbXVsYXRvciB7CiAgICAgQmxvY2tQdHI8VUlEcm9wT3BlcmF0aW9uKFVJRHJv
cE9wZXJhdGlvbiwgaWQpPiBfb3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2s7CiAgICAgQmxvY2tQdHI8
dm9pZChCT09MLCBOU0FycmF5ICopPiBfZHJvcENvbXBsZXRpb25CbG9jazsKICAgICBCbG9ja1B0
cjx2b2lkKCk+IF9zZXNzaW9uV2lsbEJlZ2luQmxvY2s7CisgICAgVmVjdG9yPEJsb2NrUHRyPHZv
aWQoVUlWaWV3QW5pbWF0aW5nUG9zaXRpb24pPj4gX2Ryb3BBbmltYXRpb25Db21wbGV0aW9uQmxv
Y2tzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClm
cmFtZQpAQCAtMzU0LDYgKzM1OSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6
KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3CiAgICAgICAgIF9zaG91bGRFbnN1cmVVSUFwcGxpY2F0
aW9uID0gTk87CiAgICAgICAgIF9zaG91bGRCZWNvbWVGaXJzdFJlc3BvbmRlciA9IFlFUzsKICAg
ICAgICAgX3Nob3VsZEFsbG93TW92ZU9wZXJhdGlvbiA9IFlFUzsKKyAgICAgICAgX2Ryb3BBbmlt
YXRpb25UaW1pbmcgPSBEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQWZ0ZXJIYW5kbGluZ0Ryb3A7
CiAgICAgICAgIFtfd2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6c2VsZl07CiAgICAgICAgIHNlbGYuZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V0tEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkOwpAQCAtNDgwLDggKzQ4NiwxNiBAQCAtICh2b2lkKV9jb25jbHVkZURyb3BBbmRQ
ZXJmb3JtT3BlcmF0aW9uSWZOZWNlc3NhcnkKICAgICAgICAgTlNJbnRlZ2VyIGRyb3BQcmV2aWV3
SW5kZXggPSAwOwogICAgICAgICBfX2Jsb2NrIE5TVUludGVnZXIgbnVtYmVyT2ZQZW5kaW5nUHJl
dmlld3MgPSBbX2Ryb3BTZXNzaW9uIGl0ZW1zXS5jb3VudDsKICAgICAgICAgX2lzRG9uZVdhaXRp
bmdGb3JEZWxheWVkRHJvcFByZXZpZXdzID0gIW51bWJlck9mUGVuZGluZ1ByZXZpZXdzOworICAg
ICAgICBCT09MIGNhblVzZURlZmF1bHREcm9wUHJldmlld3NGb3JFeHRlcm5hbEl0ZW1zID0gW19k
ZWZhdWx0RHJvcFByZXZpZXdzRm9yRXh0ZXJuYWxJdGVtcyBjb3VudF0gPT0gW19kcm9wU2Vzc2lv
biBpdGVtc10uY291bnQ7CiAgICAgICAgIGZvciAoVUlEcmFnSXRlbSAqaXRlbSBpbiBbX2Ryb3BT
ZXNzaW9uIGl0ZW1zXSkgewotICAgICAgICAgICAgYXV0byBkZWZhdWx0UHJldmlldyA9IGFkb3B0
TlMoW1tVSVRhcmdldGVkRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmlldzpfd2ViVmlldy5n
ZXQoKV0pOworICAgICAgICAgICAgUmV0YWluUHRyPFVJVGFyZ2V0ZWREcmFnUHJldmlldz4gZGVm
YXVsdFByZXZpZXc7CisgICAgICAgICAgICBpZiAoY2FuVXNlRGVmYXVsdERyb3BQcmV2aWV3c0Zv
ckV4dGVybmFsSXRlbXMpCisgICAgICAgICAgICAgICAgZGVmYXVsdFByZXZpZXcgPSBbX2RlZmF1
bHREcm9wUHJldmlld3NGb3JFeHRlcm5hbEl0ZW1zIG9iamVjdEF0SW5kZXg6ZHJvcFByZXZpZXdJ
bmRleF07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBKdXN0IGZhbGwg
YmFjayB0byBhbiBhcmJpdHJhcnkgbm9uLW51bGwgZHJhZyBwcmV2aWV3IGlmIHRoZSB0ZXN0IGRp
ZG4ndCBzcGVjaWZ5IG9uZS4KKyAgICAgICAgICAgICAgICBkZWZhdWx0UHJldmlldyA9IGFkb3B0
TlMoW1tVSVRhcmdldGVkRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmlldzpfd2ViVmlldy5n
ZXQoKV0pOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZCA8VUlEcm9wSW50ZXJhY3Rp
b25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1PiBkZWxlZ2F0ZSA9IChpZCA8VUlEcm9wSW50ZXJh
Y3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1PilbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9u
RGVsZWdhdGVdOwogICAgICAgICAgICAgVUlEcm9wSW50ZXJhY3Rpb24gKmludGVyYWN0aW9uID0g
W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl07CiAgICAgICAgICAgICBbX2Ryb3BQcmV2aWV3cyBh
ZGRPYmplY3Q6W2RlbGVnYXRlIGRyb3BJbnRlcmFjdGlvbjppbnRlcmFjdGlvbiBwcmV2aWV3Rm9y
RHJvcHBpbmdJdGVtOml0ZW0gd2l0aERlZmF1bHQ6ZGVmYXVsdFByZXZpZXcuZ2V0KCldID86IE5T
TnVsbC5udWxsXTsKQEAgLTQ5Nyw2ICs1MTEsMTggQEAgLSAodm9pZClfY29uY2x1ZGVEcm9wQW5k
UGVyZm9ybU9wZXJhdGlvbklmTmVjZXNzYXJ5CiAgICAgICAgIH0KICAgICAgICAgW1tfd2ViVmll
dyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9w
SW50ZXJhY3Rpb25dIHBlcmZvcm1Ecm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CiAgICAgICAgIF9w
aGFzZSA9IERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcDsKKworICAgICAgICBmb3IgKFVJ
RHJhZ0l0ZW0gKml0ZW0gaW4gW19kcm9wU2Vzc2lvbiBpdGVtc10pCisgICAgICAgICAgICBbW193
ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRlbGVnYXRlXSBkcm9wSW50ZXJhY3Rpb246W193ZWJWaWV3
IGRyb3BJbnRlcmFjdGlvbl0gaXRlbTppdGVtIHdpbGxBbmltYXRlRHJvcFdpdGhBbmltYXRvcjpz
ZWxmXTsKKworICAgICAgICBpZiAoX2Ryb3BBbmltYXRpb25UaW1pbmcgPT0gRHJvcEFuaW1hdGlv
blNob3VsZEZpbmlzaEJlZm9yZUhhbmRsaW5nRHJvcCkgeworICAgICAgICAgICAgW193ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIiIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciAq
KSB7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhdCBsZWFzdCBlbnN1cmUgb25lIHJv
dW5kIHRyaXAgdG8gdGhlIHdlYiBwcm9jZXNzIGFuZCBiYWNrLCB0byBlbnN1cmUgdGhhdCB0aGUg
VUkgcHJvY2VzcyB3aWxsIGhhdmUgcmVjZWl2ZWQgYW55IGltYWdlIHBsYWNlaG9sZGVycworICAg
ICAgICAgICAgICAgIC8vIHRoYXQgd2VyZSBqdXN0IGluc2VydGVkIGFzIGEgcmVzdWx0IG9mIHBl
cmZvcm1pbmcgdGhlIGRyb3AuIEhvd2V2ZXIsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBydW4gYmVm
b3JlIHRoZSBVSSBwcm9jZXNzIHJlY2VpdmVzIHRoZSBkcm9wIGNvbXBsZXRpb24KKyAgICAgICAg
ICAgICAgICAvLyBtZXNzYWdlLCBzaW5jZSBpdGVtIHByb3ZpZGVyIGxvYWRpbmcgaXMgYXN5bmNo
cm9ub3VzLgorICAgICAgICAgICAgICAgIFtzZWxmIF9pbnZva2VEcm9wQW5pbWF0aW9uQ29tcGxl
dGlvbkJsb2Nrc0FuZENvbmNsdWRlRHJvcF07CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiAgICAg
ICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQ7CkBAIC02MzksNiArNjY1LDcg
QEAgLSAodm9pZClfYWR2YW5jZVByb2dyZXNzCiAtICh2b2lkKWNsZWFyRXh0ZXJuYWxEcmFnSW5m
b3JtYXRpb24KIHsKICAgICBfZXh0ZXJuYWxJdGVtUHJvdmlkZXJzID0gbmlsOworICAgIF9kZWZh
dWx0RHJvcFByZXZpZXdzRm9yRXh0ZXJuYWxJdGVtcyA9IG5pbDsKIH0KIAogLSAoQ0dQb2ludClf
Y3VycmVudExvY2F0aW9uCkBAIC02NjksNiArNjk2LDEzIEBAIC0gKHZvaWQpc2V0RXh0ZXJuYWxJ
dGVtUHJvdmlkZXJzOihOU0FycmF5ICopZXh0ZXJuYWxJdGVtUHJvdmlkZXJzCiAgICAgX2V4dGVy
bmFsSXRlbVByb3ZpZGVycyA9IGFkb3B0TlMoW2V4dGVybmFsSXRlbVByb3ZpZGVycyBjb3B5XSk7
CiB9CiAKKy0gKHZvaWQpc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOihOU0FycmF5PE5TSXRlbVBy
b3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycyBkZWZhdWx0RHJvcFByZXZpZXdzOihOU0FycmF5PFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKXByZXZpZXdzCit7CisgICAgQVNTRVJUKGl0ZW1Qcm92
aWRlcnMuY291bnQgPT0gcHJldmlld3MuY291bnQpOworICAgIHNlbGYuZXh0ZXJuYWxJdGVtUHJv
dmlkZXJzID0gaXRlbVByb3ZpZGVyczsKKyAgICBfZGVmYXVsdERyb3BQcmV2aWV3c0ZvckV4dGVy
bmFsSXRlbXMgPSBhZG9wdE5TKHByZXZpZXdzLmNvcHkpOworfQorCiAtIChEcmFnQW5kRHJvcFBo
YXNlKXBoYXNlCiB7CiAgICAgcmV0dXJuIF9waGFzZTsKQEAgLTc4NCw2ICs4MTgsMjUgQEAgLSAo
ZGlzcGF0Y2hfYmxvY2tfdClzZXNzaW9uV2lsbEJlZ2luQmxvY2sKICAgICByZXR1cm4gX3Nlc3Np
b25XaWxsQmVnaW5CbG9jay5nZXQoKTsKIH0KIAorLSAodm9pZClhZGRBbmltYXRpb25zOih2b2lk
ICheKSgpKWFuaW1hdGlvbnMKK3sKKyAgICAvLyBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0
aGUgZHJhZy1hbmQtZHJvcCBzaW11bGF0b3IgeWV0LCBzaW5jZSBXZWJLaXQgZG9lc24ndCBtYWtl
IHVzZSBvZgorICAgIC8vICJhbG9uZ3NpZGUiIGFuaW1hdGlvbnMgZHVyaW5nIGRyb3AuCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKKy0gKHZvaWQpYWRkQ29tcGxldGlvbjoodm9pZCAo
XikoVUlWaWV3QW5pbWF0aW5nUG9zaXRpb24pKWNvbXBsZXRpb24KK3sKKyAgICBfZHJvcEFuaW1h
dGlvbkNvbXBsZXRpb25CbG9ja3MuYXBwZW5kKG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSk7Cit9
CisKKy0gKHZvaWQpX2ludm9rZURyb3BBbmltYXRpb25Db21wbGV0aW9uQmxvY2tzQW5kQ29uY2x1
ZGVEcm9wCit7CisgICAgZm9yIChhdXRvIGJsb2NrIDogc3RkOjpleGNoYW5nZShfZHJvcEFuaW1h
dGlvbkNvbXBsZXRpb25CbG9ja3MsIHsgfSkpCisgICAgICAgIGJsb2NrKFVJVmlld0FuaW1hdGlu
Z1Bvc2l0aW9uRW5kKTsKKyAgICBbW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRlbGVnYXRlXSBk
cm9wSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl0gY29uY2x1ZGVEcm9wOl9k
cm9wU2Vzc2lvbi5nZXQoKV07Cit9CisKICNwcmFnbWEgbWFyayAtIFdLVUlEZWxlZ2F0ZVByaXZh
dGUKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkYXRhSW50ZXJhY3Rp
b246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc2Vzc2lvbldpbGxCZWdpbjooaWQg
PFVJRHJhZ1Nlc3Npb24+KXNlc3Npb24KQEAgLTc5Nyw4ICs4NTAsMTMgQEAgLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5k
bGVkOihCT09MKWgKICAgICBpZiAoc2VsZi5kcm9wQ29tcGxldGlvbkJsb2NrKQogICAgICAgICBz
ZWxmLmRyb3BDb21wbGV0aW9uQmxvY2soaGFuZGxlZCwgaXRlbVByb3ZpZGVycyk7CiAKKyAgICBp
ZiAoX2Ryb3BBbmltYXRpb25UaW1pbmcgPT0gRHJvcEFuaW1hdGlvblNob3VsZEZpbmlzaEJlZm9y
ZUhhbmRsaW5nRHJvcCkgeworICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSB0cnVlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgW193ZWJWaWV3IF9kb0FmdGVyUmVjZWl2aW5n
RWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6XnsKLSAgICAgICAgW1tfd2ViVmlldyBkcm9wSW50
ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9wSW50ZXJhY3Rp
b25dIGNvbmNsdWRlRHJvcDpfZHJvcFNlc3Npb24uZ2V0KCldOworICAgICAgICBbc2VsZiBfaW52
b2tlRHJvcEFuaW1hdGlvbkNvbXBsZXRpb25CbG9ja3NBbmRDb25jbHVkZURyb3BdOwogICAgICAg
ICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSB0cnVlOwogICAgIH1dOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378575</attachid>
            <date>2019-09-11 13:43:36 -0700</date>
            <delta_ts>2019-09-23 15:16:55 -0700</delta_ts>
            <desc>GTK build fix</desc>
            <filename>bug-201674-20190911134335.patch</filename>
            <type>text/plain</type>
            <size>86724</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDliYzgwNTY0YTY3ZGFj
YWRjNWJhMjQ5M2I5MzRkZWQxZWU1MzAyNi4uN2ZjZTgxNmQ5YjUwOGM0Mjg5NjU4MzIyYzYwNmUy
YzI5NWY4NWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE5LTA5LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Ag
YW5pbWF0aW9uIHdoZW4gZHJhZ2dpbmcgaW1hZ2VzIGZyb20gUGhvdG9zIHRvIFdlYktpdDIgTWFp
bCBjb21wb3NlIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTI1MDk1Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5l
dyBoZWxwZXIgbWV0aG9kcyBvbiBEcmFnQ29udHJvbGxlciB0byBzdXBwb3J0IHRoZSBuZXcgaW1h
Z2UgcGxhY2Vob2xkZXIgZHJvcCBjb2RlcGF0aC4gU2VlIFdlYktpdAorICAgICAgICBDaGFuZ2VM
b2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogIFdLQXR0YWNobWVudFRlc3Rz
SU9TLlRhcmdldGVkUHJldmlld3NXaGVuRHJvcHBpbmdJbWFnZXMKKyAgICAgICAgICAgICAgICBX
S0F0dGFjaG1lbnRUZXN0c0lPUy5UYXJnZXRlZFByZXZpZXdJc0NsaXBwZWRXaGVuRHJvcHBpbmdU
YWxsSW1hZ2UKKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorCisgICAg
ICAgIEZpeCB0aGUgV2luZG93cyBidWlsZCBhZnRlciBpbmNsdWRpbmcgV2ViQ29udGVudFJlYWRl
ci5oIGluIERyYWdDb250cm9sbGVyLmNwcC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aXNEcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
OjpzZXRJc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyKToKKworICAgICAgICBBZGQgYSBmbGFnIHRv
IEhUTUxJbWFnZUVsZW1lbnQsIGluZGljYXRpbmcgd2hldGhlciBpdCBpcyBhIGRyb3BwZWQgaW1h
Z2UgcGxhY2Vob2xkZXIuIElmIHNvLCB3ZSBoYXZlIHNwZWNpYWwKKyAgICAgICAgbG9naWMgdG8g
cmVtb3ZlIHNvbWUgdGVtcG9yYXJ5IGlubGluZSBzdHlsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGlt
YWdlIGFmdGVyIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIChzZWUKKyAgICAgICAgZmluYWxpemVE
cm9wcGVkSW1hZ2VQbGFjZWhvbGRlcikuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lc24n
dCBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBIVE1MSW1hZ2VFbGVtZW50LgorCisgICAgICAgICogcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZHJhZ0VuZGVkKToKKworICAgICAgICBDbGVhbiB1cCBhbnkgc3RhbGUgcGxhY2Vob2xkZXJzIGFm
dGVyIHRoZSBkcmFnIGVuZHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpw
ZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
cmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKworICAgICAgICBBZGQgYSBwcml2
YXRlIGhlbHBlciB0byBjbGVhbiB1cCBhbnkgZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlcnMgYWZ0
ZXIgZmFpbGluZyB0byB1cGRhdGUgZHJvcHBlZCBpbWFnZQorICAgICAgICBwbGFjZWhvbGRlcnMg
Zm9yIGFueSByZWFzb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlU
b1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisKKyAgICAgICAgSW52b2tlZCB3aGVu
IHBlcmZvcm1pbmcgdGhlIGRyYWcgb3BlcmF0aW9uLCBhZnRlciBpbWFnZSBkYXRhIGhhcyBiZWVu
IGxvYWRlZDsgdGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byB1cGRhdGUKKyAgICAgICAgdGhlIGxp
c3Qgb2YgaW1hZ2UgcGxhY2Vob2xkZXIgZWxlbWVudHMgdHJhY2tlZCBieSBEcmFnQ29udHJvbGxl
ciB0aGF0IHdlcmUgcHJldmlvdXNseSBpbnNlcnRlZCB1c2luZworICAgICAgICBpbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0LCBhbmQgdXBkYXRlcyB0aGUgc291cmNlIGF0dHJp
YnV0ZSBvZiBlYWNoIGVsZW1lbnQgKGFzIHdlbGwgYXMgYW55IGJhY2tlZAorICAgICAgICBhdHRh
Y2htZW50IGVsZW1lbnQsIGlmIGF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQpLiBJdCBh
Y2hpZXZlcyB0aGlzIGJ5IHJlYWRpbmcgdGhlIGRyb3BwZWQgZGF0YSBhcyB3ZWIKKyAgICAgICAg
Y29udGVudCwgYW5kIG1hdGNoaW5nIHVwIHRoZSBpbWFnZXMgaW4gdGhlIHJlc3VsdGluZyBmcmFn
bWVudCBhZ2FpbnN0IHRoZSBwbGFjZWhvbGRlciBpbWFnZXMuIElmIGVhY2ggaW1hZ2UgaW4KKyAg
ICAgICAgdGhlIGZyYWdtZW50IGNhbiBjb3JyZXNwb25kIHRvIGV4YWN0bHkgb25lIHBsYWNlaG9s
ZGVyLCB3ZSB1cGRhdGUgdGhlIHNvdXJjZSBvZiBlYWNoIHBsYWNlaG9sZGVyIGltYWdlLAorICAg
ICAgICBtaWdyYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgb3ZlciB0byB0aGUgcGxhY2Vob2xkZXIg
aW1hZ2VzIGlmIG5lZWRlZCwgYW5kIGZpbmFsbHkgZGlzY2FyZCB0aGUgZnJhZ21lbnQuCisKKyAg
ICAgICAgQSByZXR1cm4gdmFsdWUgb2YgZmFsc2UgaW5kaWNhdGVzIHRoYXQgdGhpcyBwcm9jZXNz
IGZhaWxlZCwgaW4gd2hpY2ggY2FzZSB3ZSBjbGVhbiB1cCB0aGUgcGxhY2Vob2xkZXJzIGFuZCBm
YWxsCisgICAgICAgIGJhY2sgdG8gaGFuZGxpbmcgdGhlIGRyb3Agbm9ybWFsbHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnNBdENhcmV0KToKKworICAgICAgICBJbnZva2VkIHdoZW4gaGFuZGxpbmcgdGhlIGRyb3AsIGJl
Zm9yZSBhbnkgaW1hZ2UgZGF0YSBoYXMgYmVlbiBsb2FkZWQ7IHRoaXMgZnVuY3Rpb24gdGFrZXMg
YSBsaXN0IG9mIHNpemVzCisgICAgICAgIHJlcHJlc2VudGluZyB0aGUgcHJlZmVycmVkIHByZXNl
bnRhdGlvbiBzaXplcyBvZiBlYWNoIGl0ZW0gcHJvdmlkZXIgdGhhdCB3aWxsIGJlIGxvYWRlZCBh
cyBhbiBpbWFnZSwgYW5kIHVzZXMKKyAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQgdG8g
aW5zZXJ0IGEgbGlzdCBvZiAoaW5pdGlhbGx5IGJsYW5rKSBwbGFjZWhvbGRlciBpbWFnZXMgYXQg
dGhlIGRyb3AgY2FyZXQsIHNpemVkCisgICAgICAgIGFjY29yZGluZ2x5IHRvIGVhY2ggaXRlbSBw
cm92aWRlcidzIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUuCisKKyAgICAgICAgVG8gbWFrZSB0
aGlzIGNvbXBhdGlibGUgd2l0aCBNYWlsIGNvbXBvc2UgKGFuZCBhbGwgb3RoZXIga25vd24gaW50
ZXJuYWwgY2xpZW50cyB0aGF0IHVzZSB0aGUgX2VkaXRhYmxlIFNQSSksIHdlCisgICAgICAgIGFk
ZGl0aW9uYWxseSBlbmZvcmNlIGEgbWF4LXdpZHRoIG9mIDEwMCUgb24gZWFjaCBpbWFnZSBhbmQg
cHJlc2VydmUgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW1hZ2UgYnkgYWRqdXN0aW5nCisgICAg
ICAgIHRoZSBoZWlnaHQgaWYgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5oOgorCisgICAgICAgIEhhdmUgRHJhZ0NvbnRyb2xsZXIga2VlcCB0cmFj
ayBvZiB0aGUgbGlzdCBvZiBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVycyAoaW4gRE9NIG9yZGVy
KSwgYXMgd2VsbCBhcyB0aGUgZHJvcHBlZAorICAgICAgICBpbWFnZSBwbGFjZWhvbGRlciByYW5n
ZS4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIG9uY2UgaXRlbSBwcm92aWRlciBkYXRhIGFycml2
ZXMgYW5kIHRoZSBkcmFnIG9wZXJhdGlvbiBpcworICAgICAgICBiZWluZyBwZXJmb3JtZWQsIHRv
IHVwZGF0ZSB0aGUgc291cmNlIG9mIGVhY2ggZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlci4KKwor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJSYW5nZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
VVRJVXRpbGl0aWVzLmg6CisKKyAgICAgICAgTWFyayBhbiBleGlzdGluZyBoZWxwZXIgZnVuY3Rp
b24gYXMgV0VCQ09SRV9FWFBPUlQuCisKIDIwMTktMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IHNlbGVjdGlvbiByZWN0IHJl
dmVhbGVkIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGEgY29udGVudGVkaXRhYmxlIGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDE5NTEzOTRlNjA2Njc5NTIxMDRjOWY1Y2UzOWFiYzdjNDhmMjAzNS4uOGNk
NzkxMWVhM2IzNTEyNzlhM2UxYzBmNjkzMmU1ODA2MTM4OGEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMjcgQEAKKzIwMTktMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gRHJvcCBhbmltYXRpb24gd2hlbiBkcmFnZ2luZyBpbWFnZXMg
ZnJvbSBQaG90b3MgdG8gV2ViS2l0MiBNYWlsIGNvbXBvc2UgaXMgaW5jb3JyZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE2NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzUxMjUwOTUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE91ciBjdXJyZW50IGxvZ2ljIGZvciBoYW5kbGluZyBkcm9wcGVk
IGNvbnRlbnQgaW4gZWRpdGFibGUgZWxlbWVudHMgb24gaU9TIHdvcmtzIGxpa2UgdGhpcyBpbiB0
aGUgaWRlYWwgY2FzZToKKworICAgICAgICAoMSkgICAgIFVJS2l0IGFza3MgdXMgZm9yIGEgdGFy
Z2V0ZWQgcHJldmlldyBmb3IgZWFjaCBVSURyYWdJdGVtLiBXZSBkb24ndCBrbm93IChhbmQgY2Fu
J3QgZGV0ZXJtaW5lIHRoaXMKKyAgICAgICAgICAgICAgICBzeW5jaHJvbm91c2x5IHdpdGhvdXQg
YmxvY2tpbmcgb24gdGhlIHdlYiBwcm9jZXNzKSBzbyB3ZSBzaW1wbHkgcmV0YXJnZXQgdGhlIHBy
ZXZpZXcgdG8gYW5pbWF0ZSB0byB0aGUKKyAgICAgICAgICAgICAgICBsYXN0IGtub3duIGNhcmV0
IGxvY2F0aW9uLgorCisgICAgICAgICgyKSAgICAgU29vbmFmdGVyLCBVSUtpdCBoYW5kcyB1cyBh
IGRyb3AgcHJldmlldyB1cGRhdGUgYmxvY2ssIHdoaWNoIG1heSBiZSB1c2VkIHRvIHJldGFyZ2V0
IHRoZSBkcm9wIHByZXZpZXcKKyAgICAgICAgICAgICAgICBvbmNlLCBhcyBsb25nIGFzIHRoZSBk
cm9wIGFuaW1hdGlvbiBpcyBsZXNzIHRoYW4gOTAlIGNvbXBsZXRlLiBXZSBzdGFzaCB0aGVzZSB1
cGRhdGUgYmxvY2tzIGZvciBub3cuCisKKyAgICAgICAgKDMpICAgICAtZHJvcEludGVyYWN0aW9u
OnBlcmZvcm1Ecm9wOiBpcyB0aGVuIGNhbGxlZCwgYW5kIHdlIHN0YXJ0IGxvYWRpbmcgaXRlbSBw
cm92aWRlciBkYXRhIHJpZ2h0IGF3YXkuCisKKyAgICAgICAgKDQpICAgICBXaGVuIHRoZSBkYXRh
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLCB3ZSBwZXJmb3JtIHRoZSBkcm9wIGluIHRoZSB3ZWIgcHJv
Y2Vzcy4gQWZ0ZXIgYW55IGluc2VydGVkIGltYWdlcworICAgICAgICAgICAgICAgIGhhdmUgZmlu
aXNoZWQgbG9hZGluZywgd2UgdGFrZSBzbmFwc2hvdHMgKG9mIHRoZSBkcm9wcGVkIGNvbnRlbnQg
YXMgd2VsbCBhcyBzdXJyb3VuZGluZyB3ZWIgY29udGVudAorICAgICAgICAgICAgICAgIG1pbnVz
IHRoZSBkcm9wcGVkIGNvbnRlbnQpLCBhbmQgZGVsaXZlciB0aGVzZSBpbWFnZXMgdG8gdGhlIFVJ
IHByb2Nlc3MgdmlhIFRleHRJbmRpY2F0b3JEYXRhLgorCisgICAgICAgICg1KSAgICAgVXBvbiBy
ZWNlaXZpbmcgdGhlIFRleHRJbmRpY2F0b3JEYXRhIHNlbnQgaW4gKDQpLCB3ZSB1c2UgdGhlIGlt
YWdlIGRhdGEgdG8gY3JlYXRlIHVwZGF0ZWQgdGFyZ2V0ZWQgZHJhZworICAgICAgICAgICAgICAg
IHByZXZpZXdzLCBhbmQgdXNlIHRoZXNlIHRvIGludm9rZSB0aGUgcHJldmlldyB1cGRhdGUgYmxv
Y2tzIHdlIHN0b3JlZCBlYXJsaWVyIGluICgyKS4gV2UgYWxzbyBvYnNjdXJlCisgICAgICAgICAg
ICAgICAgdGhlIGVudGlyZSB3ZWIgdmlldyB3aXRoIGEgc25hcHNob3Qgb2YgdGhlIHZpZXcgbWlu
dXMgYW55IGRyb3BwZWQgY29udGVudCwgc3VjaCB0aGF0IHRoZSB1cGRhdGVkIGRyb3AKKyAgICAg
ICAgICAgICAgICBwcmV2aWV3cyBtYXkgYW5pbWF0ZSBpbnRvIHBsYWNlIHdpdGhvdXQgYWxzbyBz
aG93aW5nIHRoZSBmaW5hbCBjb250ZW50LgorCisgICAgICAgICg2KSAgICAgV2hlbiB0aGUgZHJv
cCBhbmltYXRpb24gZW5kcywgd2UgcmVtb3ZlIHRoZSB1bnNlbGVjdGVkIGNvbnRlbnQgc25hcHNo
b3QgdmlldyBhZGRlZCBpbiAoNSkgc2ltdWx0YW5lb3VzbHkKKyAgICAgICAgICAgICAgICBhcyB0
aGUgdGFyZ2V0ZWQgcHJldmlld3MgZGlzYXBwZWFyLCByZXZlYWxpbmcgdGhlIGFjdHVhbCBkcm9w
cGVkIGNvbnRlbnQgb24gdGhlIHBhZ2UuIFRoZSBkcm9wIGlzIG5vdworICAgICAgICAgICAgICAg
IGNvbXBsZXRlLgorCisgICAgICAgIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgZHJhZyB1cGRhdGUg
YmxvY2sgd2UgaW52b2tlIGluICg1KSBkb2Vzbid0IHdvcmsgaWYgdGhlIGRyb3AgYW5pbWF0aW9u
IGlzIGFscmVhZHkgbW9yZQorICAgICAgICB0aGFuIDkwJSBjb21wbGV0ZS4gU2luY2UgdGhlIGxp
ZmVjeWNsZSBvZiB0aGUgZHJvcCBhbmltYXRpb24gaXMgZGlzdGluY3QgZnJvbSB0aGF0IG9mIGl0
ZW0gcHJvdmlkZXIgbG9hZGluZywgaWYKKyAgICAgICAgdGhlIGRlbGF5IGJldHdlZW4gKDMpIGFu
ZCAoNCkgZXhjZWVkcyA5MCUgb2YgdGhlIHRvdGFsIGRyb3AgYW5pbWF0aW9uIHRpbWUsIHdlJ2xs
IGZhaWwgdG8gdXBkYXRlIHRoZSB0YXJnZXRlZAorICAgICAgICBwcmV2aWV3cywgc3VjaCB0aGF0
IHRoZSB1c2VyIG9ubHkgc2VlcyB0aGUgaW5pdGlhbCBkcmFnIHByZXZpZXcgZmx5IG9uIHRvcCBv
ZiB0aGUgY2FyZXQgYW5kIGRpc2FwcGVhci4gV2hpbGUgd2UKKyAgICAgICAgdHlwaWNhbGx5IHdp
biB0aGlzIHJhY2UgZm9yIGRhdGEgZHJhZ2dlZCBmcm9tIG90aGVyIFdlYktpdCBhcHBzLCB3ZSBh
bG1vc3QgYWx3YXlzIGxvc2Ugd2hlbiBkcmFnZ2luZyBmcm9tIFBob3RvcworICAgICAgICBhbmQg
ZW5kIHVwIHdpdGggYSBqYW5reSBkcm9wIGFuaW1hdGlvbi4gVGhpcyBpcyBlc3BlY2lhbGx5IHRy
dWUgZm9yIGFueSBpbWFnZXMgdGhhdCBhcmVuJ3QgbG9jYWxseSBhdmFpbGFibGUsCisgICAgICAg
IGFuZCBuZWVkIHRvIGJlIGZldGNoZWQgZnJvbSBpQ2xvdWQuIEFuIGFkZGl0aW9uYWwgcHJvYmxl
bSBpcyB0aGF0IGluIHN0ZXAgKDUpLCB3ZSB1c2UgdGhlIHNhbWUgZmluYWwgc25hcHNob3QgdG8K
KyAgICAgICAgdXBkYXRlIHRoZSBkcm9wIHByZXZpZXcgb2YgZXZlcnkgaXRlbSwgc2luY2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIHNuYXBzaG90IGZvciB0aGUgZnJhZ21lbnQgY29ycmVzcG9uZGluZyB0byBl
YWNoCisgICAgICAgIGluZGl2aWR1YWwgZHJvcHBlZCBpdGVtLgorCisgICAgICAgIFRvIGFkZHJl
c3MgdGhlc2UgaXNzdWVzIGZvciBNYWlsIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2VyIGRyb3Bz
IGltYWdlcyB3aXRoIGtub3duIHNpemVzIChpLmUuIC1bTlNJdGVtUHJvdmlkZXIKKyAgICAgICAg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZV0gaXMgc3BlY2lmaWVkKSwgd2UgaW50cm9kdWNlIGFu
IGFsdGVybmF0ZSBjb2RlcGF0aCBmb3IgaGFuZGxpbmcgZHJvcHBlZCBpbWFnZXMgdGhhdAorICAg
ICAgICBwZXJmb3JtcyB0aGUgZHJvcCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyAtZHJvcElu
dGVyYWN0aW9uOnBlcmZvcm1Ecm9wOiBpbiB0aGUgVUkgcHJvY2Vzcy4gU2luY2UgdGhlIGRhdGEg
aGFzCisgICAgICAgIHlldCB0byBhcnJpdmUsIHdlIGluc3RlYWQgaGFuZGxlIHRoZSBkcm9wIGJ5
IGluc2VydGluZyBwbGFjZWhvbGRlciBpbWFnZSBlbGVtZW50cyBhdCB0aGUgZHJhZyBjYXJldCBw
b3NpdGlvbiwKKyAgICAgICAgd2hpY2ggaW5pdGlhbGx5IGhhdmUgbm8gc291cmNlIGJ1dCBhcmUg
c2l6ZWQgdG8gZml0IHRoZWlyIGV4cGVjdGVkIGZpbmFsIGltYWdlIHNpemVzLiBBZnRlciBkb2lu
ZyBzbywgd2UKKyAgICAgICAgc25hcHNob3QgdGhlIHBhZ2UgKG1pbnVzIHRoZSBkcm9wcGVkIGNv
bnRlbnQgcmFuZ2UsIGFzIHVzdWFsKSBhbmQgZGVsaXZlciB0aGlzIHNuYXBzaG90IHRvIHRoZSBV
SSBwcm9jZXNzLCBhbG9uZworICAgICAgICB3aXRoIHRoZSByZWN0cyAoaW4gcm9vdCB2aWV3IGNv
b3JkaW5hdGVzKSBvZiBlYWNoIHBsYWNlaG9sZGVyIGltYWdlIHRoYXQgd2FzIGluc2VydGVkLiBJ
biB0aGUgVUkgcHJvY2Vzcywgd2UKKyAgICAgICAgdGhlbiB0YWtlIHRoaXMgc25hcHNob3QgYW5k
IG9ic2N1cmUgdGhlIGNvbnRlbnQgdmlldyB3aXRoIGl0LCBhbmQgYWxzbyB1c2UgZWFjaCBvZiB0
aGUgcGxhY2Vob2xkZXIgcmVjdHMgdG8KKyAgICAgICAgcHJvdmlkZSBhbiB1cGRhdGVkIHRhcmdl
dCBmb3IgZWFjaCBkcmFnIHByZXZpZXcsIHN1Y2ggdGhhdCB0aGUgZHJvcCBwcmV2aWV3cyBub3cg
YW5pbWF0ZSB0byB0aGVpciBmaW5hbAorICAgICAgICBsb2NhdGlvbnMgb24gdGhlIHBhZ2UuCisK
KyAgICAgICAgV2hlbiB0aGUgZGF0YSBldmVudHVhbGx5IGFycml2ZXMsIHdlIGhhbmRsZSB0aGUg
ZHJvcCBieSBkZXRlY3RpbmcgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnRzIHdlIGluc2VydGVkIGVh
cmxpZXIsCisgICAgICAgIGFuZCB1c2luZyB0aGUgZHJvcHBlZCBkYXRhIHRvIHVwZGF0ZSB0aGUg
c291cmNlIGF0dHJpYnV0ZSBhbmQgYXR0YWNobWVudCBiYWNraW5nIGZvciBlYWNoIG9mIHRoZXNl
IHBsYWNlaG9sZGVyCisgICAgICAgIGVsZW1lbnRzIGluc3RlYWQgb2YgYXR0ZW1wdGluZyB0byBp
bnNlcnQgbmV3IGNvbnRlbnQuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgY29kZXBhdGggaXMg
Y3VycmVudGx5IG9ubHkgZW5hYmxlZCBmb3IgU1BJIGNsaWVudHMgdGhhdCBzZXQgLVtXS1dlYlZp
ZXcgX2VkaXRhYmxlXSB0byBZRVMsIHNpbmNlCisgICAgICAgIGl0IGludm9sdmVzIHVzIHBlcmZv
cm1pbmcgdGhlIGVkaXRpbmcgYWN0aW9uIGZvciB0aGUgZHJvcCAodGh1cyBjaGFuZ2luZyB0aGUg
RE9NKSBwcmlvciB0byB0aGUgcHJldmVudGFibGUgZHJvcAorICAgICAgICBldmVudCwgYW5kIHBy
aW9yIHRvIHVzIGhhdmluZyBhbnkgZGF0YSBhdCBhbGwuIEhvd2V2ZXIsIHRoZSBkcm9wIGV2ZW50
IGNhbid0IGNvbWUgYmVmb3JlIHRoZSBlZGl0aW5nIGFjdGlvbiwKKyAgICAgICAgc2luY2Ugd2Ug
bmVlZCB0byBoYXZlIGFscmVhZHkgbG9hZGVkIGRhdGEgZnJvbSB0aGUgaXRlbSBwcm92aWRlcnMg
dG8gZXhwb3NlIGl0IHZpYSB0aGUgZGF0YVRyYW5zZmVyIG9mIHRoZSBkcm9wCisgICAgICAgIGV2
ZW50LiBUaGlzIGNvbnRyYWRpY3Rpb24gbWVhbnMgdGhhdCB0aGlzIGltYWdlIHBsYWNlaG9sZGVy
IGhhY2sgaXMgb25seSBmb3IgX2VkaXRhYmxlIFNQSSBjbGllbnRzIHRoYXQsIGF0IHRoZQorICAg
ICAgICB2ZXJ5IGxlYXN0LCB3aWxsIG5vdCByZXF1aXJlIHByZXZlbnRpbmcgZGVmYXVsdCBiZWhh
dmlvciB3aGVuIGRyb3BwaW5nIG9ubHkgaW1hZ2VzIHdpdGggcHJlZGV0ZXJtaW5lZCBzaXplcy4K
KworICAgICAgICBDb3ZlcmVkIGJ5IDIgbmV3IEFQSSB0ZXN0cy4gU2VlIGNvbW1lbnRzIGJlbG93
IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnNldERlZmF1bHREcm9wUHJldmll
dyk6CisKKyAgICAgICAgQWRkIGEgd2F5IHRvIGtlZXAgdHJhY2sgb2YgZGVmYXVsdCBkcm9wIHBy
ZXZpZXdzIHRoYXQgd2Ugb2JzZXJ2ZWQgZHVyaW5nIGVhY2ggY2FsbCB0bworICAgICAgICAtZHJv
cEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6LiBJbiB0aGUg
aW1hZ2UgcGxhY2Vob2xkZXIgZHJvcCBzY2VuYXJpbywgd2UgdXNlIHRoZXNlCisgICAgICAgIGRl
ZmF1bHQgZHJvcCBwcmV2aWV3cyBsYXRlciBvbiB0byBjcmVhdGUgcmV0YXJnZXRlZCBkcm9wIHBy
ZXZpZXdzIGFmdGVyIHRoZSBwbGFjZWhvbGRlcnMgaGF2ZSBiZWVuIGluc2VydGVkLgorCisgICAg
ICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVmYXVsdERyb3BQcmV2aWV3
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkZWxp
dmVyRGVsYXllZERyb3BQcmV2aWV3KToKKworICAgICAgICBBZGQgYW4gYWx0ZXJuYXRlIHZlcnNp
b24gb2YgZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyB0aGF0IGlzIHVzZWQgd2hlbiBpbnNlcnRp
bmcgaW1hZ2UgcGxhY2Vob2xkZXJzLiBSYXRoZXIKKyAgICAgICAgdGhhbiB1c2UgdGV4dCBpbmRp
Y2F0b3IgZGF0YSBvZiB0aGUgZmluYWwgZHJvcHBlZCBjb250ZW50IG9uIHRoZSBwYWdlLCB1c2Ug
dGhlIHJvb3Qtdmlldy1jb29yZGluYXRlIHJlY3RzIG9mCisgICAgICAgIGVhY2ggb2YgdGhlIHBs
YWNlaG9sZGVyIGVsZW1lbnRzIHRvIHJlcG9zaXRpb24gdGhlIGRlZmF1bHQgZHJvcCBwcmV2aWV3
cy4KKworICAgICAgICBUaGVyZSdzIGFkZGl0aW9uYWwgbG9naWMgaGVyZSB0byBoYW5kbGUgdGhl
IGNhc2Ugd2hlcmUgdGhlIGZpbmFsIGltYWdlIGlzIHRhbGxlciB0aGFuIHRoZSBoZWlnaHQgb2Yg
dGhlCisgICAgICAgIHVub2JzY3VyZWQgY29udGVudCByZWN0LCBpbiB3aGljaCBjYXNlIHdlIGNs
aXAgdGhlIGRyb3AgcHJldmlldyB1c2luZyBVSURyYWdQcmV2aWV3UGFyYW1ldGVyJ3MgdmlzaWJs
ZVBhdGggdG8KKyAgICAgICAgcHJldmVudCB0aGUgZHJvcCBwcmV2aWV3IGZyb20gYmVpbmcgc2hv
d24gb3V0c2lkZSBvZiB0aGUgYm91bmRzIG9mIHRoZSB3ZWIgdmlldy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
c2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0ZW1zKToKKwor
ICAgICAgICBDb2xsZWN0cyB0aGUgbGlzdCBvZiBleHBlY3RlZCBpbWFnZSBzaXplcyBmb3IgdGhl
IGRyb3BwZWQgaXRlbSBwcm92aWRlcnMsIG9yIGFuIGVtcHR5IGxpc3QgaW4gdGhlIGNhc2Ugd2hl
cmUKKyAgICAgICAgYW55IG9mIHRoZSBpdGVtIHByb3ZpZGVycyBtYXkgbm90IGJlIHJlcHJlc2Vu
dGVkIGFzIGlubGluZSBpbWFnZXMgb3IgZG8gbm90IGhhdmUgcHJlZGV0ZXJtaW5lZCBzaXplcy4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBs
YWNlaG9sZGVyczpzZXNzaW9uOl0pOgorCisgICAgICAgIElmIHBvc3NpYmxlLCBoYW5kbGVzIHRo
ZSBkcm9wIGJ5IGluc2VydGluZyBpbWFnZSBwbGFjZWhvbGRlcnMgaW5zdGVhZCBvZiB3YWl0aW5n
IGZvciB0aGUgZGF0YSB0byBmaW5pc2ggbG9hZGluZworICAgICAgICBiZWZvcmUgZHJvcHBpbmcu
IFJldHVybnMgd2hldGhlciBvciBub3Qgd2UgZGVjaWRlZCB0byBwcm9jZWVkIHdpdGggdGhlIGlt
YWdlIHBsYWNlaG9sZGVyIGRyb3AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50
ZXJhY3Rpb246cGVyZm9ybURyb3A6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcElu
dGVyYWN0aW9uOml0ZW06d2lsbEFuaW1hdGVEcm9wV2l0aEFuaW1hdG9yOl0pOgorCisgICAgICAg
IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB1bnNlbGVjdGVkIGNvbnRlbnQgc25hcHNob3QgdmlldyBj
b3VsZCBsaW5nZXIgYXJvdW5kIG9uIHRoZSB3ZWIgdmlldyBmb3JldmVyIGFmdGVyIGEgZHJvcAor
ICAgICAgICB3aGVyZSB0aGUgZGF0YSBkb2Vzbid0IGxvYWQgaW4gdGltZSBmb3IgdGhlIGRyb3Ag
dG8gZmluaXNoIGJ5IGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciB0aGVyZSBpcyBhbiBhY3RpdmVs
eQorICAgICAgICBhbmltYXRpbmcgZHJhZyBpdGVtLCBhbmQgb25seSBhcHBseWluZyB0aGUgdW5z
ZWxlY3RlZCBjb250ZW50IHNuYXBzaG90IGlmIHNvLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZHJvcEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6XSk6
CisKKyAgICAgICAgU3Rhc2ggdGhlIGRlZmF1bHQgZHJvcCBwcmV2aWV3IGF3YXkgaGVyZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycyk6CisKKyAgICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9n
IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZp
bmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorCisgICAgICAgIElmIHRoZSBpbWFnZSB0aGF0
IGZpbmlzaGVkIGxvYWRpbmcgaXMgYSBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVyLCBhbGxvdyBE
cmFnQ29udHJvbGxlciB0byAiZmluYWxpemUiIGl0IGJ5CisgICAgICAgIHN0cmlwcGluZyBhd2F5
IHNvbWUgc3R5bGVzIHRoYXQgd2VyZSB0ZW1wb3JhcmlseSBhZGRlZC4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFk
ZXIuaAppbmRleCA4N2Y0NTU1MDMwOWI1OTUyOTgwNTBiMWQ1OTU3MDVmYmRjNzk3MThiLi42ODNl
MjQ0MzQ5YzkwNWE2ODI5OTczNDBlODM1ZTZlZGE4YTZmZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlk
ZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKLSNlbmRpZgogICAgIGJvb2wgcmVhZFBs
YWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyNlbmRpZgogfTsKIAogY2xhc3MgV2Vi
Q29udGVudE1hcmt1cFJlYWRlciBmaW5hbCA6IHB1YmxpYyBGcmFtZVdlYkNvbnRlbnRSZWFkZXIg
ewpAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKICAg
ICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyNlbmRpZgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA0ZWE4OTMwYTZj
OTkzYzE2OWU5MmE0MDgwMjU4ZjRiYmE1NDljNzU0Li44NTZlYjg4Njg3YTgzNThiMWI3ZTE5NTY4
NjAxOGU1NjM2MTI0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJzZXI7IH0KIAorICAgIGJvb2wgaXNEcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcjsgfQorICAgIHZvaWQgc2V0SXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpIHsgbV9pc0Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVyID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqID0gbnVsbHB0ciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7CiAKQEAgLTE4OSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9leHBlcmltZW50YWxJbWFnZU1lbnVFbmFi
bGVkOwogICAgIGJvb2wgbV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCB7IGZhbHNlIH07
IC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHBhcnNlQXR0cmlidXRlKCkgY2Fu
J3Qgc2VlIHRoZSBvbGQgdmFsdWUuCiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlciB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U+IG1fZWRpdGFibGVJbWFnZTsKICAgICBX
ZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDVjZjNkYWQ3OGUyNzJjMmY3N2NiMGE1OGQw
Njc2YjU0Y2JmYmUwZi4uMjQ0MDM1OGE2NjBhNzAzNGY2NWRlOGRjZGQ1MTFkMDJkNjA2YjJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0yMDYsNiArMjA3
LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2RpZEluaXRpYXRl
RHJhZyA9IGZhbHNlOwogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBj
bGVhckRyYWdDYXJldCgpOworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygp
OwogICAgIAogICAgIG1fY2xpZW50LmRyYWdFbmRlZCgpOwogfQpAQCAtMjM4LDYgKzI0MCwxNiBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgZHJhZ0lzSGFuZGxlZEJ5RG9jdW1lbnQoRHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZAogCiBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CisgICAgaWYgKCFtX2Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVycy5pc0VtcHR5KCkgJiYgbV9kcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlclJhbmdlICYmIHRyeVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGRyYWdEYXRh
KSkgeworICAgICAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycy5jbGVhcigpOworICAgICAg
ICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBudWxscHRyOworICAgICAgICBtX2Rv
Y3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycygpOworCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNQZXJmb3JtaW5nRHJvcCht
X2lzUGVyZm9ybWluZ0Ryb3AsIHRydWUpOwogICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBp
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKSwgV1RGOjpudWxsb3B0LCBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9y
ZVNlbGVjdGlvbkNoYW5nZXMpOwogCkBAIC0xMzEyLDYgKzEzMjQsMTM4IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAgICAgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogfQogCit2b2lkIERy
YWdDb250cm9sbGVyOjpyZW1vdmVBbGxEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKQoreworICAg
IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRv
JiBwbGFjZWhvbGRlciA6IHN0ZDo6ZXhjaGFuZ2UobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMs
IHsgfSkpIHsKKyAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Nvbm5lY3RlZCgpKQorICAgICAg
ICAgICAgcGxhY2Vob2xkZXItPnJlbW92ZSgpOworICAgIH0KK30KKworYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQoreworICAgIEFTU0VSVCghbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKTsKKwor
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBd
LT5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZnJh
bWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJh
bmdlLCB0cnVlKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworCisg
ICAgaWYgKCFyZWFkZXIuZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IGltYWdlRWxlbWVudHM7CisgICAgZm9yIChhdXRv
JiBpbWFnZUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PigqcmVh
ZGVyLmZyYWdtZW50KSkKKyAgICAgICAgaW1hZ2VFbGVtZW50cy5hcHBlbmQoaW1hZ2VFbGVtZW50
KTsKKworICAgIGlmIChpbWFnZUVsZW1lbnRzLnNpemUoKSAhPSBtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50c1tpXTsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyc1tpXTsKKyAgICAgICAgcGxhY2Vob2xkZXItPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBpbWFnZUVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGlt
YWdlRWxlbWVudC0+YXR0YWNobWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHBsYWNlaG9sZGVy
LT5zZXRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50LnJlbGVhc2VOb25OdWxsKCkpOworI2Vu
ZGlmCisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERyYWdDb250cm9sbGVyOjpp
bnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXpl
PiYgaW1hZ2VTaXplcykKK3sKKyAgICBhdXRvJiBjYXJldENvbnRyb2xsZXIgPSBtX3BhZ2UuZHJh
Z0NhcmV0Q29udHJvbGxlcigpOworICAgIGlmICghY2FyZXRDb250cm9sbGVyLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZHJvcENhcmV0ID0g
Y2FyZXRDb250cm9sbGVyLmNhcmV0UG9zaXRpb24oKTsKKyAgICBpZiAoZHJvcENhcmV0LmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihk
cm9wQ2FyZXQuZGVlcEVxdWl2YWxlbnQoKS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3VtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVu
dC0+ZnJhbWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlIHNlbGVjdGlvbkNoYW5nZSgqZnJhbWUsIFdURjo6bnVsbG9w
dCwgeyBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9yZVNlbGVjdGlvbkNoYW5nZXMgfSk7
CisKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpkb2N1bWVu
dCk7CisgICAgZm9yIChhdXRvJiBzaXplIDogaW1hZ2VTaXplcykgeworICAgICAgICBBU1NFUlQo
IXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6
OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKHNp
emUud2lkdGgoKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihzaXplLmhl
aWdodCgpKSk7CisgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWF4V2lkdGgsIDEwMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKKyAg
ICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkuY3NzVGV4dCgp
KTsKKyAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKTsKKyAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKKyAgICB9CisKKyAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKGRyb3BDYXJldCk7CisKKyAgICBhdXRvIGNv
bW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCpkb2N1bWVudCwgV1RGTW92
ZShmcmFnbWVudCksIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlIH0sIEVkaXRBY3Rpb246Okluc2Vy
dEZyb21Ecm9wKTsKKyAgICBjb21tYW5kLT5hcHBseSgpOworCisgICAgYXV0byBpbnNlcnRlZENv
bnRlbnRSYW5nZSA9IGNvbW1hbmQtPmluc2VydGVkQ29udGVudFJhbmdlKCk7CisgICAgaWYgKCFp
bnNlcnRlZENvbnRlbnRSYW5nZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmVyID0gbWFrZVJlZlB0cihp
bnNlcnRlZENvbnRlbnRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoKSk7CisgICAgaWYg
KCFpczxDb250YWluZXJOb2RlPihjb250YWluZXIpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFJlZjxIVE1MSW1h
Z2VFbGVtZW50Pj4gcGxhY2Vob2xkZXJzOworICAgIGZvciAoYXV0byYgcGxhY2Vob2xkZXIgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50Pihkb3duY2FzdDxDb250YWluZXJOb2Rl
PigqY29udGFpbmVyKSkpIHsKKyAgICAgICAgYXV0byBpbnRlcnNlY3RzTm9kZSA9IGluc2VydGVk
Q29udGVudFJhbmdlLT5pbnRlcnNlY3RzTm9kZShwbGFjZWhvbGRlcik7CisgICAgICAgIGlmICgh
aW50ZXJzZWN0c05vZGUuaGFzRXhjZXB0aW9uKCkgJiYgaW50ZXJzZWN0c05vZGUucmV0dXJuVmFs
dWUoKSkKKyAgICAgICAgICAgIHBsYWNlaG9sZGVycy5hcHBlbmQocGxhY2Vob2xkZXIpOworICAg
IH0KKworICAgIGlmIChwbGFjZWhvbGRlcnMuc2l6ZSgpICE9IGltYWdlU2l6ZXMuc2l6ZSgpKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbGFjZWhvbGRlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcnNbaV07CisgICAgICAgIGF1
dG8gaW1hZ2VTaXplID0gaW1hZ2VTaXplc1tpXTsKKyAgICAgICAgZG91YmxlIGNsaWVudFdpZHRo
ID0gcGxhY2Vob2xkZXItPmNsaWVudFdpZHRoKCk7CisgICAgICAgIGRvdWJsZSBoZWlnaHRSZXNw
ZWN0aW5nQXNwZWN0UmF0aW8gPSAoaW1hZ2VTaXplLmhlaWdodCgpICogY2xpZW50V2lkdGgpIC8g
aW1hZ2VTaXplLndpZHRoKCk7CisgICAgICAgIHBsYWNlaG9sZGVyLT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbVN0cmluZzo6bnVt
YmVyKGhlaWdodFJlc3BlY3RpbmdBc3BlY3RSYXRpbykpOworICAgIH0KKworICAgIGRvY3VtZW50
LT51cGRhdGVMYXlvdXQoKTsKKworICAgIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzID0gV1RG
TW92ZShwbGFjZWhvbGRlcnMpOworICAgIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9
IFdURk1vdmUoaW5zZXJ0ZWRDb250ZW50UmFuZ2UpOworCisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LmNsZWFyKCk7CisgICAgY2FyZXRDb250cm9sbGVyLnNldENhcmV0UG9zaXRpb24obV9kcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlclJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworfQorCit2b2lkIERyYWdD
b250cm9sbGVyOjpmaW5hbGl6ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVyKEhUTUxJbWFnZUVsZW1l
bnQmIHBsYWNlaG9sZGVyKQoreworICAgIEFTU0VSVChwbGFjZWhvbGRlci5pc0Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyKCkpOworICAgIHBsYWNlaG9sZGVyLnJlbW92ZUF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmhlaWdodEF0dHIpOworICAgIHBsYWNlaG9sZGVyLnJlbW92ZUlubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworfQorCiAvLyBNYW51YWwgZHJhZyBjYXJl
dCBtYW5pcHVsYXRpb24KIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnBsYWNlRHJhZ0NhcmV0KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCA3M2ZlZDA5ZjEwYzUyMGM1MWJmMjhiZGY2NGQyMWVjYzZhOGRiNjNkLi5kMmJhMWZj
YWIxMWNmMmI5YjhjNGFkNmNiYTcxZjAzNWMyMjNhZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVTZWxlY3Rpb247CitjbGFzcyBIVE1MSW1h
Z2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBQYWdlOwpAQCAtODgsNiArODksMTIgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87
CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAgICAgIAogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7
CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4mIGRyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzOyB9CisgICAgICAgIGNvbnN0IFJlZlB0cjxSYW5nZT4mIGRyb3BwZWRJbWFnZVBsYWNlaG9s
ZGVyUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2U7
IH0KKworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplRHJvcHBlZEltYWdlUGxh
Y2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1l
JiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgc3RhdGljIGNvbnN0IEludFNpemUm
IG1heERyYWdJbWFnZVNpemUoKTsKQEAgLTEyOCw2ICsxMzUsOSBAQCBzdHJ1Y3QgUHJvbWlzZWRB
dHRhY2htZW50SW5mbzsKICNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCB0cnlUb1Vw
ZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBEcmFnRGF0YSYpOworICAgICAgICB2
b2lkIHJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygpOworCiAgICAgICAgIFN0cmlu
ZyBwbGF0Zm9ybUNvbnRlbnRUeXBlRm9yQmxvYlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKIAogICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKQEAgLTE1Miw2ICsx
NjIsOCBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKICAgICAgICAgSW50UG9pbnQg
bV9kcmFnT2Zmc2V0OwogICAgICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOwogICAgICAgICBi
b29sIG1faXNQZXJmb3JtaW5nRHJvcCB7IGZhbHNlIH07CisgICAgICAgIFZlY3RvcjxSZWY8SFRN
TEltYWdlRWxlbWVudD4+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzOworICAgICAgICBSZWZQ
dHI8UmFuZ2U+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZTsKICAgICB9OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RyYWdnYWJsZUxpbmsoY29uc3QgRWxlbWVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDI4NzdjZWRiZTYwODI2Y2MyMDg1MGM5
MTcxZWI4OTY1ZDVhOTQzYWEuLmZiODYwZTEzODQ1MjFhOTg5NWM0N2E1MmI0OWEyNDMyYmEzZmQ4
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTE0NCw4ICsxNDQsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwot
I2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAw
OworI2VuZGlmCiB9OwogCiBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGY1
NTIxOTYxYjZhOTA1ZGJmNzY3OGQwMjNmMTYyMjU1ODE5ODYwYmEuLjQ3NWM3OWFlZDliYTI5YzEw
NmU4ZDQ0NmUyMzI4OGRlMjFmNzJkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLVN0cmluZyBNSU1FVHlw
ZUZyb21VVEkoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgTUlNRVR5cGVG
cm9tVVRJKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3Qg
U3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpOwogYm9vbCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3ZDViNTljN2JjMmViNzkyZjdhZDA2YjljOTM3
ZmUyMjM4MTFmYTVmLi42OGFmODM0NWNkNmY0YzZhYzc1ODRhOWFhZWY2MWRjZmU1MGFmNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzQ0LDYgKzc0NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJv
b2wgYWRkZWQpOwogICAgIHZvaWQgcmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7CiAgICAgdm9p
ZCByZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZEFjdGlvbnMpOworICAgIHZv
aWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBseSk7
CiAgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRh
Pik7CiAgICAgdm9pZCBkaWRDb25jbHVkZURyb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAppbmRleCBmNTdkYjlm
MDllMTVkYmM0ZTNiZGMwYjk0MDk1YjUwODE3ZTgxNDg5Li5kMmUwYjkwOWZlYzU0NGM1MzI5NjE2
MzAyZjhmN2JhYWI5ODIyM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCkBAIC01OSw2ICs1OSwxMSBAQCBzdHJ1
Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAgICBOU0ludGVnZXIgaXRlbUlkZW50aWZpZXIgeyAwIH07
CiB9OwogCitzdHJ1Y3QgSXRlbUFuZFByZXZpZXcgeworICAgIFJldGFpblB0cjxVSURyYWdJdGVt
PiBpdGVtOworICAgIFJldGFpblB0cjxVSVRhcmdldGVkRHJhZ1ByZXZpZXc+IHByZXZpZXc7Cit9
OworCiBzdHJ1Y3QgSXRlbUFuZFByZXZpZXdQcm92aWRlciB7CiAgICAgUmV0YWluUHRyPFVJRHJh
Z0l0ZW0+IGl0ZW07CiAgICAgQmxvY2tQdHI8dm9pZChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKik+
IHByb3ZpZGVyOwpAQCAtOTgsMTMgKzEwMywxNyBAQCBwdWJsaWM6CiAgICAgQmxvY2tQdHI8dm9p
ZCgpPiB0YWtlRHJhZ0NhbmNlbFNldERvd25CbG9jaygpIHsgcmV0dXJuIFdURk1vdmUobV9kcmFn
Q2FuY2VsU2V0RG93bkJsb2NrKTsgfQogICAgIEJsb2NrUHRyPHZvaWQoTlNBcnJheTxVSURyYWdJ
dGVtICo+ICopPiB0YWtlQWRkRHJhZ0l0ZW1Db21wbGV0aW9uQmxvY2soKSB7IHJldHVybiBXVEZN
b3ZlKG1fYWRkRHJhZ0l0ZW1Db21wbGV0aW9uQmxvY2spOyB9CiAKKyAgICB2b2lkIHNldERlZmF1
bHREcm9wUHJldmlldyhVSURyYWdJdGVtICosIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKTsKICAg
ICB2b2lkIHByZXBhcmVGb3JEZWxheWVkRHJvcFByZXZpZXcoVUlEcmFnSXRlbSAqLCB2b2lkKF5w
cm92aWRlcikoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpwcmV2aWV3KSk7CiAgICAgdm9pZCBkZWxp
dmVyRGVsYXllZERyb3BQcmV2aWV3KFVJVmlldyAqY29udGVudFZpZXcsIFVJVmlldyAqcHJldmll
d0NvbnRhaW5lciwgY29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsKKyAgICB2b2lk
IGRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpjb250ZW50VmlldywgQ0dSZWN0IHVu
b2JzY3VyZWRDb250ZW50UmVjdCwgTlNBcnJheTxVSURyYWdJdGVtICo+ICosIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYgcGxhY2Vob2xkZXJSZWN0cyk7CiAgICAgdm9pZCBjbGVhckFs
bERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwogICAgIE9wdGlvbmFsPERyYWdTb3Vy
Y2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBjb25zdDsKKyAg
ICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJdGVtICop
IGNvbnN0OworICAgIEJsb2NrUHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopPiBkcm9w
UHJldmlld1Byb3ZpZGVyKFVJRHJhZ0l0ZW0gKik7CiAKICAgICBDR1BvaW50IG1fbGFzdEdsb2Jh
bFBvc2l0aW9uIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1BvaW50IG1fYWRqdXN0ZWRQb3NpdGlv
bkZvckRyYWdFbmQgeyBDR1BvaW50WmVybyB9OwpAQCAtMTE5LDYgKzEyOCw3IEBAIHByaXZhdGU6
CiAgICAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBtX3N0YWdlZERyYWdTb3VyY2U7CiAgICAg
VmVjdG9yPERyYWdTb3VyY2VTdGF0ZT4gbV9hY3RpdmVEcmFnU291cmNlczsKICAgICBWZWN0b3I8
SXRlbUFuZFByZXZpZXdQcm92aWRlcj4gbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnM7Cisg
ICAgVmVjdG9yPEl0ZW1BbmRQcmV2aWV3PiBtX2RlZmF1bHREcm9wUHJldmlld3M7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGFmMjc2YTMwMzA5MmUwNmE4
MDg5NDczNzA5ZTliYWNlMWVlZTRkOTQuLjU4OGU4M2M5NTJhYzkxZjMxOWVkZTFkMGNmODUzN2Zl
ZmM3MTA3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMjMsMTEgKzIzLDEyIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIgorI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KIApA
QCAtMTg1LDYgKzE4NiwzMSBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ1Nl
c3Npb25XaWxsQmVnaW4oKQogICAgIHVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMo
KTsKIH0KIAordm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnNldERlZmF1bHREcm9wUHJl
dmlldyhVSURyYWdJdGVtICppdGVtLCBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpCit7
CisgICAgbV9kZWZhdWx0RHJvcFByZXZpZXdzLmFwcGVuZCh7IGl0ZW0sIHByZXZpZXcgfSk7Cit9
CisKK1VJVGFyZ2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkZWZh
dWx0RHJvcFByZXZpZXcoVUlEcmFnSXRlbSAqaXRlbSkgY29uc3QKK3sKKyAgICBhdXRvIG1hdGNo
SW5kZXggPSBtX2RlZmF1bHREcm9wUHJldmlld3MuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgaXRl
bUFuZFByZXZpZXcpIHsKKyAgICAgICAgcmV0dXJuIGl0ZW1BbmRQcmV2aWV3Lml0ZW0gPT0gaXRl
bTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWF0Y2hJbmRleCA9PSBub3RGb3VuZCA/IG5pbCA6IG1f
ZGVmYXVsdERyb3BQcmV2aWV3c1ttYXRjaEluZGV4XS5wcmV2aWV3LmdldCgpOworfQorCitCbG9j
a1B0cjx2b2lkKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKT4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjpkcm9wUHJldmlld1Byb3ZpZGVyKFVJRHJhZ0l0ZW0gKml0ZW0pCit7CisgICAgYXV0byBt
YXRjaEluZGV4ID0gbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuZmluZE1hdGNoaW5nKFsm
XSAoYXV0byYgaXRlbUFuZFByb3ZpZGVyKSB7CisgICAgICAgIHJldHVybiBpdGVtQW5kUHJvdmlk
ZXIuaXRlbSA9PSBpdGVtOworICAgIH0pOworCisgICAgaWYgKG1hdGNoSW5kZXggPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gbV9kZWxheWVkSXRlbVByZXZp
ZXdQcm92aWRlcnNbbWF0Y2hJbmRleF0ucHJvdmlkZXI7Cit9CisKIHZvaWQgRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKml0
ZW0sIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpKQogewog
ICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmFwcGVuZCh7IGl0ZW0sIHByb3ZpZGVy
IH0pOwpAQCAtMjAyLDYgKzIyOCw2MSBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSQogICAgIG1f
ZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KFVJVmlldyAqY29udGVu
dFZpZXcsIENHUmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QsIE5TQXJyYXk8VUlEcmFnSXRlbSAq
PiAqaXRlbXMsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGxhY2Vob2xkZXJSZWN0cykKK3sKKyAg
ICBpZiAoaXRlbXMuY291bnQgIT0gcGxhY2Vob2xkZXJSZWN0cy5zaXplKCkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhv
bGRlcnM6IG51bWJlciBvZiBkcmFnIGl0ZW1zICgldHUpIGRvZXMgbm90IG1hdGNoIG51bWJlciBv
ZiBwbGFjZWhvbGRlcnMgKCV0dSkiLCBpdGVtcy5jb3VudCwgcGxhY2Vob2xkZXJSZWN0cy5zaXpl
KCkpOworICAgICAgICBjbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbGFjZWhv
bGRlclJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFVJRHJhZ0l0ZW0gKml0ZW0gPSBbaXRl
bXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgYXV0byYgcGxhY2Vob2xkZXJSZWN0ID0gcGxh
Y2Vob2xkZXJSZWN0c1tpXTsKKyAgICAgICAgYXV0byBwcm92aWRlciA9IGRyb3BQcmV2aWV3UHJv
dmlkZXIoaXRlbSk7CisgICAgICAgIGlmICghcHJvdmlkZXIpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIGRlZmF1bHRQcmV2aWV3ID0gZGVmYXVsdERyb3BQcmV2aWV3KGl0
ZW0pOworICAgICAgICBhdXRvIGRlZmF1bHRQcmV2aWV3U2l6ZSA9IFtkZWZhdWx0UHJldmlldyBz
aXplXTsKKyAgICAgICAgaWYgKCFkZWZhdWx0UHJldmlldyB8fCBkZWZhdWx0UHJldmlld1NpemUu
d2lkdGggPD0gMCB8fCBkZWZhdWx0UHJldmlld1NpemUuaGVpZ2h0IDw9IDAgfHwgcGxhY2Vob2xk
ZXJSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcHJvdmlkZXIobmlsKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgRmxvYXRSZWN0IHByZXZpZXdJbnRl
cnNlY3Rpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChDR1JlY3RJbnRlcnNlY3Rpb24odW5vYnNj
dXJlZENvbnRlbnRSZWN0LCBwbGFjZWhvbGRlclJlY3QpKTsKKyAgICAgICAgaWYgKHByZXZpZXdJ
bnRlcnNlY3Rpb25SZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIHByZXZp
ZXcgcmVjdCBpcyBjb21wbGV0ZWx5IG9mZnNjcmVlbiwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBj
bGlwIG91dCBvciBzY2FsZSB0aGUgZGVmYXVsdCBwcmV2aWV3OworICAgICAgICAgICAgLy8gc2lt
cGx5IHJldGFyZ2V0IHRoZSBkZWZhdWx0IHByZXZpZXcuCisgICAgICAgICAgICBhdXRvIHRhcmdl
dCA9IGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3VGFyZ2V0IGFsbG9jXSBpbml0V2l0aENvbnRhaW5l
cjpjb250ZW50VmlldyBjZW50ZXI6cGxhY2Vob2xkZXJSZWN0LmNlbnRlcigpXSk7CisgICAgICAg
ICAgICBwcm92aWRlcihbZGVmYXVsdFByZXZpZXcgcmV0YXJnZXRlZFByZXZpZXdXaXRoVGFyZ2V0
OnRhcmdldC5nZXQoKV0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUYXJnZXRlZCBwcmV2aWV3cyBkb24ndCBjbGlwIHRvIHRoZSBib3VuZHMgb2YgYW55
IGVuY2xvc2luZyB2aWV3OyB0aGlzIG1lYW5zIHRoYXQgd2hlbiB0YXJnZXRpbmcgcHJldmlld3Mg
b3V0c2lkZQorICAgICAgICAvLyB0aGUgdmlzaWJsZSBib3VuZHMgb2YgdGhlIGNvbnRlbnQgdmll
dywgdGhlIHByZXZpZXcgd2lsbCBzcGlsbCBvdXQgdGhlIHdlYiB2aWV3LiBUaGlzIGlzIG1vc3Qg
bm90aWNlYWJsZSB3aGVuCisgICAgICAgIC8vIGRyb3BwaW5nIGEgdGFsbCBpbWFnZSBpbnRvIE1h
aWwgY29tcG9zZSBvbiBpT1MgMTMsIHdoZXJlIHRoZSBib3R0b20gb2YgdGhlIGNvbXBvc2Ugd2lu
ZG93IGlzIG5vdCBmbHVzaCBhZ2FpbnN0CisgICAgICAgIC8vIHRoZSBib3R0b20gb2YgdGhlIHdp
bmRvdy4gVG8gbWl0aWdhdGUgdGhpcywgd2UgdXNlIHRoZSBwcmV2aWV3IHRhcmdldCdzIGB2aXNp
YmxlUGF0aGAgcHJvcGVydHkgdG8gY2xpcCB0aGUgZGVmYXVsdAorICAgICAgICAvLyBkcm9wIHBy
ZXZpZXcncyB2aWV3LCBieSB0aGUgc2FtZSBwcm9wb3J0aW9uIHRoYXQgdGhlIGZpbmFsIHBsYWNl
aG9sZGVyIGltYWdlIGlzIGNsaXBwZWQgKHdpdGggcmVzcGVjdCB0byB0aGUKKyAgICAgICAgLy8g
dW5vYnNjdXJlZCBjb250ZW50IHJlY3QpLgorICAgICAgICBhdXRvIHByZXZpZXdCb3VuZHMgPSBb
ZGVmYXVsdFByZXZpZXcgdmlld10uYm91bmRzOworICAgICAgICBhdXRvIGluc2V0UHJldmlld0Jv
dW5kcyA9IFVJRWRnZUluc2V0c0luc2V0UmVjdChwcmV2aWV3Qm91bmRzLCB7CisgICAgICAgICAg
ICAocHJldmlld0ludGVyc2VjdGlvblJlY3QueSgpIC0gcGxhY2Vob2xkZXJSZWN0LnkoKSkgLyBw
bGFjZWhvbGRlclJlY3QuaGVpZ2h0KCkgKiBwcmV2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LAorICAg
ICAgICAgICAgKHByZXZpZXdJbnRlcnNlY3Rpb25SZWN0LngoKSAtIHBsYWNlaG9sZGVyUmVjdC54
KCkpIC8gcGxhY2Vob2xkZXJSZWN0LndpZHRoKCkgKiBwcmV2aWV3Qm91bmRzLnNpemUud2lkdGgs
CisgICAgICAgICAgICAocGxhY2Vob2xkZXJSZWN0Lm1heFkoKSAtIHByZXZpZXdJbnRlcnNlY3Rp
b25SZWN0Lm1heFkoKSkgLyBwbGFjZWhvbGRlclJlY3QuaGVpZ2h0KCkgKiBwcmV2aWV3Qm91bmRz
LnNpemUuaGVpZ2h0LAorICAgICAgICAgICAgKHBsYWNlaG9sZGVyUmVjdC5tYXhYKCkgLSBwcmV2
aWV3SW50ZXJzZWN0aW9uUmVjdC5tYXhYKCkpIC8gcGxhY2Vob2xkZXJSZWN0LndpZHRoKCkgKiBw
cmV2aWV3Qm91bmRzLnNpemUud2lkdGgKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byB0cmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShwbGFjZWhvbGRlclJlY3Qud2lkdGgo
KSAvIGRlZmF1bHRQcmV2aWV3U2l6ZS53aWR0aCwgcGxhY2Vob2xkZXJSZWN0LmhlaWdodCgpIC8g
ZGVmYXVsdFByZXZpZXdTaXplLmhlaWdodCk7CisgICAgICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHRO
UyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOmNvbnRlbnRW
aWV3IGNlbnRlcjpwcmV2aWV3SW50ZXJzZWN0aW9uUmVjdC5jZW50ZXIoKSB0cmFuc2Zvcm06dHJh
bnNmb3JtXSk7CisgICAgICAgIFtkZWZhdWx0UHJldmlldyBwYXJhbWV0ZXJzXS52aXNpYmxlUGF0
aCA9IFtVSUJlemllclBhdGggYmV6aWVyUGF0aFdpdGhSZWN0Omluc2V0UHJldmlld0JvdW5kc107
CisgICAgICAgIGF1dG8gbmV3UHJldmlldyA9IGFkb3B0TlMoW1tVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgYWxsb2NdIGluaXRXaXRoVmlldzpbZGVmYXVsdFByZXZpZXcgdmlld10gcGFyYW1ldGVyczpb
ZGVmYXVsdFByZXZpZXcgcGFyYW1ldGVyc10gdGFyZ2V0OnRhcmdldC5nZXQoKV0pOworICAgICAg
ICBwcm92aWRlcihuZXdQcmV2aWV3LmdldCgpKTsKKyAgICB9CisKKyAgICBtX2RlbGF5ZWRJdGVt
UHJldmlld1Byb3ZpZGVycy5jbGVhcigpOworfQorCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZTo6Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKQogewogICAgIGZvciAo
YXV0byYgaXRlbUFuZFByZXZpZXdQcm92aWRlciA6IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlk
ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCmluZGV4IDk0NjYxODY5MWI0Y2RkOWY4ZTc1NmFjOGI3Mzk4OWQ3MWEz
YWQ4ZTMuLmYwMzE4YWYxMzkzOTM1NDYzMGRkOGZlOTBjYmRkMGNkMjI4YmUzZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKQEAgLTM1Myw2ICszNTMsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewog
CiAgICAgQk9PTCBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKICAgICBC
T09MIF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdDsKKyAgICBOU0ludGVnZXIgX2Ryb3BBbmlt
YXRpb25Db3VudDsKIAogICAgIEJPT0wgX2hhc1NldFVwSW50ZXJhY3Rpb25zOwogICAgIE5TVUlu
dGVnZXIgX2lnbm9yZVNlbGVjdGlvbkNvbW1hbmRGYWRlQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCBkNGU4ZGQ4NmMzMjNlN2JkZjJlNDVmNDg3MzMwMDkzZjA3NGEwZDQwLi5mNmQ5OTk3ODcyOGU5
NmU4YjZkMmZmZjkxZjdhNTU4OTcyZGU1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTkzLDYgKzkz
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tl
eUV2ZW50Q29kZXNJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGF0aC5oPgpAQCAtMTAyLDYgKzEwMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Nj
cm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZURhdGEuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJF
dmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0aW9uLmg+CkBAIC02NzA1LDYg
KzY3MDcsOSBAQCAtICh2b2lkKV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZToo
T3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdAogICAgIGlmICghdW5zZWxlY3RlZFNu
YXBzaG90SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghX2Ryb3BBbmltYXRpb25D
b3VudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgX3Vuc2VsZWN0ZWRD
b250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1h
Z2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAgW191bnNl
bGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKQEAgLTY5NzEsNiArNjk3Niw3MiBA
QCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4
dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAjZW5kaWYKIAorc3RhdGljIFZlY3RvcjxXZWJD
b3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3Bw
aW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykKK3sKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CisgICAgZm9yIChOU0l0ZW1Qcm92aWRl
ciAqaXRlbSBpbiBpdGVtUHJvdmlkZXJzKSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKFdlYkNvcmU6Ok1JTUVUeXBlRnJv
bVVUSShpdGVtLndlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzLmZpcnN0T2JqZWN0KSkpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIFdlYkNvcmU6OkludFNpemUgcHJlc2VudGF0
aW9uU2l6ZShpdGVtLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpOworICAgICAgICBpZiAocHJl
c2VudGF0aW9uU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIHNpemVzLmFwcGVuZChXVEZNb3ZlKHByZXNlbnRhdGlvblNpemUpKTsKKyAgICB9CisgICAg
cmV0dXJuIHNpemVzOworfQorCistIChCT09MKV9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBs
YWNlaG9sZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMgc2Vz
c2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24KK3sKKyAgICBpZiAoIV93ZWJWaWV3Ll9l
ZGl0YWJsZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKF9kcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKHNl
c3Npb24uaXRlbXMuY291bnQgIT0gaXRlbVByb3ZpZGVycy5jb3VudCkKKyAgICAgICAgcmV0dXJu
IE5POworCisgICAgYXV0byBpbWFnZVBsYWNlaG9sZGVyU2l6ZXMgPSBzaXplc09mUGxhY2Vob2xk
ZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoaXRlbVByb3ZpZGVycyk7CisgICAg
aWYgKGltYWdlUGxhY2Vob2xkZXJTaXplcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBOTzsK
KworICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiSW5zZXJ0aW5nIGRyb3BwZWQgaW1hZ2Ug
cGxhY2Vob2xkZXJzIGZvciBzZXNzaW9uOiAlcCIsIHNlc3Npb24pOworCisgICAgX3BhZ2UtPmlu
c2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhpbWFnZVBsYWNlaG9sZGVyU2l6ZXMsIFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBkcmFnSXRlbXMgPSByZXRhaW5QdHIoc2Vzc2lv
bi5pdGVtcyldIChhdXRvJiBwbGFjZWhvbGRlclJlY3RzLCBhdXRvIGRhdGEpIHsKKyAgICAgICAg
YXV0byYgc3RhdGUgPSBwcm90ZWN0ZWRTZWxmLT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOwor
ICAgICAgICBpZiAoIWRhdGEgfHwgIXByb3RlY3RlZFNlbGYtPl9kcm9wQW5pbWF0aW9uQ291bnQp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFuaW1h
dGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBtaXNzaW5nIHRleHQgaW5kaWNhdG9yIGRhdGEuIik7Cisg
ICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBzbmFwc2hvdFdp
dGhvdXRTZWxlY3Rpb24gPSBkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uOworICAg
ICAgICBpZiAoIXNuYXBzaG90V2l0aG91dFNlbGVjdGlvbikgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6
IG1pc3NpbmcgdW5zZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOworICAgICAgICAgICAgc3RhdGUu
Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBz
bmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7CisgICAgICAgIGlmICghdW5z
ZWxlY3RlZFNuYXBzaG90SW1hZ2UpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmRE
cm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBjb3VsZCBub3QgZGVj
b2RlIHVuc2VsZWN0ZWQgY29udGVudCBpbWFnZS4iKTsKKyAgICAgICAgICAgIHN0YXRlLmNsZWFy
QWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJh
ZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNu
YXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0
byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1h
Z2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CisgICAgICAgIFtz
bmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOworICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2
aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07CisgICAgICAgIHByb3RlY3RlZFNlbGYtPl91bnNlbGVj
dGVkQ29udGVudFNuYXBzaG90ID0gV1RGTW92ZShzbmFwc2hvdFZpZXcpOworICAgICAgICBzdGF0
ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KHByb3RlY3RlZFNlbGYuZ2V0KCksIFtwcm90ZWN0
ZWRTZWxmIHVub2JzY3VyZWRDb250ZW50UmVjdF0sIGRyYWdJdGVtcy5nZXQoKSwgcGxhY2Vob2xk
ZXJSZWN0cyk7CisgICAgfSk7CisKKyAgICByZXR1cm4gWUVTOworfQorCiAjcHJhZ21hIG1hcmsg
LSBVSURyYWdJbnRlcmFjdGlvbkRlbGVnYXRlCiAKIC0gKEJPT0wpX2RyYWdJbnRlcmFjdGlvbjoo
VUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzaG91bGREZWxheUNvbXBldGluZ0dlc3R1
cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopY29tcGV0aW5nR2VzdHVyZVJlY29n
bml6ZXIKQEAgLTcyNTEsNiArNzMyMiw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURy
b3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHBlcmZvcm1Ecm9wOihpZCA8VUlEcm9wCiAgICAg
W1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXSBzZXRJdGVtUHJvdmlk
ZXJzOml0ZW1Qcm92aWRlcnNdOwogICAgIFtbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFy
ZWRJbnN0YW5jZV0gaW5jcmVtZW50UGVuZGluZ09wZXJhdGlvbkNvdW50XTsKICAgICBhdXRvIGRy
YWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIGRyYWdEZXN0aW5h
dGlvbkFjdGlvbjpXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueV07CisgICAgQk9PTCBzaG91bGRT
bmFwc2hvdFZpZXcgPSAhW3NlbGYgX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xk
ZXJzOml0ZW1Qcm92aWRlcnMgc2Vzc2lvbjpzZXNzaW9uXTsKIAogICAgIFJFTEVBU0VfTE9HKERy
YWdBbmREcm9wLCAiTG9hZGluZyBkYXRhIGZyb20gJXR1IGl0ZW0gcHJvdmlkZXJzIGZvciBzZXNz
aW9uOiAlcCIsIGl0ZW1Qcm92aWRlcnMuY291bnQsIHNlc3Npb24pOwogICAgIC8vIEFsd2F5cyBs
b2FkaW5nIGNvbnRlbnQgZnJvbSB0aGUgaXRlbSBwcm92aWRlciBlbnN1cmVzIHRoYXQgdGhlIHdl
YiBwcm9jZXNzIHdpbGwgYmUgYWxsb3dlZCB0byBjYWxsIGJhY2sgaW4gdG8gdGhlIFVJCkBAIC03
MjU4LDcgKzczMzAsNyBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJvcAogICAgIC8vIG9yIHRoZSBw
YWdlIHByZXZlbnRlZCBkZWZhdWx0IG9uIGBkcmFnb3ZlcmAsIGJ1dCB3aXRob3V0IHRoaXMsIGRy
b3BwaW5nIGludG8gYSBub3JtYWwgZWRpdGFibGUgYXJlYXMgd2lsbCBmYWlsIGR1ZSB0bwogICAg
IC8vIGl0ZW0gcHJvdmlkZXJzIG5vdCBsb2FkaW5nIGFueSBkYXRhLgogICAgIFJldGFpblB0cjxX
S0NvbnRlbnRWaWV3PiByZXRhaW5lZFNlbGYoc2VsZik7Ci0gICAgW1tXZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXSBkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudElu
dG9GaWxlVVJMczpbcmV0YWluZWRTZWxmLCBjYXB0dXJlZERyYWdEYXRhID0gV1RGTW92ZShkcmFn
RGF0YSldIChOU0FycmF5ICpmaWxlVVJMcykgbXV0YWJsZSB7CisgICAgW1tXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXSBkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVu
dEludG9GaWxlVVJMczpbcmV0YWluZWRTZWxmLCBjYXB0dXJlZERyYWdEYXRhID0gV1RGTW92ZShk
cmFnRGF0YSksIHNob3VsZFNuYXBzaG90Vmlld10gKE5TQXJyYXkgKmZpbGVVUkxzKSBtdXRhYmxl
IHsKICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJMb2FkZWQgZGF0YSBpbnRvICV0
dSBmaWxlcyIsIGZpbGVVUkxzLmNvdW50KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5h
bWVzOwogICAgICAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIGZpbGVVUkxzKQpAQCAtNzI2OSwx
OCArNzM0MSwyMCBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24g
KilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJvcAogICAgICAgICBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CiAg
ICAgICAgIHJldGFpbmVkU2VsZi0+X3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVk
ZWQoZmlsZW5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9y
VXBsb2FkKTsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRp
b24oY2FwdHVyZWREcmFnRGF0YSwgImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIsIFdURk1v
dmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkZvclVw
bG9hZCkpOwotICAgICAgICByZXRhaW5lZFNlbGYtPl92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hv
dCA9IFtyZXRhaW5lZFNlbGYgc25hcHNob3RWaWV3QWZ0ZXJTY3JlZW5VcGRhdGVzOk5PXTsKLSAg
ICAgICAgW1VJVmlldyBwZXJmb3JtV2l0aG91dEFuaW1hdGlvbjpbcmV0YWluZWRTZWxmXSB7Cisg
ICAgICAgIGlmIChzaG91bGRTbmFwc2hvdFZpZXcpIHsKKyAgICAgICAgICAgIHJldGFpbmVkU2Vs
Zi0+X3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90ID0gW3JldGFpbmVkU2VsZiBzbmFwc2hvdFZp
ZXdBZnRlclNjcmVlblVwZGF0ZXM6Tk9dOwogICAgICAgICAgICAgW3JldGFpbmVkU2VsZi0+X3Zp
c2libGVDb250ZW50Vmlld1NuYXBzaG90IHNldEZyYW1lOltyZXRhaW5lZFNlbGYgYm91bmRzXV07
CiAgICAgICAgICAgICBbcmV0YWluZWRTZWxmIGFkZFN1YnZpZXc6cmV0YWluZWRTZWxmLT5fdmlz
aWJsZUNvbnRlbnRWaWV3U25hcHNob3QuZ2V0KCldOwotICAgICAgICB9XTsKKyAgICAgICAgfQog
ICAgIH1dOwogfQogCiAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24g
KilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJdGVtICopaXRlbSB3aWxsQW5pbWF0ZURyb3BXaXRo
QW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yCiB7CisgICAgX2Ryb3BBbmlt
YXRpb25Db3VudCsrOwogICAgIFthbmltYXRvciBhZGRDb21wbGV0aW9uOltzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpXSAoVUlWaWV3QW5pbWF0aW5nUG9zaXRpb24pIHsKLSAgICAgICAgW3N0
ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkg
cmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIGlmICghLS1zdHJvbmdTZWxmLT5fZHJvcEFu
aW1hdGlvbkNvdW50KQorICAgICAgICAgICAgW3N0ZDo6ZXhjaGFuZ2Uoc3Ryb25nU2VsZi0+X3Vu
c2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
fV07CiB9CiAKQEAgLTcyOTQsNiArNzM2OCw4IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihV
SURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmNsdWRlRHJvcDooaWQgPFVJRHJvCiAK
IC0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJh
Y3Rpb24gKilpbnRlcmFjdGlvbiBwcmV2aWV3Rm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVtICop
aXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVsdFByZXZpZXcK
IHsKKyAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnNldERlZmF1bHREcm9wUHJldmlldyhp
dGVtLCBkZWZhdWx0UHJldmlldyk7CisKICAgICBDR1JlY3QgY2FyZXRSZWN0ID0gX3BhZ2UtPmN1
cnJlbnREcmFnQ2FyZXRSZWN0KCk7CiAgICAgaWYgKENHUmVjdElzRW1wdHkoY2FyZXRSZWN0KSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2NjZGI4ZTlmMzAwZGMwYmVmYzZjMTU4
NDkyMDQuLmMyMWU0OTZmMGQ1MGM4ZGIwN2JlMTRhNTI3MDlmMGQ2YzE3ZjIxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTIxNSw2
ICsxMjE1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9y
RHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvCiAgICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCisgICAgICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
cyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
KyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0KTsK
K30KKwogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCiB7
CiAgICAgcGFnZUNsaWVudCgpLndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGRmMWM4MjU5YzhkZGZi
ZGExMWFhMDU4ZWQ1Y2FlMTdhYTJkMTI1ODYuLmU2M2ZiZmZkN2I5Mzg0ZjE2YWQ0ZTVhMWZkYjNl
OGRiNTU1MzFhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTEyODksNiArMTI4OSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7CiAgICAg
dm9pZCByZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIGluc2VydERyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgY29t
cHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWI5
ZTFlMDdlYjdkOGI3MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uZWU2NmIzZDIzNjk5NTk5MTg3
ZmY5YzdlNDdiZjRlYzA1NDgyYTk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTAsNiArMzEwLDcgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIFJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBh
bGxvd2VkQWN0aW9ucykKICAgICBSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24o
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKKyAgICBJbnNlcnREcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikgQXN5bmMKICAgICBEaWRDb25jbHVk
ZURyb3AoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzhlMWI5NTU3NTczZDYxZjdmM2MxYjJkYWUwMDA1
NjA2ODgwMDk0YS4uODNiZTFjNzhmNzIxM2M0MDNjNTBkYTM3NTdhZTFkZGRlY2ExMjk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTg5NCw2ICs4OTQsNDAgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0
ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1
ZXN0KGRpZEhhbmRsZURyYWcpKTsKIH0KIAordm9pZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpCit7CisgICAgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoaW1hZ2VTaXplcyk7
CisgICAgYXV0byBwbGFjZWhvbGRlclJlY3RzID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycygpLm1hcChbJl0gKGF1dG8mIGVsZW1lbnQpIHsKKyAgICAg
ICAgcmV0dXJuIHJvb3RWaWV3Qm91bmRzRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICB9KTsKKwor
ICAgIGF1dG8gaW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UoKTsKKyAgICBpZiAocGxhY2Vob2xkZXJSZWN0
cy5zaXplKCkgIT0gaW1hZ2VTaXplcy5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0IGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzOiBw
bGFjZWhvbGRlciByZWN0IGNvdW50ICgldHUpIGRvZXMgbm90IG1hdGNoIGltYWdlIHNpemUgY291
bnQgKCV0dSkuIiwgcGxhY2Vob2xkZXJSZWN0cy5zaXplKCksIGltYWdlU2l6ZXMuc2l6ZSgpKTsK
KyAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFpbWFnZVBsYWNlaG9sZGVyUmFuZ2UpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0IGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xk
ZXJzOiBubyBpbWFnZSBwbGFjZWhvbGRlciByYW5nZS4iKTsKKyAgICAgICAgcmVwbHkoeyB9LCBX
VEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8VGV4
dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRhOworICAgIE9wdGlvblNldDxUZXh0SW5k
aWNhdG9yT3B0aW9uPiB0ZXh0SW5kaWNhdG9yT3B0aW9ucyA9IHsKKyAgICAgICAgVGV4dEluZGlj
YXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0
aW9uLAorICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uRXhwYW5kQ2xpcEJleW9uZFZpc2libGVS
ZWN0LAorICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRBbGxDb250ZW50LAorICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlU2VsZWN0aW9uUmVjdEZvclNpemluZworICAgIH07CisK
KyAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJh
bmdlKCppbWFnZVBsYWNlaG9sZGVyUmFuZ2UsIHRleHRJbmRpY2F0b3JPcHRpb25zLnRvUmF3KCks
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCB7IH0pKQorICAgICAg
ICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKKworICAgIHJlcGx5
KFdURk1vdmUocGxhY2Vob2xkZXJSZWN0cyksIFdURk1vdmUodGV4dEluZGljYXRvckRhdGEpKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpkaWRDb25jbHVkZURyb3AoKQogewogICAgIG1fcmFuZ2VGb3JE
cm9wU25hcHNob3QgPSBudWxscHRyOwpAQCAtOTIzLDYgKzk1Nyw5IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiAKIHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0lt
YWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogeworICAg
IGlmIChlbGVtZW50LmlzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKSkKKyAgICAgICAgbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoZWxlbWVu
dCk7CisKICAgICBpZiAobV9wZW5kaW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVhZjFmOGFhNzc1YzQwZjZjOGRhYTYyMzJmNjJiMzQxOTNj
YTljYjYuLjViNzNhM2E5NmMwYjdjYmRmMGVhYTEzMWFhZDdhZWNiZmRhN2ZkZjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBA
QAorMjAxOS0wOS0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXSBEcm9wIGFuaW1hdGlvbiB3aGVuIGRyYWdnaW5nIGltYWdlcyBmcm9tIFBo
b3RvcyB0byBXZWJLaXQyIE1haWwgY29tcG9zZSBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTEyNTA5NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgY291cGxlIG9mIG5ldyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhl
IG5ldyBpbWFnZSBwbGFjZWhvbGRlciBkcm9wIGNvZGVwYXRoLCBpbiBhZGRpdGlvbiB0byB0ZXN0
aW5nCisgICAgICAgIGluZnJhc3RydWN0dXJlIHRvIHNpbXVsYXRlIHRoZSB0aW1pbmcgb2YgZHJv
cCBhbmltYXRpb24gZGVsZWdhdGUgY2FsbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAo
LVtOU0FycmF5IF9hdHRhY2htZW50V2l0aE5hbWU6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgYWxsQm91bmRpbmdDbGllbnRSZWN0czpdKToKKworICAgICAgICBBZGQgc29tZSBuZXcgQVBJ
IHRlc3RpbmcgaGVscGVyIG1ldGhvZHMuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRhcmdl
dGVkSW1hZ2VEcmFnUHJldmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwor
ICAgICAgICBBZGQgdHdvIG5ldyB0ZXN0cywgdG86CisgICAgICAgICgxKSB2ZXJpZnkgdGhhdCBp
bWFnZXMgYXJlIGRyb3BwZWQgYXMgYXR0YWNobWVudC1iYWNrZWQgcGxhY2Vob2xkZXIgaW1hZ2Ug
ZWxlbWVudHMgd2hlbiB0aGUgd2ViIHZpZXcgaXMgZWRpdGFibGUKKyAgICAgICAgICAgIGFuZCBl
bmFibGVzIGF0dGFjaG1lbnQgZWxlbWVudHMsIGFuZAorICAgICAgICAoMikgdmVyaWZ5IHRoYXQg
d2hlbiBkcm9wcGluZyBhbiBpbWFnZSB0YWxsZXIgdGhhbiB0aGUgd2ViIHZpZXcsIHRoZSBib3R0
b20gcG9ydGlvbiBvZiB0aGUgZHJvcCBwcmV2aWV3IGlzCisgICAgICAgICAgICBjbGlwcGVkIHVz
aW5nIHRoZSB0YXJnZXRlZCBwcmV2aWV3IHBhcmFtZXRlcidzIHZpc2libGVQYXRoLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbToKKyAg
ICAgICAgKC1bTlNJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBl
SWRlbnRpZmllcjp3aXRoRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9OU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL05TSXRlbVByb3ZpZGVyQWRkaXRpb25zLm1tOiBBZGRlZC4KKworICAgICAg
ICBNb3ZlIHNvbWUgY29tbW9uIGhlbHBlcnMgZm9yIHJlZ2lzdGVyaW5nIGRhdGEgb24gYSBOU0l0
ZW1Qcm92aWRlciB0byBhIHNlcGFyYXRlIGZpbGUsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4K
KyAgICAgICAgYm90aCBXS0F0dGFjaG1lbnRUZXN0cyBhbmQgRHJhZ0FuZERyb3BUZXN0cy4KKwor
ICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5
cGVJZGVudGlmaWVyOndpdGhEYXRhOl0pOgorICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdp
c3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOndpdGhEYXRhOmxvYWRpbmdE
ZWxheTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRv
cklPUy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3
Ol0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfY29uY2x1ZGVEcm9wQW5kUGVy
Zm9ybU9wZXJhdGlvbklmTmVjZXNzYXJ5XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGNsZWFyRXh0ZXJuYWxEcmFnSW5mb3JtYXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOmRlZmF1bHREcm9wUHJldmlld3M6
XSk6CisKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCB0byBhbGxvdyB0ZXN0cyB0byBzcGVjaWZ5
IGJvdGggYSBsaXN0IG9mIGV4dGVybmFsbHkgZHJhZ2dlZCBpdGVtIHByb3ZpZGVycywgYXMgd2Vs
bCBhcyBkZWZhdWx0CisgICAgICAgIHRhcmdldGVkIHByZXZpZXdzIGZvciBlYWNoIG9mIHRoZSBj
b3JyZXNwb25kaW5nIGl0ZW1zLiBUaGVzZSBkZWZhdWx0IHByZXZpZXdzIGFyZSB1c2VkIHdoZW4g
aW52b2tpbmcgdGhlIGRyb3AKKyAgICAgICAgaW50ZXJhY3Rpb24gZGVsZWdhdGUncyBwcmV2aWV3
IGdlbmVyYXRpb24gbWV0aG9kcy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBh
ZGRBbmltYXRpb25zOl0pOgorCisgICAgICAgIE5vdCBpbXBsZW1lbnRlZCB5ZXQ7IGZvciBub3cs
IHRoaXMgc2ltcGx5IGFzc2VydHMuCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Ig
YWRkQ29tcGxldGlvbjpdKToKKworICAgICAgICBRdWV1ZXMgYSBjb21wbGV0aW9uIGhhbmRsZXIs
IHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgZHJvcCBhbmltYXRpb24gZm9yIGVhY2ggaXRlbSBj
b21wbGV0ZXMuIERlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2YgRHJhZ0FuZERyb3BT
aW11bGF0b3IncyAtZHJvcEFuaW1hdGlvblRpbWluZywgdGhpcyBtYXkgb2NjdXIgZWl0aGVyIGJl
Zm9yZSBvciBhZnRlciBoYW5kbGluZyB0aGUgZHJvcC4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhl
c2Ugd2lsbCBiZSBpbnZva2VkIGFmdGVyIHRoZSBkcm9wIGNvbXBsZXRlcywgd2hpY2ggcmVwcmVz
ZW50cyB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgZGF0YSBjYW4gYmUKKyAgICAgICAgbG9hZGVkIHF1
aWNrbHkgcmVsYXRpdmUgdG8gdGhlIGRyb3AgYW5pbWF0aW9uLgorCisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIF9pbnZva2VEcm9wQW5pbWF0aW9uQ29tcGxldGlvbkJsb2Nrc0FuZENv
bmNsdWRlRHJvcF0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfd2ViVmlldzpk
YXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmZvclNlc3Npb246aXRlbVByb3ZpZGVy
czpdKToKKwogMjAxOS0wOS0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbmNvcnJlY3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFz
dGluZyBpbWFnZXMgaW4gYSBjb250ZW50ZWRpdGFibGUgZWxlbWVudApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmYjExZGRlNTI1YjJlYmI0NjQ4MTliNjAzNmJiMTQ1YzVhMzQyOTg0Li4wY2Q1
N2IzZWZlMjMyZDI0ODgxZTg4Mjc3YTE2YzI1MjIwN2IxOGI3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTAyMyw2ICsxMDIzLDcgQEAKIAkJRjRFMEEyQjQyMTIyNDAyQjAwQUY3QzdGIC8q
IGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTBBMkIzMjEyMjNGMkQwMEFGN0M3RiAvKiBpbWFn
ZS1hbmQtZmlsZS11cGxvYWQuaHRtbCAqLzsgfTsKIAkJRjRFMEEyQjgyMTIyODQ3NDAwQUY3QzdG
IC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMEEyQjcyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxl
UHJvbWlzZVJlY2VpdmVyLm1tICovOyB9OwogCQlGNEUzRDgwODIwRjcwQkI5MDA3QjU4QzUgLyog
c2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUtYXJ0aWNsZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTNEODA3MjBGNzA4RTQwMDdC
NThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi87IH07CisJ
CUY0RUI0RTkxMjMyOEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUI0RTkwMjMy
OEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5tbSAqLzsgfTsKIAkJRjRG
MTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5o
dG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKIAkJRjRGNDA1
QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgKi87IH07CkBAIC0yNTEwLDYgKzI1MTEsOCBAQAogCQlGNEUwQTJCNjIx
MjI4NDc0MDBBRjdDN0YgLyogVGVzdEZpbGVQcm9taXNlUmVjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGVzdEZpbGVQcm9taXNlUmVjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjRFMEEyQjcyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdEZpbGVQcm9taXNlUmVjZWl2ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTNEODA3MjBGNzA4RTQwMDdCNThDNSAvKiBzaWdu
aWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAic2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUtYXJ0aWNsZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRFQjRFOEYyMzI4QUMzMDAwNTc0REFCIC8qIE5TSXRl
bVByb3ZpZGVyQWRkaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5TSXRlbVByb3ZpZGVyQWRkaXRp
b25zLmg7IHBhdGggPSBjb2NvYS9OU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CisJCUY0RUI0RTkwMjMyOEFDMzAwMDU3NERBQiAvKiBOU0l0ZW1Q
cm92aWRlckFkZGl0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5TSXRlbVByb3ZpZGVy
QWRkaXRpb25zLm1tOyBwYXRoID0gY29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW07IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRjRGMTM3OTExRDlCNjgzMjAwMkJFQzU3IC8q
IGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8qIHNraW5u
eS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODEyLDYgKzI4MTUsOCBAQAogCQkJCUNEMkQwRDE5
MjEzNDY1NTYwMDE4Qzc4NCAvKiBOb3dQbGF5aW5nLm1tICovLAogCQkJCTJFQ0ZGNTU0MUQ5QjEy
RjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSAqLywKIAkJCQlBMTBGMDQ3
QzFFM0FEMjlDMDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKKwkJCQlGNEVC
NEU4RjIzMjhBQzMwMDA1NzREQUIgLyogTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCAqLywKKwkJ
CQlGNEVCNEU5MDIzMjhBQzMwMDA1NzREQUIgLyogTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW0g
Ki8sCiAJCQkJMzdBMjJBQTUxRENBQTI3MjAwQUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHNBZnRlckNyYXNoLm1tICovLAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVB
NyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8sCiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzcz
MjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tICovLApAQCAtNDYwNSw2ICs0
NjEwLDcgQEAKIAkJCQkyRUNGRjU1NTFEOUIxMkY4MDBCNTUzOTQgLyogTm93UGxheWluZ0NvbnRy
b2xzVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBGMDQ3RTFFM0FEMjlDMDBDOTVFMTkg
LyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NDI4NTFEMjE0
MERGMjkwMENDREEyMiAvKiBOU0ZvbnRQYW5lbFRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlGNEVCNEU5MTIzMjhBQzMwMDA1NzREQUIgLyogTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzN0EyMkFBNzFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRS
ZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RDcwMDU5OTIxRURBNEQwMDAzNDYzQ0IgLyogT2Zmc2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggMjQyMmMxMzRhYmI3ZTMy
ZGY1MTAzNzUzYjQ1Yzg5YzQyOWRiMWU3Mi4uYjZmY2Q5MzU4NTBlYmQ2N2IyYjE4NjEwZTQ4ODkw
NjY1ZTMxOTJhYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkRyYWdBbmREcm9wU2lt
dWxhdG9yLmgiCisjaW1wb3J0ICJOU0l0ZW1Qcm92aWRlckFkZGl0aW9ucy5oIgogI2ltcG9ydCAi
UGVuY2lsS2l0VGVzdFNQSS5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKQEAgLTUzLDYgKzU0LDIxIEBAIFNPRlRfTElO
S19GUkFNRVdPUksoTWFwS2l0KQogU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtNYXBJdGVtKQog
U09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtQbGFjZW1hcmspCiAKK0BpbnRlcmZhY2UgTlNBcnJh
eSAoQXR0YWNobWVudFRlc3RpbmdIZWxwZXJzKQorLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2ht
ZW50V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE5T
QXJyYXkgKEF0dGFjaG1lbnRUZXN0aW5nSGVscGVycykKKy0gKF9XS0F0dGFjaG1lbnQgKilfYXR0
YWNobWVudFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBmb3IgKF9XS0F0dGFjaG1l
bnQgKmF0dGFjaG1lbnQgaW4gc2VsZikgeworICAgICAgICBpZiAoW2F0dGFjaG1lbnQuaW5mby5u
YW1lIGlzRXF1YWxUb1N0cmluZzpuYW1lXSkKKyAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50
OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorQGVuZAorCiAjZGVmaW5lIFVTRVNfTU9ERVJO
X0FUVFJJQlVURURfU1RSSU5HX0NPTlZFUlNJT04gKChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1B
QykpCiAKIEBpbnRlcmZhY2UgQXR0YWNobWVudFVwZGF0ZU9ic2VydmVyIDogTlNPYmplY3QgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+CkBAIC0yNzEsNiArMjg3LDI1IEBAIC0gKF9XS0F0dGFjaG1lbnQg
KilzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtCiAgICAgcmV0dXJuIGF0dGFjaG1lbnQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAoTlNB
cnJheTxOU1ZhbHVlICo+ICopYWxsQm91bmRpbmdDbGllbnRSZWN0czooTlNTdHJpbmcgKilxdWVy
eVNlbGVjdG9yCit7CisgICAgYXV0byByZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIGJvb2wgZG9uZUV2YWx1YXRpbmdTY3JpcHQgPSBmYWxzZTsKKyAg
ICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBcnJheS5m
cm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyVAJykpLm1hcChlID0+IHsgY29uc3QgciA9
IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IHJldHVybiBbci5sZWZ0LCByLnRvcCwgci53aWR0
aCwgci5oZWlnaHRdOyB9KSIsIHF1ZXJ5U2VsZWN0b3JdOworICAgIFtzZWxmIGV2YWx1YXRlSmF2
YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6W3JlY3RzLCAmZG9uZUV2YWx1YXRpbmdT
Y3JpcHRdIChOU0FycmF5PE5TQXJyYXk8TlNOdW1iZXIgKj4gKj4gKnJlc3VsdCwgTlNFcnJvciAq
KSB7CisgICAgICAgIGZvciAoTlNBcnJheTxOU051bWJlciAqPiAqcmVjdEluZm8gaW4gcmVzdWx0
KSB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgICAgIFtyZWN0cyBhZGRPYmpl
Y3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OkNHUmVjdE1ha2UocmVjdEluZm9bMF0uZmxvYXRW
YWx1ZSwgcmVjdEluZm9bMV0uZmxvYXRWYWx1ZSwgcmVjdEluZm9bMl0uZmxvYXRWYWx1ZSwgcmVj
dEluZm9bM10uZmxvYXRWYWx1ZSldXTsKKyNlbHNlCisgICAgICAgICAgICBbcmVjdHMgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdChyZWN0SW5mb1swXS5mbG9hdFZh
bHVlLCByZWN0SW5mb1sxXS5mbG9hdFZhbHVlLCByZWN0SW5mb1syXS5mbG9hdFZhbHVlLCByZWN0
SW5mb1szXS5mbG9hdFZhbHVlKV1dOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgZG9uZUV2
YWx1YXRpbmdTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUV2YWx1YXRpbmdTY3JpcHQpOworICAgIHJldHVybiByZWN0cy5hdXRvcmVsZWFz
ZSgpOworfQorCiAtIChDR1BvaW50KWF0dGFjaG1lbnRFbGVtZW50TWlkUG9pbnQKIHsKICAgICBf
X2Jsb2NrIENHUG9pbnQgbWlkUG9pbnQ7CkBAIC0xNjUwLDYgKzE2ODUsOTAgQEAgVEVTVChXS0F0
dGFjaG1lbnRUZXN0c01hYywgRHJhZ0F0dGFjaG1lbnRXaXRoTm9UeXBlU2hvdWxkTm90Q3Jhc2gp
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCitzdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0
ZWREcmFnUHJldmlldz4gdGFyZ2V0ZWRJbWFnZURyYWdQcmV2aWV3KFdLV2ViVmlldyAqd2ViVmll
dywgTlNEYXRhICppbWFnZURhdGEsIENHU2l6ZSBzaXplKQoreworICAgIGF1dG8gaW1hZ2VWaWV3
ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOltVSUltYWdlIGlt
YWdlV2l0aERhdGE6aW1hZ2VEYXRhXV0pOworICAgIFtpbWFnZVZpZXcgc2V0Qm91bmRzOkNHUmVj
dE1ha2UoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRvIGRlZmF1bHRE
cm9wVGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRo
Q29udGFpbmVyOndlYlZpZXcgY2VudGVyOkNHUG9pbnRNYWtlKDQ1MCwgNDUwKV0pOworICAgIGF1
dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxvY10g
aW5pdF0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlUYXJnZXRlZERyYWdQcmV2aWV3IGFsbG9j
XSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQo
KSB0YXJnZXQ6ZGVmYXVsdERyb3BUYXJnZXQuZ2V0KCldKTsKK30KKworVEVTVChXS0F0dGFjaG1l
bnRUZXN0c0lPUywgVGFyZ2V0ZWRQcmV2aWV3c1doZW5Ecm9wcGluZ0ltYWdlcykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgW3dlYlZp
ZXcgX3NldEVkaXRhYmxlOllFU107CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
cmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKKworICAgIC8vIFRoZSBmaXJzdCBpdGVtIHByZXZpZXcgc2hvdWxkIGJlIHNjYWxlZCBkb3du
IGJ5IGEgZmFjdG9yIG9mIDIuCisgICAgYXV0byBmaXJzdFByZXZpZXcgPSB0YXJnZXRlZEltYWdl
RHJhZ1ByZXZpZXcod2ViVmlldy5nZXQoKSwgdGVzdEltYWdlRGF0YSgpLCBDR1NpemVNYWtlKDQz
MCwgMzQ4KSk7CisgICAgYXV0byBmaXJzdEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbZmlyc3RJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORyB3aXRoRGF0
YTp0ZXN0SW1hZ2VEYXRhKCkgbG9hZGluZ0RlbGF5OjAuNV07CisgICAgW2ZpcnN0SXRlbSBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplOkNHU2l6ZU1ha2UoMjE1LCAxNzQpXTsKKyAgICBbZmly
c3RJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJpY29uIl07CisKKyAgICAvLyBUaGUgc2Vjb25kIGl0
ZW0gcHJldmlldyBzaG91bGQgYmUgc2NhbGVkIHVwIGJ5IGEgZmFjdG9yIG9mIDIuCisgICAgYXV0
byBzZWNvbmRQcmV2aWV3ID0gdGFyZ2V0ZWRJbWFnZURyYWdQcmV2aWV3KHdlYlZpZXcuZ2V0KCks
IHRlc3RHSUZEYXRhKCksIENHU2l6ZU1ha2UoMjYsIDMyKSk7CisgICAgYXV0byBzZWNvbmRJdGVt
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29uZEl0
ZW0gcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlR0lGIHdpdGhEYXRhOnRlc3RHSUZEYXRhKCkgbG9hZGluZ0RlbGF5
OjAuNV07CisgICAgW3NlY29uZEl0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpDR1Np
emVNYWtlKDUyLCA2NCldOworICAgIFtzZWNvbmRJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJhcHBs
ZSJdOworCisgICAgW3NpbXVsYXRvciBzZXREcm9wQW5pbWF0aW9uVGltaW5nOkRyb3BBbmltYXRp
b25TaG91bGRGaW5pc2hCZWZvcmVIYW5kbGluZ0Ryb3BdOworICAgIFtzaW11bGF0b3Igc2V0RXh0
ZXJuYWxJdGVtUHJvdmlkZXJzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Zmlyc3RJdGVtLmdl
dCgpLCBzZWNvbmRJdGVtLmdldCgpLCBuaWxdIGRlZmF1bHREcm9wUHJldmlld3M6W05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czpmaXJzdFByZXZpZXcuZ2V0KCksIHNlY29uZFByZXZpZXcuZ2V0KCks
IG5pbF1dOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1Bv
aW50TWFrZSg0NTAsIDQ1MCldOworCisgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgZGVsYXllZERy
b3BQcmV2aWV3c10uY291bnQsIDJVKTsKKyAgICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmZpcnN0
RGVsYXllZFByZXZpZXcgPSBbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmZpcnN0T2Jq
ZWN0OworICAgIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqc2Vjb25kRGVsYXllZFByZXZpZXcgPSBb
c2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmxhc3RPYmplY3Q7CisgICAgYXV0byBpbWFn
ZUVsZW1lbnRCb3VuZHMgPSByZXRhaW5QdHIoW3dlYlZpZXcgYWxsQm91bmRpbmdDbGllbnRSZWN0
czpAIklNRyJdKTsKKworICAgIEVYUEVDVF9UUlVFKENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1Ry
YW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgwLjUsIDAuNSksIGZpcnN0RGVsYXll
ZFByZXZpZXcudGFyZ2V0LnRyYW5zZm9ybSkpOworICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KENHUmVjdE1ha2UoMCwgMCwgNDMwLCAzNDgpLCBmaXJzdERlbGF5ZWRQcmV2aWV3LnBh
cmFtZXRlcnMudmlzaWJsZVBhdGguYm91bmRzKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dSZWN0Q29u
dGFpbnNQb2ludChbaW1hZ2VFbGVtZW50Qm91bmRzIGZpcnN0T2JqZWN0XS5DR1JlY3RWYWx1ZSwg
Zmlyc3REZWxheWVkUHJldmlldy50YXJnZXQuY2VudGVyKSk7CisKKyAgICBFWFBFQ1RfVFJVRShD
R0FmZmluZVRyYW5zZm9ybUVxdWFsVG9UcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoMiwgMiksIHNlY29uZERlbGF5ZWRQcmV2aWV3LnRhcmdldC50cmFuc2Zvcm0pKTsKKyAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChDR1JlY3RNYWtlKDAsIDAsIDI2LCAzMiksIHNl
Y29uZERlbGF5ZWRQcmV2aWV3LnBhcmFtZXRlcnMudmlzaWJsZVBhdGguYm91bmRzKSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dSZWN0Q29udGFpbnNQb2ludChbaW1hZ2VFbGVtZW50Qm91bmRzIGxhc3RP
YmplY3RdLkNHUmVjdFZhbHVlLCBzZWNvbmREZWxheWVkUHJldmlldy50YXJnZXQuY2VudGVyKSk7
CisKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiSU1H
Il07CisgICAgX1dLQXR0YWNobWVudCAqcG5nQXR0YWNobWVudCA9IFtbc2ltdWxhdG9yIGluc2Vy
dGVkQXR0YWNobWVudHNdIF9hdHRhY2htZW50V2l0aE5hbWU6QCJpY29uLnBuZyJdOworICAgIF9X
S0F0dGFjaG1lbnQgKmdpZkF0dGFjaG1lbnQgPSBbW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1l
bnRzXSBfYXR0YWNobWVudFdpdGhOYW1lOkAiYXBwbGUuZ2lmIl07CisgICAgRVhQRUNUX1dLX1NU
UkVRKHBuZ0F0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSwgQCJpbWFnZS9wbmciKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoZ2lmQXR0YWNobWVudC5pbmZvLmNvbnRlbnRUeXBlLCBAImltYWdlL2dp
ZiIpOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBUYXJnZXRlZFByZXZpZXdJc0Ns
aXBwZWRXaGVuRHJvcHBpbmdUYWxsSW1hZ2UpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmll
d0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemVNYWtlKDgwMCwgMjAwKSk7CisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuc3R5bGUubWFy
Z2luID0gJzAnIl07CisgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CisKKyAgICBhdXRv
IGltYWdlRGF0YSA9IHJldGFpblB0cihbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiNDAweDQwMC1ncmVlbiIgd2l0aEV4
dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0p
OworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworCisgICAgYXV0byBwcmV2aWV3
ID0gdGFyZ2V0ZWRJbWFnZURyYWdQcmV2aWV3KHdlYlZpZXcuZ2V0KCksIGltYWdlRGF0YS5nZXQo
KSwgQ0dTaXplTWFrZSgxMDAsIDEwMCkpOworICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tOU0l0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORyB3
aXRoRGF0YTppbWFnZURhdGEuZ2V0KCkgbG9hZGluZ0RlbGF5OjAuNV07CisgICAgW2l0ZW0gc2V0
UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpDR1NpemVNYWtlKDQwMCwgNDAwKV07CisgICAgW2l0
ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImdyZWVuIl07CisKKyAgICBbc2ltdWxhdG9yIHNldERyb3BB
bmltYXRpb25UaW1pbmc6RHJvcEFuaW1hdGlvblNob3VsZEZpbmlzaEJlZm9yZUhhbmRsaW5nRHJv
cF07CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0Oml0ZW0uZ2V0KCldIGRlZmF1bHREcm9wUHJldmlld3M6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OnByZXZpZXcuZ2V0KCldXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQ
b2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMzUwLCAzNTApXTsKKworICAgIEVYUEVDVF9F
UShbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdLmNvdW50LCAxVSk7CisgICAgVUlUYXJn
ZXRlZERyYWdQcmV2aWV3ICpkZWxheWVkUHJldmlldyA9IFtzaW11bGF0b3IgZGVsYXllZERyb3BQ
cmV2aWV3c10uZmlyc3RPYmplY3Q7CisgICAgRVhQRUNUX1RSVUUoQ0dBZmZpbmVUcmFuc2Zvcm1F
cXVhbFRvVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDQsIDQpLCBkZWxheWVk
UHJldmlldy50YXJnZXQudHJhbnNmb3JtKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QoQ0dSZWN0TWFrZSgwLCAwLCAxMDAsIDUwKSwgZGVsYXllZFByZXZpZXcucGFyYW1ldGVy
cy52aXNpYmxlUGF0aC5ib3VuZHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR1BvaW50RXF1YWxUb1Bv
aW50KENHUG9pbnRNYWtlKDIwMCwgMTAwKSwgZGVsYXllZFByZXZpZXcudGFyZ2V0LmNlbnRlcikp
OworCisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklN
RyJdOworICAgIF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbW3NpbXVsYXRvciBpbnNlcnRl
ZEF0dGFjaG1lbnRzXSBfYXR0YWNobWVudFdpdGhOYW1lOkAiZ3JlZW4ucG5nIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGF0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSwgQCJpbWFnZS9wbmciKTsK
K30KKwogVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZEltYWdlQXNBdHRh
Y2htZW50KQogewogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmRE
cm9wVGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tCmluZGV4IDQ3MDkwNDc2ZDdjZTUzMTE0ZTNkYjgzYjkyNmZlMzJjZmJmMWUw
NDkuLmY1ZTU2ZTY5N2QyZjBjYjcwNTJlYjMwYzFkMzVlMjNlMTg2NjE1OGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQpA
QCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJDbGFzc01ldGhvZFN3aXp6bGVyLmgiCiAjaW1w
b3J0ICJEcmFnQW5kRHJvcFNpbXVsYXRvci5oIgorI2ltcG9ydCAiTlNJdGVtUHJvdmlkZXJBZGRp
dGlvbnMuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtNTMsMTAgKzU0LDYgQEAgU09GVF9M
SU5LX0ZSQU1FV09SSyhNYXBLaXQpCiBTT0ZUX0xJTktfQ0xBU1MoTWFwS2l0LCBNS01hcEl0ZW0p
CiBTT0ZUX0xJTktfQ0xBU1MoTWFwS2l0LCBNS1BsYWNlbWFyaykKIAotdHlwZWRlZiB2b2lkIChe
RmlsZUxvYWRDb21wbGV0aW9uQmxvY2spKE5TVVJMICosIEJPT0wsIE5TRXJyb3IgKik7Ci10eXBl
ZGVmIHZvaWQgKF5EYXRhTG9hZENvbXBsZXRpb25CbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKik7
Ci10eXBlZGVmIHZvaWQgKF5OU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrKShO
U0RhdGEgKiwgTlNFcnJvciAqKTsKLQogI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiBA
aW50ZXJmYWNlIE5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zIDogTlNPYmplY3QK
QEAgLTgxLDE5ICs3OCw2IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RaSVBBcmNoaXZlKCkKICAgICBy
ZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6emlwRmlsZVVSTF07CiB9CiAKLUBp
bXBsZW1lbnRhdGlvbiBOU0l0ZW1Qcm92aWRlciAoRHJhZ0FuZERyb3BUZXN0cykKLQotLSAodm9p
ZClyZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAq
KXR5cGVJZGVudGlmaWVyIHdpdGhEYXRhOihOU0RhdGEgKilkYXRhCi17Ci0gICAgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWREYXRhID0gZGF0YTsKLSAgICBbc2VsZiByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6IFtyZXRh
aW5lZERhdGFdIChEYXRhTG9hZENvbXBsZXRpb25CbG9jayBibG9jaykgLT4gTlNQcm9ncmVzcyAq
IHsKLSAgICAgICAgYmxvY2socmV0YWluZWREYXRhLmdldCgpLCBuaWwpOwotICAgICAgICByZXR1
cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwot
ICAgIH1dOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChEcmFn
QW5kRHJvcFRlc3RzKQogCiAtIChCT09MKWVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50CkBAIC05
OTcsNyArOTgxLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZVVURjhQ
bGFpblRleHRPbmx5KQogICAgIE5TU3RyaW5nICp0ZXh0UGF5bG9hZCA9IEAiQ2VjaSBuJ2VzdCBw
YXMgdW5lIHN0cmluZyI7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERy
b3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAgICAg
YXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRdKTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVU
RjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJp
bGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRD
b21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooRGF0
YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgY29t
cGxldGlvbkJsb2NrKFt0ZXh0UGF5bG9hZCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dy
ZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CkBAIC0xMDE3LDcgKzEwMDEsNyBAQCBURVNUKERy
YWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlSlBFR09ubHkpCiAKICAgICBhdXRvIHNpbXVs
YXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJW
aWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFk
b3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVt
UHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooTlNJdGVt
UHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgW3Np
bXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVu
dGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jl
c3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCiAgICAgewogICAg
ICAgICBjb21wbGV0aW9uQmxvY2soVUlJbWFnZUpQRUdSZXByZXNlbnRhdGlvbih0ZXN0SWNvbklt
YWdlKCksIDAuNSksIG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVBy
b2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CkBAIC0xMzEzLDcgKzEyOTcsNyBAQCBURVNU
KERyYWdBbmREcm9wVGVzdHMsIEluamVjdGVkQnVuZGxlT3ZlcnJpZGVQZXJmb3JtVHdvU3RlcERy
b3ApCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVj
dGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CiAKICAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11
bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5O
U1Byb2dyZXNzICooTlNJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0
aW9uQmxvY2spCisgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4
UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBj
b21wbGV0aW9uQmxvY2spCiAgICAgewogICAgICAgICBjb21wbGV0aW9uQmxvY2soW0AiSGVsbG8g
d29ybGQiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgbmlsKTsKICAg
ICAgICAgcmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291
bnQ6MTAwXTsKQEAgLTEzMzYsNyArMTMyMCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgSW5q
ZWN0ZWRCdW5kbGVBbGxvd1BlcmZvcm1Ud29TdGVwRHJvcCkKICAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCki
XTsKIAogICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3Rl
ckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRl
ckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKKyAgICBbc2ltdWxhdGVk
SXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9n
cmVzcyAqKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKICAgICB7CiAg
ICAgICAgIGNvbXBsZXRpb25CbG9jayhbQCJIZWxsbyB3b3JsZCIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3Mg
ZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwpAQCAtMTU4MSwxNCArMTU2
NSwxNCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmRM
b2FkaW5nKQogCiAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNlXTsKICAgICBhdXRvIGZhc3RJ
dGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2Zhc3RJ
dGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRl
clJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKE5T
SXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAg
IFtmYXN0SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jl
c3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCiAgICAgewogICAg
ICAgICBjb21wbGV0aW9uQmxvY2soW2Zhc3RTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwogCiAg
ICAgYXV0byBzbG93SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0p
OwotICAgIFtzbG93SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlm
aWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6
TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5T
UHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRp
b25CbG9jaykKKyAgICBbc2xvd0l0ZW0gcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBl
SWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCB2aXNp
YmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5k
bGVyOl5OU1Byb2dyZXNzICooRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2Nr
KQogICAgIHsKICAgICAgICAgc2xlZXAoMl9zKTsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFtz
bG93U3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgbmlsKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0
b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaApp
bmRleCA3ZjMxYzRmZjcxNmI3Zjg3YTJlNmMzOTk0MTZkMGE2ZDViNjljYmQ0Li5iNWIwZGQzZDNl
MDUzZjMyNmUzM2VmNjU5ZjZhNjhjMmI0ODE0MjFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCkBAIC00Nyw2ICs0NywxMSBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEcmFnQW5kRHJvcFBoYXNlKSB7CiAgICAgRHJhZ0FuZERy
b3BQaGFzZVBlcmZvcm1pbmdEcm9wID0gNAogfTsKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgRHJvcEFuaW1hdGlvblRpbWluZykgeworICAgIERyb3BBbmltYXRpb25TaG91bGRGaW5pc2hB
ZnRlckhhbmRsaW5nRHJvcCwKKyAgICBEcm9wQW5pbWF0aW9uU2hvdWxkRmluaXNoQmVmb3JlSGFu
ZGxpbmdEcm9wCit9OworCiB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVl
ICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogCiBAaW50ZXJmYWNlIE1vY2tEcmFnRHJv
cFNlc3Npb24gOiBOU09iamVjdCA8VUlEcmFnRHJvcFNlc3Npb24+IHsKQEAgLTkxLDYgKzk2LDcg
QEAgdHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPiAqUHJvZ3Jlc3NU
b0NHUG9pbnRWYWx1ZU1hcDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RX
S1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0TG9jYXRp
b24gdG86KENHUG9pbnQpZW5kTG9jYXRpb24gYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25z
OihQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwKWFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9u
czsKIC0gKHZvaWQpZW5zdXJlSW5wdXRTZXNzaW9uOworLSAodm9pZClzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6KE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzIGRlZmF1
bHREcm9wUHJldmlld3M6KE5TQXJyYXk8VUlUYXJnZXRlZERyYWdQcmV2aWV3ICo+ICopcHJldmll
d3M7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgRHJhZ0FuZERyb3BQaGFzZSBw
aGFzZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c0ZvY3VzVG9TdGFydElucHV0
U2Vzc2lvbjsKQEAgLTExNSw2ICsxMjEsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJl
ciAqLCBOU1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqY2Fu
Y2VsbGF0aW9uUHJldmlld3M7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJy
YXkgKmRyb3BQcmV2aWV3czsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJh
eSAqZGVsYXllZERyb3BQcmV2aWV3czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBEcm9wQW5pbWF0
aW9uVGltaW5nIGRyb3BBbmltYXRpb25UaW1pbmc7CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL05TSXRlbVBy
b3ZpZGVyQWRkaXRpb25zLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL05TSXRlbVByb3Zp
ZGVyQWRkaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ4ZmY3NzJiYjRlNWNlYTAyNWUwZWRjMTYyNzYz
MTBlZTYyMGE0YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
TlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCit0eXBl
ZGVmIHZvaWQgKF5GaWxlTG9hZENvbXBsZXRpb25CbG9jaykoTlNVUkwgKiwgQk9PTCwgTlNFcnJv
ciAqKTsKK3R5cGVkZWYgdm9pZCAoXkRhdGFMb2FkQ29tcGxldGlvbkJsb2NrKShOU0RhdGEgKiwg
TlNFcnJvciAqKTsKKworQGludGVyZmFjZSBOU0l0ZW1Qcm92aWRlciAoTlNJdGVtUHJvdmlkZXJB
ZGRpdGlvbnMpCistICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7
CistICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5T
U3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgbG9hZGluZ0Rl
bGF5OihOU1RpbWVJbnRlcnZhbClkZWxheTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL05TSXRlbVByb3ZpZGVyQWRkaXRpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3YmQ1
ZGM2NTkxOGY0YjYwN2MwMzA4YjhjMTRkM2UwZDJkZGY2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL05TSXRlbVByb3ZpZGVyQWRkaXRpb25zLm1tCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5T
SXRlbVByb3ZpZGVyQWRkaXRpb25zLmgiCisKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW1wbGVtZW50YXRpb24gTlNJdGVtUHJvdmlkZXIg
KE5TSXRlbVByb3ZpZGVyQWRkaXRpb25zKQorCistICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERh
dGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBbc2VsZiByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHdpdGhEYXRhOmRhdGEgbG9hZGluZ0Rl
bGF5OjBdOworfQorCistICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlk
ZW50aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6KE5TRGF0YSAqKWRh
dGEgbG9hZGluZ0RlbGF5OihOU1RpbWVJbnRlcnZhbClkZWxheQoreworICAgIGF1dG8gcmV0YWlu
ZWREYXRhID0gcmV0YWluUHRyKGRhdGEpOworICAgIFtzZWxmIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpOU0l0ZW1Q
cm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjogW3JldGFpbmVk
RGF0YSwgZGVsYXldIChEYXRhTG9hZENvbXBsZXRpb25CbG9jayBibG9jaykgLT4gTlNQcm9ncmVz
cyAqIHsKKyAgICAgICAgaWYgKGRlbGF5ID4gMCkgeworICAgICAgICAgICAgZGlzcGF0Y2hfYWZ0
ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgKGludDY0X3QpKGRlbGF5ICogTlNF
Q19QRVJfU0VDKSksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtibG9jayA9IG1ha2VCbG9j
a1B0cihibG9jayksIHJldGFpbmVkRGF0YV0geworICAgICAgICAgICAgICAgIGJsb2NrKHJldGFp
bmVkRGF0YS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGJsb2NrKHJldGFpbmVkRGF0YS5nZXQoKSwgbmlsKTsKKyAgICAgICAgcmV0dXJu
IFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKKyAg
ICB9XTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJh
Z0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCA1NTU1N2JhY2QwNzMxNzJlNGQ2NzAxMGMxMjhhYTI2
ZGNhMmVjZGI3Li44ZWI1YjA2YzljZDJmOTQ3ODQ4OWRjZTczMmMyOTkyODllMjcwN2VkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5t
bQpAQCAtMjk2LDYgKzI5Niw5IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogQGVuZAogCitAaW50
ZXJmYWNlIERyYWdBbmREcm9wU2ltdWxhdG9yICgpIDxVSURyYWdBbmltYXRpbmc+CitAZW5kCisK
IEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CiAgICAgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IF93ZWJWaWV3OwogICAgIFJldGFpblB0cjxNb2NrRHJhZ1Nlc3Npb24+IF9k
cmFnU2Vzc2lvbjsKQEAgLTMxNCw2ICszMTcsNyBAQCBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERy
b3BTaW11bGF0b3IgewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxVSVRhcmdldGVkRHJh
Z1ByZXZpZXcgKj4+IF9jYW5jZWxsYXRpb25QcmV2aWV3czsKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IF9kcm9wUHJldmlld3M7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBf
ZGVsYXllZERyb3BQcmV2aWV3czsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9kZWZh
dWx0RHJvcFByZXZpZXdzRm9yRXh0ZXJuYWxJdGVtczsKIAogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheTxfV0tBdHRhY2htZW50ICo+PiBfaW5zZXJ0ZWRBdHRhY2htZW50czsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk8X1dLQXR0YWNobWVudCAqPj4gX3JlbW92ZWRBdHRhY2htZW50
czsKQEAgLTMzMiw2ICszMzYsNyBAQCBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11bGF0
b3IgewogICAgIEJsb2NrUHRyPFVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24sIGlkKT4g
X292ZXJyaWRlRHJhZ1VwZGF0ZUJsb2NrOwogICAgIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNBcnJh
eSAqKT4gX2Ryb3BDb21wbGV0aW9uQmxvY2s7CiAgICAgQmxvY2tQdHI8dm9pZCgpPiBfc2Vzc2lv
bldpbGxCZWdpbkJsb2NrOworICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKFVJVmlld0FuaW1hdGlu
Z1Bvc2l0aW9uKT4+IF9kcm9wQW5pbWF0aW9uQ29tcGxldGlvbkJsb2NrczsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUKQEAgLTM1NCw2ICsz
NTksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICop
d2ViVmlldwogICAgICAgICBfc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbiA9IE5POwogICAgICAg
ICBfc2hvdWxkQmVjb21lRmlyc3RSZXNwb25kZXIgPSBZRVM7CiAgICAgICAgIF9zaG91bGRBbGxv
d01vdmVPcGVyYXRpb24gPSBZRVM7CisgICAgICAgIF9kcm9wQW5pbWF0aW9uVGltaW5nID0gRHJv
cEFuaW1hdGlvblNob3VsZEZpbmlzaEFmdGVySGFuZGxpbmdEcm9wOwogICAgICAgICBbX3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IF9zZXRJbnB1dERlbGVn
YXRlOnNlbGZdOwogICAgICAgICBzZWxmLmRyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKQEAgLTQ4
MCw4ICs0ODYsMTYgQEAgLSAodm9pZClfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklm
TmVjZXNzYXJ5CiAgICAgICAgIE5TSW50ZWdlciBkcm9wUHJldmlld0luZGV4ID0gMDsKICAgICAg
ICAgX19ibG9jayBOU1VJbnRlZ2VyIG51bWJlck9mUGVuZGluZ1ByZXZpZXdzID0gW19kcm9wU2Vz
c2lvbiBpdGVtc10uY291bnQ7CiAgICAgICAgIF9pc0RvbmVXYWl0aW5nRm9yRGVsYXllZERyb3BQ
cmV2aWV3cyA9ICFudW1iZXJPZlBlbmRpbmdQcmV2aWV3czsKKyAgICAgICAgQk9PTCBjYW5Vc2VE
ZWZhdWx0RHJvcFByZXZpZXdzRm9yRXh0ZXJuYWxJdGVtcyA9IFtfZGVmYXVsdERyb3BQcmV2aWV3
c0ZvckV4dGVybmFsSXRlbXMgY291bnRdID09IFtfZHJvcFNlc3Npb24gaXRlbXNdLmNvdW50Owog
ICAgICAgICBmb3IgKFVJRHJhZ0l0ZW0gKml0ZW0gaW4gW19kcm9wU2Vzc2lvbiBpdGVtc10pIHsK
LSAgICAgICAgICAgIGF1dG8gZGVmYXVsdFByZXZpZXcgPSBhZG9wdE5TKFtbVUlUYXJnZXRlZERy
YWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6X3dlYlZpZXcuZ2V0KCldKTsKKyAgICAgICAg
ICAgIFJldGFpblB0cjxVSVRhcmdldGVkRHJhZ1ByZXZpZXc+IGRlZmF1bHRQcmV2aWV3OworICAg
ICAgICAgICAgaWYgKGNhblVzZURlZmF1bHREcm9wUHJldmlld3NGb3JFeHRlcm5hbEl0ZW1zKQor
ICAgICAgICAgICAgICAgIGRlZmF1bHRQcmV2aWV3ID0gW19kZWZhdWx0RHJvcFByZXZpZXdzRm9y
RXh0ZXJuYWxJdGVtcyBvYmplY3RBdEluZGV4OmRyb3BQcmV2aWV3SW5kZXhdOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSnVzdCBmYWxsIGJhY2sgdG8gYW4gYXJiaXRy
YXJ5IG5vbi1udWxsIGRyYWcgcHJldmlldyBpZiB0aGUgdGVzdCBkaWRuJ3Qgc3BlY2lmeSBvbmUu
CisgICAgICAgICAgICAgICAgZGVmYXVsdFByZXZpZXcgPSBhZG9wdE5TKFtbVUlUYXJnZXRlZERy
YWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6X3dlYlZpZXcuZ2V0KCldKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgaWQgPFVJRHJvcEludGVyYWN0aW9uRGVsZWdhdGVfU3RhZ2lu
Z18zMTA3NTAwNT4gZGVsZWdhdGUgPSAoaWQgPFVJRHJvcEludGVyYWN0aW9uRGVsZWdhdGVfU3Rh
Z2luZ18zMTA3NTAwNT4pW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRlbGVnYXRlXTsKICAgICAg
ICAgICAgIFVJRHJvcEludGVyYWN0aW9uICppbnRlcmFjdGlvbiA9IFtfd2ViVmlldyBkcm9wSW50
ZXJhY3Rpb25dOwogICAgICAgICAgICAgW19kcm9wUHJldmlld3MgYWRkT2JqZWN0OltkZWxlZ2F0
ZSBkcm9wSW50ZXJhY3Rpb246aW50ZXJhY3Rpb24gcHJldmlld0ZvckRyb3BwaW5nSXRlbTppdGVt
IHdpdGhEZWZhdWx0OmRlZmF1bHRQcmV2aWV3LmdldCgpXSA/OiBOU051bGwubnVsbF07CkBAIC00
OTcsNiArNTExLDE4IEBAIC0gKHZvaWQpX2NvbmNsdWRlRHJvcEFuZFBlcmZvcm1PcGVyYXRpb25J
Zk5lY2Vzc2FyeQogICAgICAgICB9CiAgICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9u
RGVsZWdhdGVdIGRyb3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBwZXJm
b3JtRHJvcDpfZHJvcFNlc3Npb24uZ2V0KCldOwogICAgICAgICBfcGhhc2UgPSBEcmFnQW5kRHJv
cFBoYXNlUGVyZm9ybWluZ0Ryb3A7CisKKyAgICAgICAgZm9yIChVSURyYWdJdGVtICppdGVtIGlu
IFtfZHJvcFNlc3Npb24gaXRlbXNdKQorICAgICAgICAgICAgW1tfd2ViVmlldyBkcm9wSW50ZXJh
Y3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25d
IGl0ZW06aXRlbSB3aWxsQW5pbWF0ZURyb3BXaXRoQW5pbWF0b3I6c2VsZl07CisKKyAgICAgICAg
aWYgKF9kcm9wQW5pbWF0aW9uVGltaW5nID09IERyb3BBbmltYXRpb25TaG91bGRGaW5pc2hCZWZv
cmVIYW5kbGluZ0Ryb3ApIHsKKyAgICAgICAgICAgIFtfd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCIiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IgKikgeworICAgICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gYXQgbGVhc3QgZW5zdXJlIG9uZSByb3VuZCB0cmlwIHRvIHRoZSB3
ZWIgcHJvY2VzcyBhbmQgYmFjaywgdG8gZW5zdXJlIHRoYXQgdGhlIFVJIHByb2Nlc3Mgd2lsbCBo
YXZlIHJlY2VpdmVkIGFueSBpbWFnZSBwbGFjZWhvbGRlcnMKKyAgICAgICAgICAgICAgICAvLyB0
aGF0IHdlcmUganVzdCBpbnNlcnRlZCBhcyBhIHJlc3VsdCBvZiBwZXJmb3JtaW5nIHRoZSBkcm9w
LiBIb3dldmVyLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gcnVuIGJlZm9yZSB0aGUgVUkgcHJvY2Vz
cyByZWNlaXZlcyB0aGUgZHJvcCBjb21wbGV0aW9uCisgICAgICAgICAgICAgICAgLy8gbWVzc2Fn
ZSwgc2luY2UgaXRlbSBwcm92aWRlciBsb2FkaW5nIGlzIGFzeW5jaHJvbm91cy4KKyAgICAgICAg
ICAgICAgICBbc2VsZiBfaW52b2tlRHJvcEFuaW1hdGlvbkNvbXBsZXRpb25CbG9ja3NBbmRDb25j
bHVkZURyb3BdOworICAgICAgICAgICAgfV07CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSB0cnVlOwogICAgICAgICBfcGhhc2UgPSBEcmFn
QW5kRHJvcFBoYXNlQ2FuY2VsbGVkOwpAQCAtNjM5LDYgKzY2NSw3IEBAIC0gKHZvaWQpX2FkdmFu
Y2VQcm9ncmVzcwogLSAodm9pZCljbGVhckV4dGVybmFsRHJhZ0luZm9ybWF0aW9uCiB7CiAgICAg
X2V4dGVybmFsSXRlbVByb3ZpZGVycyA9IG5pbDsKKyAgICBfZGVmYXVsdERyb3BQcmV2aWV3c0Zv
ckV4dGVybmFsSXRlbXMgPSBuaWw7CiB9CiAKIC0gKENHUG9pbnQpX2N1cnJlbnRMb2NhdGlvbgpA
QCAtNjY5LDYgKzY5NiwxMyBAQCAtICh2b2lkKXNldEV4dGVybmFsSXRlbVByb3ZpZGVyczooTlNB
cnJheSAqKWV4dGVybmFsSXRlbVByb3ZpZGVycwogICAgIF9leHRlcm5hbEl0ZW1Qcm92aWRlcnMg
PSBhZG9wdE5TKFtleHRlcm5hbEl0ZW1Qcm92aWRlcnMgY29weV0pOwogfQogCistICh2b2lkKXNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Q
cm92aWRlcnMgZGVmYXVsdERyb3BQcmV2aWV3czooTlNBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKj4gKilwcmV2aWV3cworeworICAgIEFTU0VSVChpdGVtUHJvdmlkZXJzLmNvdW50ID09IHBy
ZXZpZXdzLmNvdW50KTsKKyAgICBzZWxmLmV4dGVybmFsSXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92
aWRlcnM7CisgICAgX2RlZmF1bHREcm9wUHJldmlld3NGb3JFeHRlcm5hbEl0ZW1zID0gYWRvcHRO
UyhwcmV2aWV3cy5jb3B5KTsKK30KKwogLSAoRHJhZ0FuZERyb3BQaGFzZSlwaGFzZQogewogICAg
IHJldHVybiBfcGhhc2U7CkBAIC03ODQsNiArODE4LDI1IEBAIC0gKGRpc3BhdGNoX2Jsb2NrX3Qp
c2Vzc2lvbldpbGxCZWdpbkJsb2NrCiAgICAgcmV0dXJuIF9zZXNzaW9uV2lsbEJlZ2luQmxvY2su
Z2V0KCk7CiB9CiAKKy0gKHZvaWQpYWRkQW5pbWF0aW9uczoodm9pZCAoXikoKSlhbmltYXRpb25z
Cit7CisgICAgLy8gVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhlIGRyYWctYW5kLWRyb3Ag
c2ltdWxhdG9yIHlldCwgc2luY2UgV2ViS2l0IGRvZXNuJ3QgbWFrZSB1c2Ugb2YKKyAgICAvLyAi
YWxvbmdzaWRlIiBhbmltYXRpb25zIGR1cmluZyBkcm9wLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCistICh2b2lkKWFkZENvbXBsZXRpb246KHZvaWQgKF4pKFVJVmlld0FuaW1hdGlu
Z1Bvc2l0aW9uKSljb21wbGV0aW9uCit7CisgICAgX2Ryb3BBbmltYXRpb25Db21wbGV0aW9uQmxv
Y2tzLmFwcGVuZChtYWtlQmxvY2tQdHIoY29tcGxldGlvbikpOworfQorCistICh2b2lkKV9pbnZv
a2VEcm9wQW5pbWF0aW9uQ29tcGxldGlvbkJsb2Nrc0FuZENvbmNsdWRlRHJvcAoreworICAgIGZv
ciAoYXV0byBibG9jayA6IHN0ZDo6ZXhjaGFuZ2UoX2Ryb3BBbmltYXRpb25Db21wbGV0aW9uQmxv
Y2tzLCB7IH0pKQorICAgICAgICBibG9jayhVSVZpZXdBbmltYXRpbmdQb3NpdGlvbkVuZCk7Cisg
ICAgW1tfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltf
d2ViVmlldyBkcm9wSW50ZXJhY3Rpb25dIGNvbmNsdWRlRHJvcDpfZHJvcFNlc3Npb24uZ2V0KCld
OworfQorCiAjcHJhZ21hIG1hcmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uOihVSURyYWdJbnRlcmFj
dGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25XaWxsQmVnaW46KGlkIDxVSURyYWdTZXNzaW9uPilz
ZXNzaW9uCkBAIC03OTcsOCArODUwLDEzIEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTCloCiAgICAg
aWYgKHNlbGYuZHJvcENvbXBsZXRpb25CbG9jaykKICAgICAgICAgc2VsZi5kcm9wQ29tcGxldGlv
bkJsb2NrKGhhbmRsZWQsIGl0ZW1Qcm92aWRlcnMpOwogCisgICAgaWYgKF9kcm9wQW5pbWF0aW9u
VGltaW5nID09IERyb3BBbmltYXRpb25TaG91bGRGaW5pc2hCZWZvcmVIYW5kbGluZ0Ryb3ApIHsK
KyAgICAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIFtfd2ViVmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RG
b3JUZXN0aW5nOl57Ci0gICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVd
IGRyb3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6
X2Ryb3BTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgW3NlbGYgX2ludm9rZURyb3BBbmltYXRpb25D
b21wbGV0aW9uQmxvY2tzQW5kQ29uY2x1ZGVEcm9wXTsKICAgICAgICAgX2lzRG9uZVdpdGhDdXJy
ZW50UnVuID0gdHJ1ZTsKICAgICB9XTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>