<?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>24491</bug_id>
          
          <creation_ts>2009-03-10 08:31:54 -0700</creation_ts>
          <short_desc>Rename posOffset to m_offset, get rid of accessor</short_desc>
          <delta_ts>2009-03-10 09:12:00 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112999</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-10 08:31:54 -0700</bug_when>
    <thetext>As suggested in dom/Position.h, this patch gets rid of the &apos;offset()&apos; accessor and renames posOffset to m_offset. I&apos;ve used m_offset instead of offset to follow the style guide lines, since Position is still a class and not a structure. If the long term plan is still to make it a structure it would be pretty easy to just s/m_offset/offset/ globally when that is achieved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113000</commentid>
    <comment_count>1</comment_count>
      <attachid>28437</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-10 08:34:37 -0700</bug_when>
    <thetext>Created attachment 28437
posoffset.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113002</commentid>
    <comment_count>2</comment_count>
      <attachid>28437</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-10 09:05:57 -0700</bug_when>
    <thetext>Comment on attachment 28437
posoffset.patch

Seems fine, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113003</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-10 09:12:00 -0700</bug_when>
    <thetext>Thanks, landed in r41553.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28437</attachid>
            <date>2009-03-10 08:34:37 -0700</date>
            <delta_ts>2009-03-10 09:05:57 -0700</delta_ts>
            <desc>posoffset.patch</desc>
            <filename>posoffset.patch</filename>
            <type>text/plain</type>
            <size>86911</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhZGNhZjI0ZjJlNTk1YWE4NGFhNzNmNjFhNmJiNjNjOTgzMzVjN2VhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDEwIE1hciAyMDA5IDE3OjMzOjAyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wMy0x
MCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQ0OTEKICAgICAgICBSZW5hbWUgcG9zT2Zmc2V0IHRvIG1fb2Zmc2V0LCBnZXQgcmlk
IG9mIGFjY2Vzc29yCgogICAgICAgIEFzIHN1Z2dlc3RlZCBpbiBkb20vUG9zaXRpb24uaCwgdGhp
cyBwYXRjaCBnZXRzIHJpZCBvZiB0aGUKICAgICAgICAnb2Zmc2V0KCknIGFjY2Vzc29yIGFuZCBy
ZW5hbWVzIHBvc09mZnNldCB0byBtX29mZnNldC4gSSd2ZSB1c2VkCiAgICAgICAgbV9vZmZzZXQg
aW5zdGVhZCBvZiBvZmZzZXQgdG8gZm9sbG93IHRoZSBzdHlsZSBndWlkZSBsaW5lcywgc2luY2UK
ICAgICAgICBQb3NpdGlvbiBpcyBzdGlsbCBhIGNsYXNzIGFuZCBub3QgYSBzdHJ1Y3R1cmUuIElm
IHRoZSBsb25nIHRlcm0KICAgICAgICBwbGFuIGlzIHN0aWxsIHRvIG1ha2UgaXQgYSBzdHJ1Y3R1
cmUgaXQgd291bGQgYmUgcHJldHR5IGVhc3kgdG8KICAgICAgICBqdXN0IHMvbV9vZmZzZXQvb2Zm
c2V0LyBnbG9iYWxseSB3aGVuIHRoYXQgaXMgYWNoaWV2ZWQuCgogICAgICAgICogZG9tL1Bvc2l0
aW9uLmNwcDoKICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnByZXZpb3VzKToKICAgICAgICAo
V2ViQ29yZTo6UG9zaXRpb246Om5leHQpOgogICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6YXRT
dGFydCk6CiAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZCk6CiAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjpyZW5kZXJlZE9mZnNldCk6CiAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojppc0NhbmRpZGF0ZSk6CiAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppblJlbmRlcmVkVGV4
dCk6CiAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc1JlbmRlcmVkQ2hhcmFjdGVyKToKICAg
ICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKToKICAg
ICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24pOgogICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZGVidWdQb3NpdGlvbik6CiAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlcik6CiAgICAgICAgKiBkb20vUG9zaXRpb24uaDoK
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKICAgICAgICAqIGRvbS9Qb3Np
dGlvbkl0ZXJhdG9yLmg6CiAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OlBvc2l0
aW9uSXRlcmF0b3IpOgogICAgICAgICogZG9tL1JhbmdlLmNwcDoKICAgICAgICAqIGRvbS9SYW5n
ZUJvdW5kYXJ5UG9pbnQuaDoKICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50Ojpw
b3NpdGlvbik6CiAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0KToKICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRPZmZzZXQpOgogICAgICAgIChX
ZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvQ2hpbGQpOgogICAgICAgIChXZWJDb3Jl
OjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvU3RhcnQpOgogICAgICAgIChXZWJDb3JlOjpSYW5n
ZUJvdW5kYXJ5UG9pbnQ6OnNldFRvRW5kKToKICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFy
eVBvaW50OjpjaGlsZEJlZm9yZVdpbGxCZVJlbW92ZWQpOgogICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjph
cHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKToKICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVUb1JhbmdlKToKICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlKToKICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVNlbGVjdGVkKToKICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVVuc2VsZWN0ZWQpOgogICAgICAgIChXZWJDb3JlOjpB
cHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0QXRTdGFydElmTmVlZGVkKToKICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0RW5kSWZOZWVkZWQpOgogICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnRJZk5l
ZWRlZCk6CiAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVt
ZW50QXRFbmRJZk5lZWRlZCk6CiAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpt
ZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVudGljYWwpOgogICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKToKICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmpvaW5DaGlsZFRleHROb2Rlcyk6CiAgICAgICAgKiBl
ZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwOgogICAgICAgIChXZWJDb3JlOjpCcmVh
a0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KToKICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwOgogICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
aW5zZXJ0Tm9kZUF0KToKICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnBv
c2l0aW9uT3V0c2lkZVRhYlNwYW4pOgogICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KToKICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6OnByZXBhcmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KToKICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0
KToKICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZVBsYWNlaG9s
ZGVyQXQpOgogICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFn
cmFwaHMpOgogICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRP
ZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdyYXBoKToKICAgICAgICAqIGVkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9y
Tm9kZVJlbW92YWwpOgogICAgICAgIChXZWJDb3JlOjp1cGRhdGVQb3NpdGlvbkZvclRleHRSZW1v
dmFsKToKICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2Vu
ZXJhbERlbGV0ZSk6CiAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZp
eHVwV2hpdGVzcGFjZSk6CiAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CiAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0
Q29tcG9zaXRpb25TZWxlY3Rpb24pOgogICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtD
b21tYW5kLmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9B
cHBseSk6CiAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQu
Y3BwOgogICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpk
b0FwcGx5KToKICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgogICAgICAg
IChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6cGVyZm9ybVRyaXZpYWxSZXBsYWNlKToKICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0KToKICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYik6CiAgICAgICAgKiBlZGl0aW5nL01vdmVT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKICAgICAgICAoV2ViQ29yZTo6TW92ZVNlbGVjdGlvbkNvbW1h
bmQ6OmRvQXBwbHkpOgogICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CiAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToK
ICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgogICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgogICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKToKICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHA6CiAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQpOgog
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6
CiAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIpOgogICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb246OmRlYnVnUG9zaXRpb24pOgogICAgICAgIChXZWJDb3JlOjptYWtlUmFuZ2Up
OgogICAgICAgIChXZWJDb3JlOjpzZXRTdGFydCk6CiAgICAgICAgKFdlYkNvcmU6OnNldEVuZCk6
CiAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgogICAgICAgIChXZWJDb3Jl
OjpWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSk6CiAgICAgICAgKFdlYkNvcmU6
Om1ha2VTZWFyY2hSYW5nZSk6CiAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmRl
YnVnUG9zaXRpb24pOgogICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzaG93VHJl
ZUZvclRoaXMpOgogICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CiAgICAgICAgKFdl
YkNvcmU6OmNvbXBhcmVQb3NpdGlvbnMpOgogICAgICAgIChXZWJDb3JlOjpyYW5nZUNvbXBsaWFu
dEVxdWl2YWxlbnQpOgogICAgICAgIChXZWJDb3JlOjppc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxl
KToKICAgICAgICAoV2ViQ29yZTo6aXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZSk6CiAgICAgICAg
KiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgogICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKICAgICAgICAoV2ViQ29yZTo6bmV4dEJvdW5kYXJ5KToKICAgICAgICAoV2ViQ29y
ZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgogICAgICAgIChXZWJDb3JlOjpzdGFydE9mTGluZSk6
CiAgICAgICAgKFdlYkNvcmU6OmVuZFBvc2l0aW9uRm9yTGluZSk6CiAgICAgICAgKFdlYkNvcmU6
Om5leHRMaW5lUG9zaXRpb24pOgogICAgICAgIChXZWJDb3JlOjpzdGFydE9mUGFyYWdyYXBoKToK
ICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZQYXJhZ3JhcGgpOgogICAgICAgICogcGFnZS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6dXBkYXRlQVhMaW5lU3RhcnRGb3JW
aXNpYmxlUG9zaXRpb24pOgogICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24pOgogICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgogICAg
ICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmFuY2hvck9mZnNldCk6CiAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6YmFzZU9mZnNldCk6CiAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVj
dGlvbjo6Zm9jdXNPZmZzZXQpOgogICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVu
dE9mZnNldCk6CiAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgogICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWxlY3Rpb25M
YXlvdXRDaGFuZ2VkKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6
CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjppbmRleEZvclZpc2libGVQb3Np
dGlvbik6CiAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OndyaXRlU2VsZWN0aW9uKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzUgKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiAr
KysrLS0tLQogV2ViQ29yZS9kb20vUG9zaXRpb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDExICstCiBXZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmggICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvZG9tL1JhbmdlLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmgg
ICAgICAgICAgICAgICAgICAgfCAgIDMwICsrLS0KIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAgICAgICAgICAgICAgIHwgICA1NiArKysrLS0tLQogV2ViQ29yZS9lZGl0aW5n
L0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwICAgICAgICAgfCAgICA4ICstCiBXZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwICAgICAgICAgICB8ICAgMjggKystLQogV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwICAgICAgICAgfCAgIDQwICsr
Ky0tLQogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDE0ICstCiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgICAg
ICAgICB8ICAgIDYgKy0KIC4uLi9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1h
bmQuY3BwICAgIHwgICAxMiArLQogV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNw
cCAgICAgICAgICAgICAgfCAgICA4ICstCiBXZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcCAgICAgICAgICAgICAgICAgIHwgICAxMCArLQogV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBX
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgICAgICAgICAgICAgICB8ICAgMTIg
Ky0KIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgICAgICAgICAgICAgICAgICAgIHwg
ICAxOCArKy0tCiBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgICAgICAgICAgICAg
ICAgICB8ICAgMjIgKystLQogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwICAg
ICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcCAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgICAgICAgICAgICAgfCAgICA2ICstCiAzMCBm
aWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKSwgMTg5IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVjOWEy
Mi4uODAxZmJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMDktMDMtMTAgIFhhbiBMb3BleiAgPHhsb3Bl
ekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQ5MQorICAg
ICAgICBSZW5hbWUgcG9zT2Zmc2V0IHRvIG1fb2Zmc2V0LCBnZXQgcmlkIG9mIGFjY2Vzc29yCisK
KyAgICAgICAgQXMgc3VnZ2VzdGVkIGluIGRvbS9Qb3NpdGlvbi5oLCB0aGlzIHBhdGNoIGdldHMg
cmlkIG9mIHRoZQorICAgICAgICAnb2Zmc2V0KCknIGFjY2Vzc29yIGFuZCByZW5hbWVzIHBvc09m
ZnNldCB0byBtX29mZnNldC4gSSd2ZSB1c2VkCisgICAgICAgIG1fb2Zmc2V0IGluc3RlYWQgb2Yg
b2Zmc2V0IHRvIGZvbGxvdyB0aGUgc3R5bGUgZ3VpZGUgbGluZXMsIHNpbmNlCisgICAgICAgIFBv
c2l0aW9uIGlzIHN0aWxsIGEgY2xhc3MgYW5kIG5vdCBhIHN0cnVjdHVyZS4gSWYgdGhlIGxvbmcg
dGVybQorICAgICAgICBwbGFuIGlzIHN0aWxsIHRvIG1ha2UgaXQgYSBzdHJ1Y3R1cmUgaXQgd291
bGQgYmUgcHJldHR5IGVhc3kgdG8KKyAgICAgICAganVzdCBzL21fb2Zmc2V0L29mZnNldC8gZ2xv
YmFsbHkgd2hlbiB0aGF0IGlzIGFjaGlldmVkLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6YXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6YXRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OnJlbmRlcmVkT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojppc0NhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6aW5SZW5kZXJlZFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmlzUmVuZGVyZWRDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkZWJ1Z1Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlcik6CisgICAgICAgICogZG9tL1Bvc2l0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb24pOgorICAgICAgICAq
IGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJh
dG9yOjpQb3NpdGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAg
ICAqIGRvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91
bmRhcnlQb2ludDo6cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBv
aW50OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0NoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9TdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6Y2hpbGRCZWZvcmVXaWxsQmVSZW1vdmVkKToKKyAg
ICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVNlbGVjdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpub2RlRnVsbHlVbnNlbGVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0
YXJ0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0
VGV4dEF0RW5kSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OnNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEVsZW1lbnRBdEVuZElmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVu
dGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0
aE5leHRJZklkZW50aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
am9pbkNoaWxkVGV4dE5vZGVzKToKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0
ZXNwYWNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnByZXBh
cmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlUGxhY2Vob2xkZXJBdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eU1haWxCbG9j
a3F1b3RlZFBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwp
OgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUG9zaXRpb25Gb3JUZXh0UmVtb3ZhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwV2hpdGVz
cGFjZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldENvbXBv
c2l0aW9uU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRv
QXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1Ucml2aWFsUmVwbGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYik6CisgICAgICAgICogZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9u
Q29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgorICAgICAg
ICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6ZGVidWdQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0RW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6dG9Ob3JtYWxpemVkUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNlYXJjaFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpc2libGVTZWxlY3Rpb246OmRlYnVnUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbjo6c2hvd1RyZWVGb3JUaGlzKToKKyAgICAgICAgKiBlZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVQb3NpdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNMYXN0
UG9zaXRpb25CZWZvcmVUYWJsZSk6CisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UG9zaXRpb25Gb3JMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmVu
ZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6
ZW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVBWExpbmVTdGFydEZvclZpc2libGVQb3NpdGlvbik6
CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01TZWxlY3Rpb246OmFuY2hvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxl
Y3Rpb246OmJhc2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpmb2N1
c09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVudE9mZnNldCk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9uTGF5b3V0
Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjppbmRleEZvclZpc2libGVQb3NpdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVTZWxlY3Rpb24pOgorCiAyMDA5LTAzLTEwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCmluZGV4IDZhMzA1YjkuLmRjMDE0N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkg
Y29uc3QKICAgICBpZiAoIW4pCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKLSAgICBpbnQg
byA9IG9mZnNldCgpOworICAgIGludCBvID0gbV9vZmZzZXQ7CiAgICAgLy8gRklYTUU6IE5lZ2F0
aXZlIG9mZnNldHMgc2hvdWxkbid0IGJlIGFsbG93ZWQuIFdlIHNob3VsZCBjYXRjaCB0aGlzIGVh
cmxpZXIuCiAgICAgQVNTRVJUKG8gPj0gMCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBQb3NpdGlv
biBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIGlm
ICghbikKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIAotICAgIGludCBvID0gb2Zmc2V0KCk7
CisgICAgaW50IG8gPSBtX29mZnNldDsKICAgICAvLyBGSVhNRTogTmVnYXRpdmUgb2Zmc2V0cyBz
aG91bGRuJ3QgYmUgYWxsb3dlZC4gV2Ugc2hvdWxkIGNhdGNoIHRoaXMgZWFybGllci4KICAgICBB
U1NFUlQobyA+PSAwKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgUG9zaXRpb246OmF0U3Rh
cnQoKSBjb25zdAogICAgIGlmICghbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAg
cmV0dXJuIG9mZnNldCgpIDw9IDAgJiYgbi0+cGFyZW50KCkgPT0gMDsKKyAgICByZXR1cm4gbV9v
ZmZzZXQgPD0gMCAmJiBuLT5wYXJlbnQoKSA9PSAwOwogfQogCiBib29sIFBvc2l0aW9uOjphdEVu
ZCgpIGNvbnN0CkBAIC0xOTYsMjYgKzE5NiwyNiBAQCBib29sIFBvc2l0aW9uOjphdEVuZCgpIGNv
bnN0CiAgICAgaWYgKCFuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICByZXR1cm4g
bi0+cGFyZW50KCkgPT0gMCAmJiBvZmZzZXQoKSA+PSBtYXhEZWVwT2Zmc2V0KG4pOworICAgIHJl
dHVybiBuLT5wYXJlbnQoKSA9PSAwICYmIG1fb2Zmc2V0ID49IG1heERlZXBPZmZzZXQobik7CiB9
CiAKIGludCBQb3NpdGlvbjo6cmVuZGVyZWRPZmZzZXQoKSBjb25zdAogewogICAgIGlmICghbm9k
ZSgpLT5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiBvZmZzZXQoKTsKKyAgICAgICAgcmV0
dXJuIG1fb2Zmc2V0OwogICAgCiAgICAgaWYgKCFub2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAg
IHJldHVybiBvZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICAKICAgICBpbnQgcmVzdWx0ID0gMDsKICAgICBSZW5kZXJUZXh0ICp0ZXh0UmVuZGVy
ZXIgPSB0b1JlbmRlclRleHQobm9kZSgpLT5yZW5kZXJlcigpKTsKICAgICBmb3IgKElubGluZVRl
eHRCb3ggKmJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94
LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGludCBzdGFydCA9IGJveC0+c3RhcnQoKTsKICAg
ICAgICAgaW50IGVuZCA9IGJveC0+c3RhcnQoKSArIGJveC0+bGVuKCk7Ci0gICAgICAgIGlmIChv
ZmZzZXQoKSA8IHN0YXJ0KQorICAgICAgICBpZiAobV9vZmZzZXQgPCBzdGFydCkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGlmIChvZmZzZXQoKSA8PSBlbmQpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCArPSBvZmZzZXQoKSAtIHN0YXJ0OworICAgICAgICBpZiAobV9vZmZzZXQg
PD0gZW5kKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gbV9vZmZzZXQgLSBzdGFydDsKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ICs9IGJveC0+
bGVuKCk7CkBAIC01NzQsMTcgKzU3NCwxNyBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChyZW5kZXJlci0+aXNCUigp
KQotICAgICAgICByZXR1cm4gb2Zmc2V0KCkgPT0gMCAmJiAhbm9kZUlzVXNlclNlbGVjdE5vbmUo
bm9kZSgpLT5wYXJlbnQoKSk7CisgICAgICAgIHJldHVybiBtX29mZnNldCA9PSAwICYmICFub2Rl
SXNVc2VyU2VsZWN0Tm9uZShub2RlKCktPnBhcmVudCgpKTsKIAogICAgIGlmIChyZW5kZXJlci0+
aXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBpblJlbmRlcmVkVGV4dCgpICYmICFub2RlSXNVc2Vy
U2VsZWN0Tm9uZShub2RlKCkpOwogCiAgICAgaWYgKGlzVGFibGVFbGVtZW50KG5vZGUoKSkgfHwg
ZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUoKSkpCi0gICAgICAgIHJldHVybiAob2Zmc2V0KCkg
PT0gMCB8fCBvZmZzZXQoKSA9PSBtYXhEZWVwT2Zmc2V0KG5vZGUoKSkpICYmICFub2RlSXNVc2Vy
U2VsZWN0Tm9uZShub2RlKCktPnBhcmVudCgpKTsKKyAgICAgICAgcmV0dXJuIChtX29mZnNldCA9
PSAwIHx8IG1fb2Zmc2V0ID09IG1heERlZXBPZmZzZXQobm9kZSgpKSkgJiYgIW5vZGVJc1VzZXJT
ZWxlY3ROb25lKG5vZGUoKS0+cGFyZW50KCkpOwogCiAgICAgaWYgKCFub2RlKCktPmhhc1RhZ05h
bWUoaHRtbFRhZykgJiYgcmVuZGVyZXItPmlzQmxvY2tGbG93KCkgJiYgIWhhc1JlbmRlcmVkTm9u
QW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KHJlbmRlcmVyKSAmJgogICAgICAgICh0b1Jl
bmRlckJveChyZW5kZXJlciktPmhlaWdodCgpIHx8IG5vZGUoKS0+aGFzVGFnTmFtZShib2R5VGFn
KSkpCi0gICAgICAgIHJldHVybiBvZmZzZXQoKSA9PSAwICYmICFub2RlSXNVc2VyU2VsZWN0Tm9u
ZShub2RlKCkpOworICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gMCAmJiAhbm9kZUlzVXNlclNl
bGVjdE5vbmUobm9kZSgpKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC02MDAsMTUg
KzYwMCwxNSBAQCBib29sIFBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCgpIGNvbnN0CiAgICAgCiAg
ICAgUmVuZGVyVGV4dCAqdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKICAg
ICBmb3IgKElubGluZVRleHRCb3ggKmJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7
IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgIGlmIChvZmZzZXQoKSA8
IHN0YXRpY19jYXN0PGludD4oYm94LT5zdGFydCgpKSAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWlu
c1JldmVyc2VkVGV4dCgpKSB7CisgICAgICAgIGlmIChtX29mZnNldCA8IHN0YXRpY19jYXN0PGlu
dD4oYm94LT5zdGFydCgpKSAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4dCgp
KSB7CiAgICAgICAgICAgICAvLyBUaGUgb2Zmc2V0IHdlJ3JlIGxvb2tpbmcgZm9yIGlzIGJlZm9y
ZSB0aGlzIG5vZGUKICAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgdGhlIG9mZnNldCBtdXN0IGJl
IGluIGNvbnRlbnQgdGhhdCBpcwogICAgICAgICAgICAgLy8gbm90IHJlbmRlcmVkLiBSZXR1cm4g
ZmFsc2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGJveC0+Y29udGFpbnNDYXJldE9mZnNldChvZmZzZXQoKSkpCisgICAgICAgIGlmIChib3gtPmNv
bnRhaW5zQ2FyZXRPZmZzZXQobV9vZmZzZXQpKQogICAgICAgICAgICAgLy8gUmV0dXJuIGZhbHNl
IGZvciBvZmZzZXRzIGluc2lkZSBjb21wb3NlZCBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgcmV0
dXJuIG9mZnNldCgpID09IDAgfHwgb2Zmc2V0KCkgPT0gdGV4dFJlbmRlcmVyLT5uZXh0T2Zmc2V0
KHRleHRSZW5kZXJlci0+cHJldmlvdXNPZmZzZXQob2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX29mZnNldCA9PSAwIHx8IG1fb2Zmc2V0ID09IHRleHRSZW5kZXJlci0+bmV4dE9mZnNl
dCh0ZXh0UmVuZGVyZXItPnByZXZpb3VzT2Zmc2V0KG1fb2Zmc2V0KSk7CiAgICAgfQogICAgIAog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTYzNiwxMyArNjM2LDEzIEBAIGJvb2wgUG9zaXRpb246Omlz
UmVuZGVyZWRDaGFyYWN0ZXIoKSBjb25zdAogICAgIAogICAgIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBi
b3ggPSB0ZXh0UmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRl
eHRCb3goKSkgewotICAgICAgICBpZiAob2Zmc2V0KCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGJveC0+
c3RhcnQoKSkgJiYgIXRleHRSZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSkgeworICAg
ICAgICBpZiAobV9vZmZzZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KGJveC0+c3RhcnQoKSkgJiYgIXRl
eHRSZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSkgewogICAgICAgICAgICAgLy8gVGhl
IG9mZnNldCB3ZSdyZSBsb29raW5nIGZvciBpcyBiZWZvcmUgdGhpcyBub2RlCiAgICAgICAgICAg
ICAvLyB0aGlzIG1lYW5zIHRoZSBvZmZzZXQgbXVzdCBiZSBpbiBjb250ZW50IHRoYXQgaXMKICAg
ICAgICAgICAgIC8vIG5vdCByZW5kZXJlZC4gUmV0dXJuIGZhbHNlLgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZzZXQoKSA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KGJveC0+c3RhcnQoKSkgJiYgb2Zmc2V0KCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGJveC0+
c3RhcnQoKSArIGJveC0+bGVuKCkpKQorICAgICAgICBpZiAobV9vZmZzZXQgPj0gc3RhdGljX2Nh
c3Q8aW50Pihib3gtPnN0YXJ0KCkpICYmIG1fb2Zmc2V0IDwgc3RhdGljX2Nhc3Q8aW50Pihib3gt
PnN0YXJ0KCkgKyBib3gtPmxlbigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTY3MCwxMSArNjcwLDExIEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZl
cmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZwb3MpIGNvbnN0CiAgICAgICAgIGlmIChub2Rl
KCktPmhhc1RhZ05hbWUoYnJUYWcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIGlmIChvZmZzZXQoKSA9PSBwb3Mub2Zmc2V0KCkpCisgICAgICAgIGlmIChtX29mZnNldCA9
PSBwb3MubV9vZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAK
ICAgICAgICAgaWYgKCFub2RlKCktPmlzVGV4dE5vZGUoKSAmJiAhcG9zLm5vZGUoKS0+aXNUZXh0
Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0KCkgIT0gcG9zLm9mZnNldCgpKQorICAg
ICAgICAgICAgaWYgKG1fb2Zmc2V0ICE9IHBvcy5tX29mZnNldCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0OCw3ICs3NDgsNyBAQCBQb3NpdGlv
biBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHks
IGJvb2wgY29uc2lkZXJObwogICAgIFBvc2l0aW9uIHByZXYgPSBwcmV2aW91c0NoYXJhY3RlclBv
c2l0aW9uKGFmZmluaXR5KTsKICAgICBpZiAocHJldiAhPSAqdGhpcyAmJiBwcmV2Lm5vZGUoKS0+
aW5TYW1lQ29udGFpbmluZ0Jsb2NrRmxvd0VsZW1lbnQobm9kZSgpKSAmJiBwcmV2Lm5vZGUoKS0+
aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdGF0aWNfY2FzdDxUZXh0
ICo+KHByZXYubm9kZSgpKS0+ZGF0YSgpOwotICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYu
b2Zmc2V0KCldOworICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYubV9vZmZzZXRdOwogICAg
ICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgOiBpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShj
KSkKICAgICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocHJldikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXY7CkBAIC04MjMsNyArODIzLDcgQEAgc3RhdGljIElubGluZVRleHRC
b3gqIHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAog
dm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KEVBZmZpbml0eSBhZmZpbml0eSwg
VGV4dERpcmVjdGlvbiBwcmltYXJ5RGlyZWN0aW9uLCBJbmxpbmVCb3gqJiBpbmxpbmVCb3gsIGlu
dCYgY2FyZXRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgY2FyZXRPZmZzZXQgPSBvZmZzZXQoKTsKKyAg
ICBjYXJldE9mZnNldCA9IG1fb2Zmc2V0OwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlKCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlci0+aXNUZXh0KCkpIHsKICAgICAg
ICAgaW5saW5lQm94ID0gcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikt
PmlubGluZUJveFdyYXBwZXIoKSA6IDA7CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBQb3NpdGlv
bjo6ZGVidWdQb3NpdGlvbihjb25zdCBjaGFyKiBtc2cpIGNvbnN0CiAgICAgaWYgKGlzTnVsbCgp
KQogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBvc2l0aW9uIFslc106IG51bGxcbiIsIG1zZyk7
CiAgICAgZWxzZQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBvc2l0aW9uIFslc106ICVzIFsl
cF0gYXQgJWRcbiIsIG1zZywgbm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5vZGUo
KSwgb2Zmc2V0KCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBvc2l0aW9uIFslc106ICVz
IFslcF0gYXQgJWRcbiIsIG1zZywgbm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5v
ZGUoKSwgbV9vZmZzZXQpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtOTcxLDcgKzk3MSw3IEBA
IHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdAogICAgIGVsc2UgewogICAgICAgICBjaGFyIHNbMTAyNF07CiAgICAgICAg
IHJlc3VsdCArPSAib2Zmc2V0ICI7Ci0gICAgICAgIHJlc3VsdCArPSBTdHJpbmc6Om51bWJlcihv
ZmZzZXQoKSk7CisgICAgICAgIHJlc3VsdCArPSBTdHJpbmc6Om51bWJlcihtX29mZnNldCk7CiAg
ICAgICAgIHJlc3VsdCArPSAiIG9mICI7CiAgICAgICAgIG5vZGUoKS0+Zm9ybWF0Rm9yRGVidWdn
ZXIocywgc2l6ZW9mKHMpKTsKICAgICAgICAgcmVzdWx0ICs9IHM7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA3N2RlNjc4
Li43MWVlMjQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTUzLDE1ICs1MywxNCBAQCBlbnVtIFBvc2l0aW9uTW92ZVR5
cGUgewogY2xhc3MgUG9zaXRpb24gewogcHVibGljOgogICAgIFJlZlB0cjxOb2RlPiBjb250YWlu
ZXI7Ci0gICAgaW50IHBvc09mZnNldDsgLy8gdG8gYmUgcmVuYW1lZCB0byBvZmZzZXQgd2hlbiB3
ZSBnZXQgcmlkIG9mIG9mZnNldCgpCisgICAgaW50IG1fb2Zmc2V0OwogCi0gICAgUG9zaXRpb24o
KSA6IHBvc09mZnNldCgwKSB7IH0KLSAgICBQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGMsIGlu
dCBvKSA6IGNvbnRhaW5lcihjKSwgcG9zT2Zmc2V0KG8pIHsgfQorICAgIFBvc2l0aW9uKCkgOiBt
X29mZnNldCgwKSB7IH0KKyAgICBQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGMsIGludCBvKSA6
IGNvbnRhaW5lcihjKSwgbV9vZmZzZXQobykgeyB9CiAKLSAgICB2b2lkIGNsZWFyKCkgeyBjb250
YWluZXIuY2xlYXIoKTsgcG9zT2Zmc2V0ID0gMDsgfQorICAgIHZvaWQgY2xlYXIoKSB7IGNvbnRh
aW5lci5jbGVhcigpOyBtX29mZnNldCA9IDA7IH0KIAogICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7
IHJldHVybiBjb250YWluZXIuZ2V0KCk7IH0KLSAgICBpbnQgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gcG9zT2Zmc2V0OyB9CiAgICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50KCkgY29uc3Q7CiAK
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFjb250YWluZXI7IH0KQEAgLTExOCw3
ICsxMTcsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvc2l0
aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKIHsKLSAgICByZXR1cm4gYS5jb250YWluZXIgPT0g
Yi5jb250YWluZXIgJiYgYS5wb3NPZmZzZXQgPT0gYi5wb3NPZmZzZXQ7CisgICAgcmV0dXJuIGEu
Y29udGFpbmVyID09IGIuY29udGFpbmVyICYmIGEubV9vZmZzZXQgPT0gYi5tX29mZnNldDsKIH0K
IAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRp
b24mIGIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmggYi9XZWJD
b3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmgKaW5kZXggNTRmNTAyMC4uOThhMmNjYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBQb3NpdGlv
bkl0ZXJhdG9yKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAgICAgIDogbV9wYXJlbnQocG9zLm5v
ZGUoKSkKLSAgICAgICAgLCBtX2NoaWxkKG1fcGFyZW50LT5jaGlsZE5vZGUocG9zLm9mZnNldCgp
KSkKLSAgICAgICAgLCBtX29mZnNldChtX2NoaWxkID8gMCA6IHBvcy5vZmZzZXQoKSkKKyAgICAg
ICAgLCBtX2NoaWxkKG1fcGFyZW50LT5jaGlsZE5vZGUocG9zLm1fb2Zmc2V0KSkKKyAgICAgICAg
LCBtX29mZnNldChtX2NoaWxkID8gMCA6IHBvcy5tX29mZnNldCkKICAgICB7CiAgICAgfQogICAg
IG9wZXJhdG9yIFBvc2l0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNGZkZTAxOS4uZjc0ZTA5ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cApAQCAtODksNyArODksNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBSYW5nZTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IG93bmVyRG9jdW1lbnQsIFBhc3NSZWZQdHI8TgogCiBQYXNzUmVmUHRy
PFJhbmdlPiBSYW5nZTo6Y3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG93bmVyRG9jdW1lbnQs
IGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJhbmdlKG93bmVyRG9jdW1lbnQsIHN0YXJ0LmNvbnRhaW5lci5nZXQo
KSwgc3RhcnQucG9zT2Zmc2V0LCBlbmQuY29udGFpbmVyLmdldCgpLCBlbmQucG9zT2Zmc2V0KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSYW5nZShvd25lckRvY3VtZW50LCBzdGFydC5jb250
YWluZXIuZ2V0KCksIHN0YXJ0Lm1fb2Zmc2V0LCBlbmQuY29udGFpbmVyLmdldCgpLCBlbmQubV9v
ZmZzZXQpKTsKIH0KIAogUmFuZ2U6On5SYW5nZSgpCkBAIC01MjQsNyArNTI0LDcgQEAgc2hvcnQg
UmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhOb2RlKiBjb250YWluZXJBLCBpbnQgb2Zmc2V0
QSwgTm9kZSogY29udGFpbmUKIAogc2hvcnQgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhj
b25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiB7Ci0gICAgcmV0dXJuIGNvbXBh
cmVCb3VuZGFyeVBvaW50cyhhLmNvbnRhaW5lci5nZXQoKSwgYS5wb3NPZmZzZXQsIGIuY29udGFp
bmVyLmdldCgpLCBiLnBvc09mZnNldCk7CisgICAgcmV0dXJuIGNvbXBhcmVCb3VuZGFyeVBvaW50
cyhhLmNvbnRhaW5lci5nZXQoKSwgYS5tX29mZnNldCwgYi5jb250YWluZXIuZ2V0KCksIGIubV9v
ZmZzZXQpOwogfQogCiBib29sIFJhbmdlOjpib3VuZGFyeVBvaW50c1ZhbGlkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvV2ViQ29yZS9kb20v
UmFuZ2VCb3VuZGFyeVBvaW50LmgKaW5kZXggNGNiN2JmNS4uMzljNzM1ZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKKysrIGIvV2ViQ29yZS9kb20vUmFuZ2VC
b3VuZGFyeVBvaW50LmgKQEAgLTgyLDE2ICs4MiwxNiBAQCBpbmxpbmUgTm9kZSogUmFuZ2VCb3Vu
ZGFyeVBvaW50OjpjaGlsZEJlZm9yZSgpIGNvbnN0CiAKIGlubGluZSBjb25zdCBQb3NpdGlvbiYg
UmFuZ2VCb3VuZGFyeVBvaW50Ojpwb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcG9zaXRp
b24ucG9zT2Zmc2V0ID49IDApCisgICAgaWYgKG1fcG9zaXRpb24ubV9vZmZzZXQgPj0gMCkKICAg
ICAgICAgcmV0dXJuIG1fcG9zaXRpb247CiAgICAgQVNTRVJUKG1fY2hpbGRCZWZvcmUpOwotICAg
IG1fcG9zaXRpb24ucG9zT2Zmc2V0ID0gbV9jaGlsZEJlZm9yZS0+bm9kZUluZGV4KCkgKyAxOwor
ICAgIG1fcG9zaXRpb24ubV9vZmZzZXQgPSBtX2NoaWxkQmVmb3JlLT5ub2RlSW5kZXgoKSArIDE7
CiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKIGlubGluZSBpbnQgUmFuZ2VCb3VuZGFyeVBv
aW50OjpvZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBwb3NpdGlvbigpLnBvc09mZnNldDsK
KyAgICByZXR1cm4gcG9zaXRpb24oKS5tX29mZnNldDsKIH0KIAogaW5saW5lIHZvaWQgUmFuZ2VC
b3VuZGFyeVBvaW50OjpjbGVhcigpCkBAIC0xMDUsNyArMTA1LDcgQEAgaW5saW5lIHZvaWQgUmFu
Z2VCb3VuZGFyeVBvaW50OjpzZXQoUGFzc1JlZlB0cjxOb2RlPiBjb250YWluZXIsIGludCBvZmZz
ZXQsIE5vZGUKICAgICBBU1NFUlQob2Zmc2V0ID49IDApOwogICAgIEFTU0VSVChjaGlsZEJlZm9y
ZSA9PSAob2Zmc2V0ID8gY29udGFpbmVyLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSkgOiAwKSk7CiAg
ICAgbV9wb3NpdGlvbi5jb250YWluZXIgPSBjb250YWluZXI7Ci0gICAgbV9wb3NpdGlvbi5wb3NP
ZmZzZXQgPSBvZmZzZXQ7CisgICAgbV9wb3NpdGlvbi5tX29mZnNldCA9IG9mZnNldDsKICAgICBt
X2NoaWxkQmVmb3JlID0gY2hpbGRCZWZvcmU7CiB9CiAKQEAgLTExMyw5ICsxMTMsOSBAQCBpbmxp
bmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVChtX3Bvc2l0aW9uLmNvbnRhaW5lcik7CiAgICAgQVNTRVJUKG1fcG9zaXRpb24uY29u
dGFpbmVyLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb24ucG9z
T2Zmc2V0ID49IDApOworICAgIEFTU0VSVChtX3Bvc2l0aW9uLm1fb2Zmc2V0ID49IDApOwogICAg
IEFTU0VSVCghbV9jaGlsZEJlZm9yZSk7Ci0gICAgbV9wb3NpdGlvbi5wb3NPZmZzZXQgPSBvZmZz
ZXQ7CisgICAgbV9wb3NpdGlvbi5tX29mZnNldCA9IG9mZnNldDsKIH0KIAogaW5saW5lIHZvaWQg
UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0NoaWxkKE5vZGUqIGNoaWxkKQpAQCAtMTI0LDE0ICsx
MjQsMTQgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0NoaWxkKE5vZGUq
IGNoaWxkKQogICAgIEFTU0VSVChjaGlsZC0+cGFyZW50Tm9kZSgpKTsKICAgICBtX3Bvc2l0aW9u
LmNvbnRhaW5lciA9IGNoaWxkLT5wYXJlbnROb2RlKCk7CiAgICAgbV9jaGlsZEJlZm9yZSA9IGNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICBtX3Bvc2l0aW9uLnBvc09mZnNldCA9IG1fY2hp
bGRCZWZvcmUgPyBpbnZhbGlkT2Zmc2V0IDogMDsKKyAgICBtX3Bvc2l0aW9uLm1fb2Zmc2V0ID0g
bV9jaGlsZEJlZm9yZSA/IGludmFsaWRPZmZzZXQgOiAwOwogfQogCiBpbmxpbmUgdm9pZCBSYW5n
ZUJvdW5kYXJ5UG9pbnQ6OnNldFRvU3RhcnQoUGFzc1JlZlB0cjxOb2RlPiBjb250YWluZXIpCiB7
CiAgICAgQVNTRVJUKGNvbnRhaW5lcik7CiAgICAgbV9wb3NpdGlvbi5jb250YWluZXIgPSBjb250
YWluZXI7Ci0gICAgbV9wb3NpdGlvbi5wb3NPZmZzZXQgPSAwOworICAgIG1fcG9zaXRpb24ubV9v
ZmZzZXQgPSAwOwogICAgIG1fY2hpbGRCZWZvcmUgPSAwOwogfQogCkBAIC0xNDAsMjcgKzE0MCwy
NyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvRW5kKFBhc3NSZWZQdHI8
Tm9kZT4gY29udGFpbmVyKQogICAgIEFTU0VSVChjb250YWluZXIpOwogICAgIG1fcG9zaXRpb24u
Y29udGFpbmVyID0gY29udGFpbmVyOwogICAgIGlmIChtX3Bvc2l0aW9uLmNvbnRhaW5lci0+b2Zm
c2V0SW5DaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgbV9wb3NpdGlvbi5wb3NPZmZzZXQgPSBtX3Bv
c2l0aW9uLmNvbnRhaW5lci0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7CisgICAgICAgIG1fcG9zaXRp
b24ubV9vZmZzZXQgPSBtX3Bvc2l0aW9uLmNvbnRhaW5lci0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7
CiAgICAgICAgIG1fY2hpbGRCZWZvcmUgPSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY2hp
bGRCZWZvcmUgPSBtX3Bvc2l0aW9uLmNvbnRhaW5lci0+bGFzdENoaWxkKCk7Ci0gICAgICAgIG1f
cG9zaXRpb24ucG9zT2Zmc2V0ID0gbV9jaGlsZEJlZm9yZSA/IGludmFsaWRPZmZzZXQgOiAwOwor
ICAgICAgICBtX3Bvc2l0aW9uLm1fb2Zmc2V0ID0gbV9jaGlsZEJlZm9yZSA/IGludmFsaWRPZmZz
ZXQgOiAwOwogICAgIH0KIH0KIAogaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpjaGls
ZEJlZm9yZVdpbGxCZVJlbW92ZWQoKQogewotICAgIEFTU0VSVChtX3Bvc2l0aW9uLnBvc09mZnNl
dCk7CisgICAgQVNTRVJUKG1fcG9zaXRpb24ubV9vZmZzZXQpOwogICAgIG1fY2hpbGRCZWZvcmUg
PSBtX2NoaWxkQmVmb3JlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICBpZiAoIW1fY2hpbGRCZWZv
cmUpCi0gICAgICAgIG1fcG9zaXRpb24ucG9zT2Zmc2V0ID0gMDsKLSAgICBlbHNlIGlmIChtX3Bv
c2l0aW9uLnBvc09mZnNldCA+IDApCi0gICAgICAgIC0tbV9wb3NpdGlvbi5wb3NPZmZzZXQ7Cisg
ICAgICAgIG1fcG9zaXRpb24ubV9vZmZzZXQgPSAwOworICAgIGVsc2UgaWYgKG1fcG9zaXRpb24u
bV9vZmZzZXQgPiAwKQorICAgICAgICAtLW1fcG9zaXRpb24ubV9vZmZzZXQ7CiB9CiAKIGlubGlu
ZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6aW52YWxpZGF0ZU9mZnNldCgpIGNvbnN0CiB7Ci0g
ICAgbV9wb3NpdGlvbi5wb3NPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworICAgIG1fcG9zaXRpb24u
bV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYSwgY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50JiBiKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggZDg4OGFlZC4uODdlZGVmZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC01MjAsNyArNTIwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZShDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbgogICAgIAogICAgIHN0YXJ0ID0gc3RhcnQudXBzdHJlYW0o
KTsgLy8gTW92ZSB1cHN0cmVhbSB0byBlbnN1cmUgd2UgZG8gbm90IGFkZCByZWR1bmRhbnQgc3Bh
bnMuCiAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQubm9kZSgpOwotICAgIGlmIChzdGFydE5v
ZGUtPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5vZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChzdGFy
dE5vZGUpKSAvLyBNb3ZlIG91dCBvZiB0ZXh0IG5vZGUgaWYgcmFuZ2UgZG9lcyBub3QgaW5jbHVk
ZSBpdHMgY2hhcmFjdGVycy4KKyAgICBpZiAoc3RhcnROb2RlLT5pc1RleHROb2RlKCkgJiYgc3Rh
cnQubV9vZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQoc3RhcnROb2RlKSkgLy8gTW92ZSBvdXQgb2Yg
dGV4dCBub2RlIGlmIHJhbmdlIGRvZXMgbm90IGluY2x1ZGUgaXRzIGNoYXJhY3RlcnMuCiAgICAg
ICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwogCiAgICAgLy8g
U3RvcmUgYXdheSBmb250IHNpemUgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcyB0byB0aGUgZG9j
dW1lbnQuCkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJ
bmxpbmVTdHlsZVRvUmFuZ2UoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWwKIAogICAg
IGJvb2wgcmFuZ2VJc0VtcHR5ID0gZmFsc2U7CiAKLSAgICBpZiAoc3RhcnQub2Zmc2V0KCkgPj0g
Y2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgeworICAgIGlmIChzdGFydC5tX29mZnNldCA+
PSBjYXJldE1heE9mZnNldChzdGFydC5ub2RlKCkpKSB7CiAgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKCk7CiAgICAgICAgIFBvc2l0aW9uIG5ld1N0YXJ0ID0gUG9zaXRpb24o
bm9kZSwgMCk7CiAgICAgICAgIGlmIChSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKGVuZCwg
bmV3U3RhcnQpIDwgMCkKQEAgLTg3OCw3ICs4NzgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlVG9SYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5
bAogICAgIGlmICghcmFuZ2VJc0VtcHR5KSB7CiAgICAgICAgIC8vIHBhc3RFbmROb2RlIGlzIHRo
ZSBub2RlIGFmdGVyIHRoZSBsYXN0IGZ1bGx5IHNlbGVjdGVkIG5vZGUuCiAgICAgICAgIE5vZGUq
IHBhc3RFbmROb2RlID0gZW5kLm5vZGUoKTsKLSAgICAgICAgaWYgKGVuZC5vZmZzZXQoKSA+PSBj
YXJldE1heE9mZnNldChlbmQubm9kZSgpKSkKKyAgICAgICAgaWYgKGVuZC5tX29mZnNldCA+PSBj
YXJldE1heE9mZnNldChlbmQubm9kZSgpKSkKICAgICAgICAgICAgIHBhc3RFbmROb2RlID0gZW5k
Lm5vZGUoKS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogICAgICAgICAvLyBGSVhNRTogQ2FsbGVy
cyBzaG91bGQgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBvbiBhIFJhbmdlIHRoYXQgaW5jbHVkZXMg
dGhlIGJyCiAgICAgICAgIC8vIGlmIHRoZXkgd2FudCBzdHlsZSBhcHBsaWVkIHRvIHRoZSBlbXB0
eSBsaW5lLgpAQCAtMTIzOSwxNCArMTIzOSwxNCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVJbmxpbmVTdHlsZShQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPgog
ICAgICAgICAgICAgICAgIGlmIChzLm5vZGUoKSA9PSBlbGVtKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFNpbmNlIGVsZW0gbXVzdCBoYXZlIGJlZW4gZnVsbHkgc2VsZWN0ZWQsIGFuZCBpdCBp
cyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHNlbGVjdGlvbiwg
aXQgaXMgY2xlYXIgd2UgY2FuIHNldCB0aGUgbmV3IHMgb2Zmc2V0IHRvIDAuCi0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChzLm9mZnNldCgpIDw9IGNhcmV0TWluT2Zmc2V0KHMubm9kZSgpKSk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzLm1fb2Zmc2V0IDw9IGNhcmV0TWluT2Zmc2V0
KHMubm9kZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBQb3NpdGlvbihuZXh0LCAwKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGUubm9kZSgpID09IGVsZW0p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgZWxlbSBtdXN0IGhhdmUgYmVlbiBmdWxs
eSBzZWxlY3RlZCwgYW5kIGl0IGlzIGF0IHRoZSBlbmQKICAgICAgICAgICAgICAgICAgICAgLy8g
b2YgdGhlIHNlbGVjdGlvbiwgaXQgaXMgY2xlYXIgd2UgY2FuIHNldCB0aGUgbmV3IGUgb2Zmc2V0
IHRvCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBtYXggcmFuZ2Ugb2Zmc2V0IG9mIHByZXYu
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChlLm9mZnNldCgpID49IG1heFJhbmdlT2Zmc2V0
KGUubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlLm1fb2Zmc2V0ID49IG1h
eFJhbmdlT2Zmc2V0KGUubm9kZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIGUgPSBQb3NpdGlv
bihwcmV2LCBtYXhSYW5nZU9mZnNldChwcmV2KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bm9k
ZUZ1bGx5U2VsZWN0ZWQoTm9kZSAqbm9kZSwgY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb24KICAg
ICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKIAogICAgIFBvc2l0aW9uIHBvcyA9IFBv
c2l0aW9uKG5vZGUsIG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpLnVwc3RyZWFtKCk7Ci0gICAgcmV0
dXJuIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMobm9kZSwgMCwgc3RhcnQubm9kZSgpLCBz
dGFydC5vZmZzZXQoKSkgPj0gMCAmJgorICAgIHJldHVybiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKG5vZGUsIDAsIHN0YXJ0Lm5vZGUoKSwgc3RhcnQubV9vZmZzZXQpID49IDAgJiYKICAg
ICAgICAgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhwb3MsIGVuZCkgPD0gMDsKIH0KIApA
QCAtMTI3OCw3ICsxMjc4LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5VW5z
ZWxlY3RlZChOb2RlICpub2RlLCBjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGMKIAogICAgIFBvc2l0
aW9uIHBvcyA9IFBvc2l0aW9uKG5vZGUsIG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpLnVwc3RyZWFt
KCk7CiAgICAgYm9vbCBpc0Z1bGx5QmVmb3JlU3RhcnQgPSBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKHBvcywgc3RhcnQpIDwgMDsKLSAgICBib29sIGlzRnVsbHlBZnRlckVuZCA9IFJhbmdl
Ojpjb21wYXJlQm91bmRhcnlQb2ludHMobm9kZSwgMCwgZW5kLm5vZGUoKSwgZW5kLm9mZnNldCgp
KSA+IDA7CisgICAgYm9vbCBpc0Z1bGx5QWZ0ZXJFbmQgPSBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKG5vZGUsIDAsIGVuZC5ub2RlKCksIGVuZC5tX29mZnNldCkgPiAwOwogCiAgICAgcmV0
dXJuIGlzRnVsbHlCZWZvcmVTdGFydCB8fCBpc0Z1bGx5QWZ0ZXJFbmQ7CiB9CkBAIC0xMjg2LDEx
ICsxMjg2LDExIEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVVuc2VsZWN0ZWQo
Tm9kZSAqbm9kZSwgY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjCiAKIGJvb2wgQXBwbHlTdHlsZUNv
bW1hbmQ6OnNwbGl0VGV4dEF0U3RhcnRJZk5lZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNv
bnN0IFBvc2l0aW9uICZlbmQpCiB7Ci0gICAgaWYgKHN0YXJ0Lm5vZGUoKS0+aXNUZXh0Tm9kZSgp
ICYmIHN0YXJ0Lm9mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgpKSAmJiBzdGFy
dC5vZmZzZXQoKSA8IGNhcmV0TWF4T2Zmc2V0KHN0YXJ0Lm5vZGUoKSkpIHsKLSAgICAgICAgaW50
IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHN0YXJ0
Lm9mZnNldCgpIDogMDsKKyAgICBpZiAoc3RhcnQubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgc3Rh
cnQubV9vZmZzZXQgPiBjYXJldE1pbk9mZnNldChzdGFydC5ub2RlKCkpICYmIHN0YXJ0Lm1fb2Zm
c2V0IDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgeworICAgICAgICBpbnQgZW5kT2Zm
c2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8gc3RhcnQubV9vZmZz
ZXQgOiAwOwogICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydC5u
b2RlKCkpOwotICAgICAgICBzcGxpdFRleHROb2RlKHRleHQsIHN0YXJ0Lm9mZnNldCgpKTsKLSAg
ICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLCAwKSwgUG9zaXRpb24o
ZW5kLm5vZGUoKSwgZW5kLm9mZnNldCgpIC0gZW5kT2Zmc2V0QWRqdXN0bWVudCkpOworICAgICAg
ICBzcGxpdFRleHROb2RlKHRleHQsIHN0YXJ0Lm1fb2Zmc2V0KTsKKyAgICAgICAgdXBkYXRlU3Rh
cnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLCAwKSwgUG9zaXRpb24oZW5kLm5vZGUoKSwgZW5k
Lm1fb2Zmc2V0IC0gZW5kT2Zmc2V0QWRqdXN0bWVudCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI5OCwxNSArMTI5OCwxNSBAQCBib29sIEFw
cGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoY29uc3QgUG9zaXRpb24g
JnN0YXJ0LCBjb25zdCBQbwogCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdEVu
ZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKIHsK
LSAgICBpZiAoZW5kLm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIGVuZC5vZmZzZXQoKSA+IGNhcmV0
TWluT2Zmc2V0KGVuZC5ub2RlKCkpICYmIGVuZC5vZmZzZXQoKSA8IGNhcmV0TWF4T2Zmc2V0KGVu
ZC5ub2RlKCkpKSB7CisgICAgaWYgKGVuZC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBlbmQubV9v
ZmZzZXQgPiBjYXJldE1pbk9mZnNldChlbmQubm9kZSgpKSAmJiBlbmQubV9vZmZzZXQgPCBjYXJl
dE1heE9mZnNldChlbmQubm9kZSgpKSkgewogICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nh
c3Q8VGV4dCAqPihlbmQubm9kZSgpKTsKLSAgICAgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0LCBlbmQu
b2Zmc2V0KCkpOworICAgICAgICBzcGxpdFRleHROb2RlKHRleHQsIGVuZC5tX29mZnNldCk7CiAg
ICAgICAgIAogICAgICAgICBOb2RlICpwcmV2Tm9kZSA9IHRleHQtPnByZXZpb3VzU2libGluZygp
OwogICAgICAgICBBU1NFUlQocHJldk5vZGUpOwogICAgICAgICBOb2RlICpzdGFydE5vZGUgPSBz
dGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZOb2RlIDogc3RhcnQubm9kZSgpOwogICAg
ICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24o
c3RhcnROb2RlLCBzdGFydC5vZmZzZXQoKSksIFBvc2l0aW9uKHByZXZOb2RlLCBjYXJldE1heE9m
ZnNldChwcmV2Tm9kZSkpKTsKKyAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnRO
b2RlLCBzdGFydC5tX29mZnNldCksIFBvc2l0aW9uKHByZXZOb2RlLCBjYXJldE1heE9mZnNldChw
cmV2Tm9kZSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEzMTQsMTIgKzEzMTQsMTIgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRU
ZXh0QXRFbmRJZk5lZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2kKIAogYm9v
bCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnRJZk5lZWRlZChjb25z
dCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCiB7Ci0gICAgaWYgKHN0YXJ0
Lm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIHN0YXJ0Lm9mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQo
c3RhcnQubm9kZSgpKSAmJiBzdGFydC5vZmZzZXQoKSA8IGNhcmV0TWF4T2Zmc2V0KHN0YXJ0Lm5v
ZGUoKSkpIHsKLSAgICAgICAgaW50IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydC5ub2RlKCkg
PT0gZW5kLm5vZGUoKSA/IHN0YXJ0Lm9mZnNldCgpIDogMDsKKyAgICBpZiAoc3RhcnQubm9kZSgp
LT5pc1RleHROb2RlKCkgJiYgc3RhcnQubV9vZmZzZXQgPiBjYXJldE1pbk9mZnNldChzdGFydC5u
b2RlKCkpICYmIHN0YXJ0Lm1fb2Zmc2V0IDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkg
eworICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQu
bm9kZSgpID8gc3RhcnQubV9vZmZzZXQgOiAwOwogICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGlj
X2Nhc3Q8VGV4dCAqPihzdGFydC5ub2RlKCkpOwotICAgICAgICBzcGxpdFRleHROb2RlQ29udGFp
bmluZ0VsZW1lbnQodGV4dCwgc3RhcnQub2Zmc2V0KCkpOworICAgICAgICBzcGxpdFRleHROb2Rl
Q29udGFpbmluZ0VsZW1lbnQodGV4dCwgc3RhcnQubV9vZmZzZXQpOwogCi0gICAgICAgIHVwZGF0
ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Lm5vZGUoKS0+cGFyZW50Tm9kZSgpLCBzdGFydC5ub2Rl
KCktPm5vZGVJbmRleCgpKSwgUG9zaXRpb24oZW5kLm5vZGUoKSwgZW5kLm9mZnNldCgpIC0gZW5k
T2Zmc2V0QWRqdXN0bWVudCkpOworICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFy
dC5ub2RlKCktPnBhcmVudE5vZGUoKSwgc3RhcnQubm9kZSgpLT5ub2RlSW5kZXgoKSksIFBvc2l0
aW9uKGVuZC5ub2RlKCksIGVuZC5tX29mZnNldCAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMjcsMTUg
KzEzMjcsMTUgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3Rh
cnRJZk5lZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGMKIAogYm9vbCBBcHBseVN0eWxlQ29t
bWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0RW5kSWZOZWVkZWQoY29uc3QgUG9zaXRpb24gJnN0YXJ0
LCBjb25zdCBQb3NpdGlvbiAmZW5kKQogewotICAgIGlmIChlbmQubm9kZSgpLT5pc1RleHROb2Rl
KCkgJiYgZW5kLm9mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoZW5kLm5vZGUoKSkgJiYgZW5kLm9m
ZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoZW5kLm5vZGUoKSkpIHsKKyAgICBpZiAoZW5kLm5vZGUo
KS0+aXNUZXh0Tm9kZSgpICYmIGVuZC5tX29mZnNldCA+IGNhcmV0TWluT2Zmc2V0KGVuZC5ub2Rl
KCkpICYmIGVuZC5tX29mZnNldCA8IGNhcmV0TWF4T2Zmc2V0KGVuZC5ub2RlKCkpKSB7CiAgICAg
ICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KGVuZC5ub2RlKCkpOwotICAgICAg
ICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQodGV4dCwgZW5kLm9mZnNldCgpKTsKKyAg
ICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50KHRleHQsIGVuZC5tX29mZnNldCk7
CiAKICAgICAgICAgTm9kZSAqcHJldk5vZGUgPSB0ZXh0LT5wYXJlbnQoKS0+cHJldmlvdXNTaWJs
aW5nKCktPmxhc3RDaGlsZCgpOwogICAgICAgICBBU1NFUlQocHJldk5vZGUpOwogICAgICAgICBO
b2RlICpzdGFydE5vZGUgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZOb2RlIDog
c3RhcnQubm9kZSgpOwogICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICAgICAgdXBkYXRl
U3RhcnRFbmQoUG9zaXRpb24oc3RhcnROb2RlLCBzdGFydC5vZmZzZXQoKSksIFBvc2l0aW9uKHBy
ZXZOb2RlLT5wYXJlbnQoKSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsgMSkpOworICAgICAgICB1
cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0Lm1fb2Zmc2V0KSwgUG9zaXRp
b24ocHJldk5vZGUtPnBhcmVudCgpLCBwcmV2Tm9kZS0+bm9kZUluZGV4KCkgKyAxKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzc5LDEwICsx
Mzc5LDEwIEBAIHN0YXRpYyBib29sIGFyZUlkZW50aWNhbEVsZW1lbnRzKE5vZGUgKmZpcnN0LCBO
b2RlICpzZWNvbmQpCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZp
b3VzSWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlvbiAmZW5k
KQogewogICAgIE5vZGUgKnN0YXJ0Tm9kZSA9IHN0YXJ0Lm5vZGUoKTsKLSAgICBpbnQgc3RhcnRP
ZmZzZXQgPSBzdGFydC5vZmZzZXQoKTsKKyAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydC5tX29m
ZnNldDsKIAogICAgIGlmIChpc0F0b21pY05vZGUoc3RhcnQubm9kZSgpKSkgewotICAgICAgICBp
ZiAoc3RhcnQub2Zmc2V0KCkgIT0gMCkKKyAgICAgICAgaWYgKHN0YXJ0Lm1fb2Zmc2V0ICE9IDAp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gbm90ZTogcHJpb3Igc2li
bGluZ3MgY291bGQgYmUgdW5yZW5kZXJlZCBlbGVtZW50cy4gaXQncyBzaWxseSB0byBtaXNzIHRo
ZQpAQCAtMTQxMSw3ICsxNDExLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFy
dFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uICZzdGFydCwKIAogICAgICAg
ICBpbnQgc3RhcnRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnRDaGlsZC0+bm9kZUluZGV4KCk7CiAg
ICAgICAgIGludCBlbmRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnROb2RlID09IGVuZC5ub2RlKCkg
PyBzdGFydE9mZnNldEFkanVzdG1lbnQgOiAwOwotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3Np
dGlvbihzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCksIFBvc2l0aW9uKGVuZC5ub2Rl
KCksIGVuZC5vZmZzZXQoKSArIGVuZE9mZnNldEFkanVzdG1lbnQpKTsgCisgICAgICAgIHVwZGF0
ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXRBZGp1c3RtZW50KSwgUG9z
aXRpb24oZW5kLm5vZGUoKSwgZW5kLm1fb2Zmc2V0ICsgZW5kT2Zmc2V0QWRqdXN0bWVudCkpOyAK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCBib29s
IEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVudGljYWwoY29u
c3QgUG9zaXRpb24gJnN0YXJ0LAogYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRo
TmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVu
ZCkKIHsKICAgICBOb2RlICplbmROb2RlID0gZW5kLm5vZGUoKTsKLSAgICBpbnQgZW5kT2Zmc2V0
ID0gZW5kLm9mZnNldCgpOworICAgIGludCBlbmRPZmZzZXQgPSBlbmQubV9vZmZzZXQ7CiAKICAg
ICBpZiAoaXNBdG9taWNOb2RlKGVuZE5vZGUpKSB7CiAgICAgICAgIGlmIChlbmRPZmZzZXQgPCBj
YXJldE1heE9mZnNldChlbmROb2RlKSkKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIGJvb2wgQXBwbHlT
dHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiAm
c3RhcnQsIGNvbnN0CiAgICAgICAgIEFTU0VSVChzdGFydE5vZGUpOwogCiAgICAgICAgIGludCBl
bmRPZmZzZXQgPSBuZXh0Q2hpbGQgPyBuZXh0Q2hpbGQtPm5vZGVJbmRleCgpIDogbmV4dEVsZW1l
bnQtPmNoaWxkTm9kZXMoKS0+bGVuZ3RoKCk7Ci0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0
aW9uKHN0YXJ0Tm9kZSwgc3RhcnQub2Zmc2V0KCkpLCBQb3NpdGlvbihuZXh0RWxlbWVudCwgZW5k
T2Zmc2V0KSk7CisgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3Rh
cnQubV9vZmZzZXQpLCBQb3NpdGlvbihuZXh0RWxlbWVudCwgZW5kT2Zmc2V0KSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTYwNyw5ICsxNjA3LDkgQEAgdm9pZCBBcHBseVN0
eWxlQ29tbWFuZDo6am9pbkNoaWxkVGV4dE5vZGVzKE5vZGUgKm5vZGUsIGNvbnN0IFBvc2l0aW9u
ICZzdGFydCwgY28KICAgICAgICAgICAgIFRleHQgKmNoaWxkVGV4dCA9IHN0YXRpY19jYXN0PFRl
eHQgKj4oY2hpbGQpOwogICAgICAgICAgICAgVGV4dCAqbmV4dFRleHQgPSBzdGF0aWNfY2FzdDxU
ZXh0ICo+KG5leHQpOwogICAgICAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQubm9kZSgpKQotICAg
ICAgICAgICAgICAgIG5ld1N0YXJ0ID0gUG9zaXRpb24oY2hpbGRUZXh0LCBjaGlsZFRleHQtPmxl
bmd0aCgpICsgc3RhcnQub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIG5ld1N0YXJ0ID0gUG9z
aXRpb24oY2hpbGRUZXh0LCBjaGlsZFRleHQtPmxlbmd0aCgpICsgc3RhcnQubV9vZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKG5leHQgPT0gZW5kLm5vZGUoKSkKLSAgICAgICAgICAgICAgICBuZXdF
bmQgPSBQb3NpdGlvbihjaGlsZFRleHQsIGNoaWxkVGV4dC0+bGVuZ3RoKCkgKyBlbmQub2Zmc2V0
KCkpOworICAgICAgICAgICAgICAgIG5ld0VuZCA9IFBvc2l0aW9uKGNoaWxkVGV4dCwgY2hpbGRU
ZXh0LT5sZW5ndGgoKSArIGVuZC5tX29mZnNldCk7CiAgICAgICAgICAgICBTdHJpbmcgdGV4dFRv
TW92ZSA9IG5leHRUZXh0LT5kYXRhKCk7CiAgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUo
Y2hpbGRUZXh0LCBjaGlsZFRleHQtPmxlbmd0aCgpLCB0ZXh0VG9Nb3ZlKTsKICAgICAgICAgICAg
IHJlbW92ZU5vZGUobmV4dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFu
ZC5jcHAKaW5kZXggNDRhNDRjNS4uOTA5ZWZkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9CcmVha0Js
b2NrcXVvdGVDb21tYW5kLmNwcApAQCAtODUsMTIgKzg1LDEyIEBAIHZvaWQgQnJlYWtCbG9ja3F1
b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gU3BsaXQgYXQgcG9zIGlmIGluIHRoZSBtaWRk
bGUgb2YgYSB0ZXh0IG5vZGUuCiAgICAgaWYgKHN0YXJ0Tm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAg
ICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHN0YXJ0Tm9kZSk7Ci0g
ICAgICAgIGlmICgodW5zaWduZWQpcG9zLm9mZnNldCgpID49IHRleHROb2RlLT5sZW5ndGgoKSkg
eworICAgICAgICBpZiAoKHVuc2lnbmVkKXBvcy5tX29mZnNldCA+PSB0ZXh0Tm9kZS0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
cG9zLm9mZnNldCgpID4gMCkKLSAgICAgICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dE5vZGUsIHBv
cy5vZmZzZXQoKSk7Ci0gICAgfSBlbHNlIGlmIChwb3Mub2Zmc2V0KCkgPiAwKSB7CisgICAgICAg
IH0gZWxzZSBpZiAocG9zLm1fb2Zmc2V0ID4gMCkKKyAgICAgICAgICAgIHNwbGl0VGV4dE5vZGUo
dGV4dE5vZGUsIHBvcy5tX29mZnNldCk7CisgICAgfSBlbHNlIGlmIChwb3MubV9vZmZzZXQgPiAw
KSB7CiAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwog
ICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAppbmRleCA3M2QxYzQxLi4zNzM3NWQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRDaGls
ZCwgY29uc3QgUG9zaQogICAgIC8vIGxpa2V3aXNlIGZvciByZXBsYWNlZCBlbGVtZW50cywgYnJz
LCBldGMuCiAgICAgUG9zaXRpb24gcCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChlZGl0aW5n
UG9zaXRpb24pOwogICAgIE5vZGUqIHJlZkNoaWxkID0gcC5ub2RlKCk7Ci0gICAgaW50IG9mZnNl
dCA9IHAub2Zmc2V0KCk7CisgICAgaW50IG9mZnNldCA9IHAubV9vZmZzZXQ7CiAgICAgCiAgICAg
aWYgKGNhbkhhdmVDaGlsZHJlbkZvckVkaXRpbmcocmVmQ2hpbGQpKSB7CiAgICAgICAgIE5vZGUq
IGNoaWxkID0gcmVmQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKQEAgLTMyMywxMyArMzIzLDEzIEBAIFBv
c2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0
IFBvc2l0aW9uJiBwb3MpCiAgICAgCiAgICAgTm9kZSogdGFiU3BhbiA9IHRhYlNwYW5Ob2RlKHBv
cy5ub2RlKCkpOwogICAgIAotICAgIGlmIChwb3Mub2Zmc2V0KCkgPD0gY2FyZXRNaW5PZmZzZXQo
cG9zLm5vZGUoKSkpCisgICAgaWYgKHBvcy5tX29mZnNldCA8PSBjYXJldE1pbk9mZnNldChwb3Mu
bm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKICAg
ICAgICAgCi0gICAgaWYgKHBvcy5vZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChwb3Mubm9kZSgp
KSkKKyAgICBpZiAocG9zLm1fb2Zmc2V0ID49IGNhcmV0TWF4T2Zmc2V0KHBvcy5ub2RlKCkpKQog
ICAgICAgICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUodGFiU3Bhbik7CiAKLSAgICBzcGxpdFRl
eHROb2RlQ29udGFpbmluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8VGV4dCAqPihwb3Mubm9kZSgpKSwg
cG9zLm9mZnNldCgpKTsKKyAgICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoc3RhdGlj
X2Nhc3Q8VGV4dCAqPihwb3Mubm9kZSgpKSwgcG9zLm1fb2Zmc2V0KTsKICAgICByZXR1cm4gcG9z
aXRpb25CZWZvcmVOb2RlKHRhYlNwYW4pOwogfQogCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0aW9u
JiBwb3NpdGlvbikKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5kYXRhKCk7CiAgICAgQVNT
RVJUKCF0ZXh0LmlzRW1wdHkoKSk7CiAKLSAgICBpbnQgb2Zmc2V0ID0gcG9zaXRpb24ub2Zmc2V0
KCk7CisgICAgaW50IG9mZnNldCA9IHBvc2l0aW9uLm1fb2Zmc2V0OwogICAgIC8vIElmIG5laXRo
ZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0gb2Ygd2hp
dGVzcGFjZSwgZG8gbm90aGluZy4KICAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0p
KSB7CiAgICAgICAgIG9mZnNldC0tOwpAQCAtNDQ1LDkgKzQ0NSw5IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OnByZXBhcmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9u
JiBwb3NpdGlvCiAgICAgUG9zaXRpb24gcHJldmlvdXMocHJldmlvdXNWaXNpYmxlUG9zLmRlZXBF
cXVpdmFsZW50KCkpOwogICAgIAogICAgIGlmIChpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShwcmV2
aW91c1Zpc2libGVQb3MuY2hhcmFjdGVyQWZ0ZXIoKSkgJiYgcHJldmlvdXMubm9kZSgpLT5pc1Rl
eHROb2RlKCkgJiYgIXByZXZpb3VzLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykpCi0gICAgICAg
IHJlcGxhY2VUZXh0SW5Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihwcmV2aW91cy5ub2RlKCkpLCBw
cmV2aW91cy5vZmZzZXQoKSwgMSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAg
cmVwbGFjZVRleHRJbk5vZGUoc3RhdGljX2Nhc3Q8VGV4dCo+KHByZXZpb3VzLm5vZGUoKSksIHBy
ZXZpb3VzLm1fb2Zmc2V0LCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIGlmIChp
c0NvbGxhcHNpYmxlV2hpdGVzcGFjZSh2aXNpYmxlUG9zLmNoYXJhY3RlckFmdGVyKCkpICYmIHBv
c2l0aW9uLm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmICFwb3NpdGlvbi5ub2RlKCktPmhhc1RhZ05h
bWUoYnJUYWcpKQotICAgICAgICByZXBsYWNlVGV4dEluTm9kZShzdGF0aWNfY2FzdDxUZXh0Kj4o
cG9zaXRpb24ubm9kZSgpKSwgcG9zaXRpb24ub2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSk7CisgICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihw
b3NpdGlvbi5ub2RlKCkpLCBwb3NpdGlvbi5tX29mZnNldCwgMSwgbm9uQnJlYWtpbmdTcGFjZVN0
cmluZygpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVz
cGFjZSgpCkBAIC01MzgsOCArNTM4LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVs
ZXRlSW5zaWduaWZpY2FudFRleHQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgICAg
ICBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwogICAgICAgICBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRl
eHQqPihub2RlKTsKLSAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3RhcnQu
bm9kZSgpID8gc3RhcnQub2Zmc2V0KCkgOiAwOwotICAgICAgICAgICAgaW50IGVuZE9mZnNldCA9
IG5vZGUgPT0gZW5kLm5vZGUoKSA/IGVuZC5vZmZzZXQoKSA6IHRleHROb2RlLT5sZW5ndGgoKTsK
KyAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3RhcnQubm9kZSgpID8gc3Rh
cnQubV9vZmZzZXQgOiAwOworICAgICAgICAgICAgaW50IGVuZE9mZnNldCA9IG5vZGUgPT0gZW5k
Lm5vZGUoKSA/IGVuZC5tX29mZnNldCA6IHRleHROb2RlLT5sZW5ndGgoKTsKICAgICAgICAgICAg
IGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KHRleHROb2RlLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZSA9PSBlbmQubm9kZSgpKQpAQCAtNjEyLDEw
ICs2MTIsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlUGxhY2Vob2xkZXJB
dChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MKICAgICAvLyB0aGUgc3RhcnQgb2Yg
YSBwYXJhZ3JhcGggd2lsbCByZW5kZXIgaXQgc3VwZXJmbHVvdXMuCiAgICAgLy8gRklYTUU6IFRo
aXMgZG9lc24ndCByZW1vdmUgcGxhY2Vob2xkZXJzIGF0IHRoZSBlbmQgb2YgYW5vbnltb3VzIGJs
b2Nrcy4KICAgICBpZiAoaXNFbmRPZkJsb2NrKHZpc2libGVQb3NpdGlvbikgJiYgaXNTdGFydE9m
UGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbikpIHsKLSAgICAgICAgaWYgKHAubm9kZSgpLT5oYXNU
YWdOYW1lKGJyVGFnKSAmJiBwLm9mZnNldCgpID09IDApCisgICAgICAgIGlmIChwLm5vZGUoKS0+
aGFzVGFnTmFtZShiclRhZykgJiYgcC5tX29mZnNldCA9PSAwKQogICAgICAgICAgICAgcmVtb3Zl
Tm9kZShwLm5vZGUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGxpbmVCcmVha0V4aXN0c0F0UG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uKSkKLSAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZShzdGF0
aWNfY2FzdDxUZXh0Kj4ocC5ub2RlKCkpLCBwLm9mZnNldCgpLCAxKTsKKyAgICAgICAgICAgIGRl
bGV0ZVRleHRGcm9tTm9kZShzdGF0aWNfY2FzdDxUZXh0Kj4ocC5ub2RlKCkpLCBwLm1fb2Zmc2V0
LCAxKTsKICAgICB9CiB9CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJh
Z3JhcAogICAgIC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVh
dGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0
YXJ0UmFuZ2VDb21wbGlhbnQgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoc3RhcnQpOwogICAg
IFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVu
ZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRSYW5nZUNvbXBsaWFudC5ub2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQub2Zmc2V0KCks
IGVuZFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQub2Zmc2V0KCkpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0
UmFuZ2VDb21wbGlhbnQubm9kZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50Lm1fb2Zmc2V0LCBlbmRS
YW5nZUNvbXBsaWFudC5ub2RlKCksIGVuZFJhbmdlQ29tcGxpYW50Lm1fb2Zmc2V0KTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGFuIGluZWZmaWNpZW50IHdheSB0byBwcmVzZXJ2ZSBzdHlsZSBv
biBub2RlcyBpbiB0aGUgcGFyYWdyYXBoIHRvIG1vdmUuICBJdCAKICAgICAvLyBzaG91bGRuJ3Qg
bWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdyYXBocyB3aWxsIHVzdWFsbHkgYmUgcXVp
dGUgc21hbGwuCkBAIC04MjcsNyArODI3LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAg
ICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkgPT0gMSkKICAgICAgICAgICAgICAgICBy
ZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7CiAgICAgICAgICAgICBlbHNlIAotICAg
ICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgcG9zaXRpb24ub2Zmc2V0
KCksIDEpOworICAgICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgcG9z
aXRpb24ubV9vZmZzZXQsIDEpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05NDksNyArOTQ5LDcg
QEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVv
dGVkUGFyYWdyYXBoKCkKICAgICAgICAgcmVtb3ZlTm9kZShjYXJldFBvcy5ub2RlKCkpOwogICAg
ICAgICBwcnVuZShiZWZvcmVCUi5ub2RlKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChjYXJldFBvcy5vZmZzZXQoKSA9PSAwKTsKKyAgICAgICAgQVNTRVJUKGNhcmV0UG9zLm1fb2Zm
c2V0ID09IDApOwogICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihj
YXJldFBvcy5ub2RlKCkpOwogICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gdGV4dE5vZGUtPnBh
cmVudE5vZGUoKTsKICAgICAgICAgLy8gVGhlIHByZXNlcnZlZCBuZXdsaW5lIG11c3QgYmUgdGhl
IGZpcnN0IHRoaW5nIGluIHRoZSBub2RlLCBzaW5jZSBvdGhlcndpc2UgdGhlIHByZXZpb3VzCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZThiNzQ4Yi4u
ODUwYzFlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92
YWwoTm9kZSogbm9kZSwgUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmIChwb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChub2RlLT5wYXJlbnQoKSA9PSBwb3Np
dGlvbi5ub2RlKCkgJiYgbm9kZS0+bm9kZUluZGV4KCkgPCAodW5zaWduZWQpcG9zaXRpb24ub2Zm
c2V0KCkpCi0gICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3Np
dGlvbi5vZmZzZXQoKSAtIDEpOworICAgIGlmIChub2RlLT5wYXJlbnQoKSA9PSBwb3NpdGlvbi5u
b2RlKCkgJiYgbm9kZS0+bm9kZUluZGV4KCkgPCAodW5zaWduZWQpcG9zaXRpb24ubV9vZmZzZXQp
CisgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3NpdGlvbi5t
X29mZnNldCAtIDEpOwogICAgIGlmIChwb3NpdGlvbi5ub2RlKCkgPT0gbm9kZSB8fCBwb3NpdGlv
bi5ub2RlKCktPmlzRGVzY2VuZGFudE9mKG5vZGUpKQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0
aW9uQmVmb3JlTm9kZShub2RlKTsKIH0KQEAgLTM3OSw5ICszNzksOSBAQCB2b2lkIERlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogc3RhdGlj
IHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JUZXh0UmVtb3ZhbChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0
LCBpbnQgY291bnQsIFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24ubm9k
ZSgpID09IG5vZGUpIHsKLSAgICAgICAgaWYgKHBvc2l0aW9uLm9mZnNldCgpID4gb2Zmc2V0ICsg
Y291bnQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKHBvc2l0aW9uLm5vZGUoKSwg
cG9zaXRpb24ub2Zmc2V0KCkgLSBjb3VudCk7Ci0gICAgICAgIGVsc2UgaWYgKHBvc2l0aW9uLm9m
ZnNldCgpID4gb2Zmc2V0KQorICAgICAgICBpZiAocG9zaXRpb24ubV9vZmZzZXQgPiBvZmZzZXQg
KyBjb3VudCkKKyAgICAgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgp
LCBwb3NpdGlvbi5tX29mZnNldCAtIGNvdW50KTsKKyAgICAgICAgZWxzZSBpZiAocG9zaXRpb24u
bV9vZmZzZXQgPiBvZmZzZXQpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKHBvc2l0
aW9uLm5vZGUoKSwgb2Zmc2V0KTsKICAgICB9CiB9CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkZWxldGVUZXh0RnJvbU5vZGUoUGFzc1JlZlB0cjxUZXh0
PiBub2RlLCB1bnNpZ25lZAogCiB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdl
bmVyYWxEZWxldGUoKQogewotICAgIGludCBzdGFydE9mZnNldCA9IG1fdXBzdHJlYW1TdGFydC5v
ZmZzZXQoKTsKKyAgICBpbnQgc3RhcnRPZmZzZXQgPSBtX3Vwc3RyZWFtU3RhcnQubV9vZmZzZXQ7
CiAgICAgTm9kZSogc3RhcnROb2RlID0gbV91cHN0cmVhbVN0YXJ0Lm5vZGUoKTsKICAgICAKICAg
ICAvLyBOZXZlciByZW1vdmUgdGhlIHN0YXJ0IGJsb2NrIHVubGVzcyBpdCdzIGEgdGFibGUsIGlu
IHdoaWNoIGNhc2Ugd2Ugd29uJ3QgbWVyZ2UgY29udGVudCBpbi4KQEAgLTQyNSwxNiArNDI1LDE2
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAg
ICAgaWYgKHN0YXJ0Tm9kZSA9PSBtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSB7CiAgICAgICAgIC8v
IFRoZSBzZWxlY3Rpb24gdG8gZGVsZXRlIGlzIGFsbCBpbiBvbmUgbm9kZS4KICAgICAgICAgaWYg
KCFzdGFydE5vZGUtPnJlbmRlcmVyKCkgfHwgCi0gICAgICAgICAgICAoc3RhcnRPZmZzZXQgPT0g
MCAmJiBtX2Rvd25zdHJlYW1FbmQub2Zmc2V0KCkgPj0gbWF4RGVlcE9mZnNldChzdGFydE5vZGUp
KSkgeworICAgICAgICAgICAgKHN0YXJ0T2Zmc2V0ID09IDAgJiYgbV9kb3duc3RyZWFtRW5kLm1f
b2Zmc2V0ID49IG1heERlZXBPZmZzZXQoc3RhcnROb2RlKSkpIHsKICAgICAgICAgICAgIC8vIGp1
c3QgZGVsZXRlCiAgICAgICAgICAgICByZW1vdmVOb2RlKHN0YXJ0Tm9kZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAobV9kb3duc3RyZWFtRW5kLm9mZnNldCgpIC0gc3RhcnRPZmZzZXQgPiAwKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0IC0gc3RhcnRPZmZzZXQg
PiAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhcnROb2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBpbiBhIHRleHQgbm9kZSB0aGF0IG5lZWRzIHRvIGJlIHRyaW1tZWQKICAg
ICAgICAgICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydE5vZGUp
OwotICAgICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0LCBzdGFydE9mZnNldCwg
bV9kb3duc3RyZWFtRW5kLm9mZnNldCgpIC0gc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAg
IGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0LCBzdGFydE9mZnNldCwgbV9kb3duc3RyZWFtRW5kLm1f
b2Zmc2V0IC0gc3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICByZW1vdmVDaGlsZHJlbkluUmFuZ2Uoc3RhcnROb2RlLCBzdGFydE9mZnNldCwgbV9kb3du
c3RyZWFtRW5kLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDaGlsZHJlbkluUmFu
Z2Uoc3RhcnROb2RlLCBzdGFydE9mZnNldCwgbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBtX2VuZGluZ1Bvc2l0aW9uID0gbV91cHN0cmVhbVN0YXJ0OwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00NjUsMTQgKzQ2NSwxNCBAQCB2b2lkIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgICAgICAgICAgICAgIC8vIGlm
IHdlIGp1c3QgcmVtb3ZlZCBhIG5vZGUgZnJvbSB0aGUgZW5kIGNvbnRhaW5lciwgdXBkYXRlIGVu
ZCBwb3NpdGlvbiBzbyB0aGUKICAgICAgICAgICAgICAgICAvLyBjaGVjayBhYm92ZSB3aWxsIHdv
cmsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpID09IG1fZG93bnN0cmVh
bUVuZC5ub2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm5vZGVJbmRl
eCgpIDwgKHVuc2lnbmVkKW1fZG93bnN0cmVhbUVuZC5vZmZzZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZG93bnN0cmVhbUVuZCA9IFBvc2l0aW9uKG1fZG93bnN0cmVhbUVuZC5ub2RlKCks
IG1fZG93bnN0cmVhbUVuZC5vZmZzZXQoKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+bm9kZUluZGV4KCkgPCAodW5zaWduZWQpbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9kb3duc3RyZWFtRW5kID0gUG9zaXRpb24obV9kb3du
c3RyZWFtRW5kLm5vZGUoKSwgbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0IC0gMSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUobm9kZS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgbm9kZSA9IG5leHROb2RlLmdldCgpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBOb2RlKiBuID0gbm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9kb3duc3RyZWFtRW5kLm5vZGUoKSA9PSBuICYmIG1fZG93bnN0cmVh
bUVuZC5vZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChuKSkgeworICAgICAgICAgICAgICAgIGlm
IChtX2Rvd25zdHJlYW1FbmQubm9kZSgpID09IG4gJiYgbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0
ID49IGNhcmV0TWF4T2Zmc2V0KG4pKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUo
bm9kZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSAwOwogICAgICAgICAgICAg
ICAgIH0gZWxzZQpAQCAtNDgwLDE2ICs0ODAsMTYgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21t
YW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkgIT0gc3RhcnROb2RlICYm
ICFtX3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQu
bm9kZSgpKSAmJiBtX2Rvd25zdHJlYW1FbmQubm9kZSgpLT5pbkRvY3VtZW50KCkgJiYgbV9kb3du
c3RyZWFtRW5kLm9mZnNldCgpID49IGNhcmV0TWluT2Zmc2V0KG1fZG93bnN0cmVhbUVuZC5ub2Rl
KCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9kb3duc3RyZWFtRW5kLm9mZnNldCgpID49IG1heERl
ZXBPZmZzZXQobV9kb3duc3RyZWFtRW5kLm5vZGUoKSkgJiYgIWNhbkhhdmVDaGlsZHJlbkZvckVk
aXRpbmcobV9kb3duc3RyZWFtRW5kLm5vZGUoKSkpIHsKKyAgICAgICAgaWYgKG1fZG93bnN0cmVh
bUVuZC5ub2RlKCkgIT0gc3RhcnROb2RlICYmICFtX3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSAmJiBtX2Rvd25zdHJlYW1FbmQubm9k
ZSgpLT5pbkRvY3VtZW50KCkgJiYgbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0ID49IGNhcmV0TWlu
T2Zmc2V0KG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpKSB7CisgICAgICAgICAgICBpZiAobV9kb3du
c3RyZWFtRW5kLm1fb2Zmc2V0ID49IG1heERlZXBPZmZzZXQobV9kb3duc3RyZWFtRW5kLm5vZGUo
KSkgJiYgIWNhbkhhdmVDaGlsZHJlbkZvckVkaXRpbmcobV9kb3duc3RyZWFtRW5kLm5vZGUoKSkp
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBpdHNlbGYgaXMgZnVsbHkgc2VsZWN0ZWQs
IG5vdCBqdXN0IGl0cyBjb250ZW50cy4gIERlbGV0ZSBpdC4KICAgICAgICAgICAgICAgICByZW1v
dmVOb2RlKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAobV9kb3duc3RyZWFtRW5kLm5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIGluIGEgdGV4dCBub2RlIHRoYXQgbmVlZHMgdG8gYmUg
dHJpbW1lZAogICAgICAgICAgICAgICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4
dCAqPihtX2Rvd25zdHJlYW1FbmQubm9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
ZG93bnN0cmVhbUVuZC5vZmZzZXQoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZVRleHRGcm9tTm9kZSh0ZXh0LCAwLCBtX2Rvd25zdHJlYW1FbmQub2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0ID4gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHQsIDAsIG1fZG93bnN0
cmVhbUVuZC5tX29mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1F
bmQgPSBQb3NpdGlvbih0ZXh0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiBvZiBtX2Rvd25zdHJlYW1FbmQubm9kZSgpIHRoYXQg
Y29tZSBhZnRlciBtX3Vwc3RyZWFtU3RhcnQuCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG4t
Pm5vZGVJbmRleCgpICsgMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICByZW1vdmVDaGlsZHJlbkluUmFuZ2UobV9kb3duc3RyZWFtRW5kLm5vZGUoKSwgb2Zmc2V0
LCBtX2Rvd25zdHJlYW1FbmQub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZW1vdmVD
aGlsZHJlbkluUmFuZ2UobV9kb3duc3RyZWFtRW5kLm5vZGUoKSwgb2Zmc2V0LCBtX2Rvd25zdHJl
YW1FbmQubV9vZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1FbmQgPSBQ
b3NpdGlvbihtX2Rvd25zdHJlYW1FbmQubm9kZSgpLCBvZmZzZXQpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTUyMiwxMiArNTIyLDEyIEBAIHZvaWQgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6Zml4dXBXaGl0ZXNwYWNlKCkKICAgICBpZiAobV9sZWFkaW5nV2hpdGVzcGFj
ZS5pc05vdE51bGwoKSAmJiAhbV9sZWFkaW5nV2hpdGVzcGFjZS5pc1JlbmRlcmVkQ2hhcmFjdGVy
KCkpIHsKICAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obV9sZWFk
aW5nV2hpdGVzcGFjZS5ub2RlKCkpOwogICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJl
cigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSk7Ci0gICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHRleHROb2RlLCBtX2xlYWRpbmdXaGl0ZXNw
YWNlLm9mZnNldCgpLCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOworICAgICAgICByZXBs
YWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgbV9sZWFkaW5nV2hpdGVzcGFjZS5tX29mZnNldCwgMSwg
bm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgaWYgKG1fdHJhaWxpbmdXaGl0
ZXNwYWNlLmlzTm90TnVsbCgpICYmICFtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc1JlbmRlcmVkQ2hh
cmFjdGVyKCkpIHsKICAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4o
bV90cmFpbGluZ1doaXRlc3BhY2Uubm9kZSgpKTsKICAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+
cmVuZGVyZXIoKSB8fHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRl
U3BhY2UoKSk7Ci0gICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHRleHROb2RlLCBtX3RyYWlsaW5n
V2hpdGVzcGFjZS5vZmZzZXQoKSwgMSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAg
ICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm1fb2Zm
c2V0LCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCAxODg4NzY4Li5lZjI5NzQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTI5MCw5ICsxMjkw
LDkgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgVHlwaW5nQ29tbWFuZDo6aW5z
ZXJ0VGV4dChtX2ZyYW1lLT5kb2N1bWVudCgpLCB0ZXh0LCB0cnVlLCB0cnVlKTsKIAogICAgICAg
ICBOb2RlKiBiYXNlTm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5iYXNlKCkubm9kZSgpOwot
ICAgICAgICB1bnNpZ25lZCBiYXNlT2Zmc2V0ID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmJhc2Uo
KS5vZmZzZXQoKTsKKyAgICAgICAgdW5zaWduZWQgYmFzZU9mZnNldCA9IG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5iYXNlKCkubV9vZmZzZXQ7CiAgICAgICAgIE5vZGUqIGV4dGVudE5vZGUgPSBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCkubm9kZSgpOwotICAgICAgICB1bnNpZ25lZCBleHRl
bnRPZmZzZXQgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCkub2Zmc2V0KCk7CisgICAg
ICAgIHVuc2lnbmVkIGV4dGVudE9mZnNldCA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5leHRlbnQo
KS5tX29mZnNldDsKIAogICAgICAgICBpZiAoYmFzZU5vZGUgJiYgYmFzZU5vZGUgPT0gZXh0ZW50
Tm9kZSAmJiBiYXNlTm9kZS0+aXNUZXh0Tm9kZSgpICYmIGJhc2VPZmZzZXQgKyB0ZXh0Lmxlbmd0
aCgpID09IGV4dGVudE9mZnNldCkgewogICAgICAgICAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSBz
dGF0aWNfY2FzdDxUZXh0Kj4oYmFzZU5vZGUpOwpAQCAtMTY5Niw3ICsxNjk2LDcgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChwb3NpdGlvbik7Ci0g
ICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRp
b24ubm9kZSgpLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLm9mZnNldCgpLCBlYyk7CisgICAgICAg
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24ubm9k
ZSgpLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLm1fb2Zmc2V0LCBlYyk7CiAgICAgICAgIHN0YXJ0
ZWRXaXRoU2VsZWN0aW9uID0gZmFsc2U7ICAgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAgICAgfQog
ICAgIApAQCAtMjI2OCwxMyArMjI2OCwxMyBAQCBib29sIEVkaXRvcjo6Z2V0Q29tcG9zaXRpb25T
ZWxlY3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aQogICAg
IGlmIChlbmQubm9kZSgpICE9IG1fY29tcG9zaXRpb25Ob2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0Lm9mZnNldCgpKSA8IG1f
Y29tcG9zaXRpb25TdGFydCkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0Lm1f
b2Zmc2V0KSA8IG1fY29tcG9zaXRpb25TdGFydCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kLm9mZnNldCgpKSA+IG1fY29tcG9zaXRpb25F
bmQpCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQubV9vZmZzZXQpID4gbV9jb21w
b3NpdGlvbkVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2VsZWN0aW9uU3RhcnQg
PSBzdGFydC5vZmZzZXQoKSAtIG1fY29tcG9zaXRpb25TdGFydDsKLSAgICBzZWxlY3Rpb25FbmQg
PSBzdGFydC5vZmZzZXQoKSAtIG1fY29tcG9zaXRpb25FbmQ7CisgICAgc2VsZWN0aW9uU3RhcnQg
PSBzdGFydC5tX29mZnNldCAtIG1fY29tcG9zaXRpb25TdGFydDsKKyAgICBzZWxlY3Rpb25FbmQg
PSBzdGFydC5tX29mZnNldCAtIG1fY29tcG9zaXRpb25FbmQ7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAppbmRleCA4NTdh
ZTI2Li45ODRjNmYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICAgICAgCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbihQ
b3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIDApKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nUG9zaXRpb24pKTsKLSAgICB9IGVsc2UgaWYgKHBv
cy5vZmZzZXQoKSA8PSBjYXJldE1pbk9mZnNldChwb3Mubm9kZSgpKSkgeworICAgIH0gZWxzZSBp
ZiAocG9zLm1fb2Zmc2V0IDw9IGNhcmV0TWluT2Zmc2V0KHBvcy5ub2RlKCkpKSB7CiAgICAgICAg
IGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQuZ2V0KCksIHBvcyk7CiAgICAgICAgIAogICAgICAg
ICAvLyBJbnNlcnQgYW4gZXh0cmEgYnIgb3IgJ1xuJyBpZiB0aGUganVzdCBpbnNlcnRlZCBvbmUg
Y29sbGFwc2VkLgpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIERPV05TVFJFQU0pKTsKICAg
ICAvLyBJZiB3ZSdyZSBpbnNlcnRpbmcgYWZ0ZXIgYWxsIG9mIHRoZSByZW5kZXJlZCB0ZXh0IGlu
IGEgdGV4dCBub2RlLCBvciBpbnRvIGEgbm9uLXRleHQgbm9kZSwKICAgICAvLyBhIHNpbXBsZSBp
bnNlcnRpb24gaXMgc3VmZmljaWVudC4KLSAgICB9IGVsc2UgaWYgKHBvcy5vZmZzZXQoKSA+PSBj
YXJldE1heE9mZnNldChwb3Mubm9kZSgpKSB8fCAhcG9zLm5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7
CisgICAgfSBlbHNlIGlmIChwb3MubV9vZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQocG9zLm5vZGUo
KSkgfHwgIXBvcy5ub2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBpbnNlcnROb2RlQXQo
bm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihwb3NpdGlvbkFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dO
U1RSRUFNKSk7CiAgICAgfSBlbHNlIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEluc2VydExp
bmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAKICAgICAgICAgLy8gRG8gdGhlIHNw
bGl0CiAgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHBvcy5ub2Rl
KCkpOwotICAgICAgICBzcGxpdFRleHROb2RlKHRleHROb2RlLCBwb3Mub2Zmc2V0KCkpOworICAg
ICAgICBzcGxpdFRleHROb2RlKHRleHROb2RlLCBwb3MubV9vZmZzZXQpOwogICAgICAgICBpbnNl
cnROb2RlQmVmb3JlKG5vZGVUb0luc2VydCwgdGV4dE5vZGUpOwogICAgICAgICBQb3NpdGlvbiBl
bmRpbmdQb3NpdGlvbiA9IFBvc2l0aW9uKHRleHROb2RlLCAwKTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAg
Yi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5k
ZXggYjgxNDg5ZS4uZWMzODgxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBh
cmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGlmIChpc0Zp
cnN0SW5CbG9jayAmJiAhbmVzdE5ld0Jsb2NrKQogICAgICAgICAgICAgcmVmTm9kZSA9IHN0YXJ0
QmxvY2s7CiAgICAgICAgIGVsc2UgaWYgKHBvcy5ub2RlKCkgPT0gc3RhcnRCbG9jayAmJiBuZXN0
TmV3QmxvY2spIHsKLSAgICAgICAgICAgIHJlZk5vZGUgPSBzdGFydEJsb2NrLT5jaGlsZE5vZGUo
cG9zLm9mZnNldCgpKTsKKyAgICAgICAgICAgIHJlZk5vZGUgPSBzdGFydEJsb2NrLT5jaGlsZE5v
ZGUocG9zLm1fb2Zmc2V0KTsKICAgICAgICAgICAgIEFTU0VSVChyZWZOb2RlKTsgLy8gbXVzdCBi
ZSB0cnVlIG9yIHdlJ2QgYmUgaW4gdGhlIGVuZCBvZiBibG9jayBjYXNlCiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgcmVmTm9kZSA9IHBvcy5ub2RlKCk7CkBAIC0yNDgsMTUgKzI0OCwxNSBA
QCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlm
IChsZWFkaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSkgewogICAgICAgICBUZXh0KiB0ZXh0Tm9k
ZSA9IHN0YXRpY19jYXN0PFRleHQqPihsZWFkaW5nV2hpdGVzcGFjZS5ub2RlKCkpOwogICAgICAg
ICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7Ci0gICAgICAgIHJlcGxhY2VUZXh0SW5Ob2Rl
KHRleHROb2RlLCBsZWFkaW5nV2hpdGVzcGFjZS5vZmZzZXQoKSwgMSwgbm9uQnJlYWtpbmdTcGFj
ZVN0cmluZygpKTsKKyAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIGxlYWRpbmdX
aGl0ZXNwYWNlLm1fb2Zmc2V0LCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0K
ICAgICAKICAgICAvLyBTcGxpdCBhdCBwb3MgaWYgaW4gdGhlIG1pZGRsZSBvZiBhIHRleHQgbm9k
ZS4KICAgICBpZiAoc3RhcnROb2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgVGV4dCAqdGV4
dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Tm9kZSk7Ci0gICAgICAgIGJvb2wgYXRF
bmQgPSAodW5zaWduZWQpcG9zLm9mZnNldCgpID49IHRleHROb2RlLT5sZW5ndGgoKTsKLSAgICAg
ICAgaWYgKHBvcy5vZmZzZXQoKSA+IDAgJiYgIWF0RW5kKSB7Ci0gICAgICAgICAgICBzcGxpdFRl
eHROb2RlKHRleHROb2RlLCBwb3Mub2Zmc2V0KCkpOworICAgICAgICBib29sIGF0RW5kID0gKHVu
c2lnbmVkKXBvcy5tX29mZnNldCA+PSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CisgICAgICAgIGlmIChw
b3MubV9vZmZzZXQgPiAwICYmICFhdEVuZCkgeworICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZSh0
ZXh0Tm9kZSwgcG9zLm1fb2Zmc2V0KTsKICAgICAgICAgICAgIHBvcyA9IFBvc2l0aW9uKHN0YXJ0
Tm9kZSwgMCk7CiAgICAgICAgICAgICB2aXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvcyk7
CiAgICAgICAgICAgICBzcGxpdFRleHQgPSB0cnVlOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQg
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gTW92ZSB0
aGUgc3RhcnQgbm9kZSBhbmQgdGhlIHNpYmxpbmdzIG9mIHRoZSBzdGFydCBub2RlLgogICAgIGlm
IChzdGFydE5vZGUgIT0gc3RhcnRCbG9jaykgewogICAgICAgICBOb2RlICpuID0gc3RhcnROb2Rl
OwotICAgICAgICBpZiAocG9zLm9mZnNldCgpID49IGNhcmV0TWF4T2Zmc2V0KHN0YXJ0Tm9kZSkp
CisgICAgICAgIGlmIChwb3MubV9vZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQoc3RhcnROb2RlKSkK
ICAgICAgICAgICAgIG4gPSBzdGFydE5vZGUtPm5leHRTaWJsaW5nKCk7CiAKICAgICAgICAgd2hp
bGUgKG4gJiYgbiAhPSBibG9ja1RvSW5zZXJ0KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcAppbmRleCA0ZGZkNTQxLi41MmRhNWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgYm9vbCBJbnNlcnRUZXh0Q29tbWFuZDo6cGVy
Zm9ybVRyaXZpYWxSZXBsYWNlKGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RJbnMKICAg
ICBpZiAoc3RhcnQubm9kZSgpICE9IGVuZC5ub2RlKCkgfHwgIXN0YXJ0Lm5vZGUoKS0+aXNUZXh0
Tm9kZSgpIHx8IGlzVGFiU3BhblRleHROb2RlKHN0YXJ0Lm5vZGUoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCi0gICAgcmVwbGFjZVRleHRJbk5vZGUoc3RhdGljX2Nhc3Q8VGV4
dCo+KHN0YXJ0Lm5vZGUoKSksIHN0YXJ0Lm9mZnNldCgpLCBlbmQub2Zmc2V0KCkgLSBzdGFydC5v
ZmZzZXQoKSwgdGV4dCk7CisgICAgcmVwbGFjZVRleHRJbk5vZGUoc3RhdGljX2Nhc3Q8VGV4dCo+
KHN0YXJ0Lm5vZGUoKSksIHN0YXJ0Lm1fb2Zmc2V0LCBlbmQubV9vZmZzZXQgLSBzdGFydC5tX29m
ZnNldCwgdGV4dCk7CiAgICAgCi0gICAgUG9zaXRpb24gZW5kUG9zaXRpb24oc3RhcnQubm9kZSgp
LCBzdGFydC5vZmZzZXQoKSArIHRleHQubGVuZ3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0
aW9uKHN0YXJ0Lm5vZGUoKSwgc3RhcnQubV9vZmZzZXQgKyB0ZXh0Lmxlbmd0aCgpKTsKICAgICAK
ICAgICAvLyBXZSBjb3VsZCBoYXZlIGluc2VydGVkIGEgcGFydCBvZiBjb21wb3NlZCBjaGFyYWN0
ZXIgc2VxdWVuY2UsCiAgICAgLy8gc28gd2UgYXJlIGJhc2ljYWxseSB0cmVhdGluZyBlbmRpbmcg
c2VsZWN0aW9uIGFzIGEgcmFuZ2UgdG8gYXZvaWQgdmFsaWRhdGlvbi4KQEAgLTE1NSw3ICsxNTUs
NyBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleAogICAgICAgICBzdGFydFBvc2l0aW9uID0gcHJl
cGFyZUZvclRleHRJbnNlcnRpb24oc3RhcnRQb3NpdGlvbik7CiAgICAgICAgIHJlbW92ZVBsYWNl
aG9sZGVyQXQoVmlzaWJsZVBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pKTsKICAgICAgICAgVGV4dCAq
dGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0UG9zaXRpb24ubm9kZSgpKTsKLSAg
ICAgICAgaW50IG9mZnNldCA9IHN0YXJ0UG9zaXRpb24ub2Zmc2V0KCk7CisgICAgICAgIGludCBv
ZmZzZXQgPSBzdGFydFBvc2l0aW9uLm1fb2Zmc2V0OwogCiAgICAgICAgIGluc2VydFRleHRJbnRv
Tm9kZSh0ZXh0Tm9kZSwgb2Zmc2V0LCB0ZXh0KTsKICAgICAgICAgZW5kUG9zaXRpb24gPSBQb3Np
dGlvbih0ZXh0Tm9kZSwgb2Zmc2V0ICsgdGV4dC5sZW5ndGgoKSk7CkBAIC0yMDcsNyArMjA3LDcg
QEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYihjb25zdCBQb3NpdGlvbiYg
cG9zKQogICAgIFBvc2l0aW9uIGluc2VydFBvcyA9IFZpc2libGVQb3NpdGlvbihwb3MsIERPV05T
VFJFQU0pLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIAogICAgIE5vZGUgKm5vZGUgPSBpbnNl
cnRQb3Mubm9kZSgpOwotICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBpbnNlcnRQb3Mub2Zmc2V0
KCk7CisgICAgdW5zaWduZWQgaW50IG9mZnNldCA9IGluc2VydFBvcy5tX29mZnNldDsKIAogICAg
IC8vIGtlZXAgdGFicyBjb2FsZXNjZWQgaW4gdGFiIHNwYW4KICAgICBpZiAoaXNUYWJTcGFuVGV4
dE5vZGUobm9kZSkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGE1ZGRkYmMuLjJjNjU2ZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkoKQogICAgICAgICAKICAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9uIG90aGVyd2lzZSBp
dCBtYXkgYmVjb21lIGludmFsaWQgYWZ0ZXIgdGhlIHNlbGVjdGlvbiBpcyBkZWxldGVkLgogICAg
IE5vZGUgKnBvc2l0aW9uTm9kZSA9IG1fcG9zaXRpb24ubm9kZSgpOwotICAgIGludCBwb3NpdGlv
bk9mZnNldCA9IG1fcG9zaXRpb24ub2Zmc2V0KCk7CisgICAgaW50IHBvc2l0aW9uT2Zmc2V0ID0g
bV9wb3NpdGlvbi5tX29mZnNldDsKICAgICBQb3NpdGlvbiBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rp
b24uZW5kKCk7Ci0gICAgaW50IHNlbGVjdGlvbkVuZE9mZnNldCA9IHNlbGVjdGlvbkVuZC5vZmZz
ZXQoKTsgICAgCisgICAgaW50IHNlbGVjdGlvbkVuZE9mZnNldCA9IHNlbGVjdGlvbkVuZC5tX29m
ZnNldDsgICAgCiAgICAgaWYgKHNlbGVjdGlvbkVuZC5ub2RlKCkgPT0gcG9zaXRpb25Ob2RlICYm
IHNlbGVjdGlvbkVuZE9mZnNldCA8IHBvc2l0aW9uT2Zmc2V0KSB7CiAgICAgICAgIHBvc2l0aW9u
T2Zmc2V0IC09IHNlbGVjdGlvbkVuZE9mZnNldDsKICAgICAgICAgUG9zaXRpb24gc2VsZWN0aW9u
U3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQoKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0Lm5v
ZGUoKSA9PSBwb3NpdGlvbk5vZGUpIHsKLSAgICAgICAgICAgIHBvc2l0aW9uT2Zmc2V0ICs9IHNl
bGVjdGlvblN0YXJ0Lm9mZnNldCgpOworICAgICAgICAgICAgcG9zaXRpb25PZmZzZXQgKz0gc2Vs
ZWN0aW9uU3RhcnQubV9vZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgcG9zID0gUG9zaXRpb24o
cG9zaXRpb25Ob2RlLCBwb3NpdGlvbk9mZnNldCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYTE2YzQ5YS4uNjAyOTE3NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC04NjQsNyArODY0
LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAg
Ly8gV2UgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBzdGFydEJsb2NrIHRvIHByZXZlbnQgbmVzdGluZywg
YW5kIHRoZSBjb250ZW50IGJlZm9yZSB0aGUgc3RhcnRCbG9jayB3YXNuJ3QgaW4gaXRzIG93biBi
bG9jayBhbmQKICAgICAvLyBkaWRuJ3QgaGF2ZSBhIGJyIGFmdGVyIGl0LCBzbyB0aGUgaW5zZXJ0
ZWQgY29udGVudCBlbmRlZCB1cCBpbiB0aGUgc2FtZSBwYXJhZ3JhcGguCi0gICAgaWYgKHN0YXJ0
QmxvY2sgJiYgaW5zZXJ0aW9uUG9zLm5vZGUoKSA9PSBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCkg
JiYgKHVuc2lnbmVkKWluc2VydGlvblBvcy5vZmZzZXQoKSA8IHN0YXJ0QmxvY2stPm5vZGVJbmRl
eCgpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZkluc2VydGVkQ29udGVudCkpCisgICAg
aWYgKHN0YXJ0QmxvY2sgJiYgaW5zZXJ0aW9uUG9zLm5vZGUoKSA9PSBzdGFydEJsb2NrLT5wYXJl
bnROb2RlKCkgJiYgKHVuc2lnbmVkKWluc2VydGlvblBvcy5tX29mZnNldCA8IHN0YXJ0QmxvY2st
Pm5vZGVJbmRleCgpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZkluc2VydGVkQ29udGVu
dCkpCiAgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSku
Z2V0KCksIHN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgCiAg
ICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uVG9TZWxlY3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAKaW5kZXggMWZhYTY4My4uYWUwM2MxYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtOTMyLDkgKzkzMiw5IEBAIHZvaWQgU2VsZWN0aW9u
Q29udHJvbGxlcjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QgKnIsIGJvb2wgc2VsZWN0ZWQp
IGNvbnN0CiAgICAgICAgIGlmIChzZWxlY3RlZCkgewogICAgICAgICAgICAgaW50IG9mZnNldCA9
IDA7CiAgICAgICAgICAgICBpZiAoci0+bm9kZSgpID09IG1fc2VsLnN0YXJ0KCkubm9kZSgpKQot
ICAgICAgICAgICAgICAgIG9mZnNldCA9IG1fc2VsLnN0YXJ0KCkub2Zmc2V0KCk7CisgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gbV9zZWwuc3RhcnQoKS5tX29mZnNldDsKICAgICAgICAgICAgIGVs
c2UgaWYgKHItPm5vZGUoKSA9PSBtX3NlbC5lbmQoKS5ub2RlKCkpCi0gICAgICAgICAgICAgICAg
b2Zmc2V0ID0gbV9zZWwuZW5kKCkub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
bV9zZWwuZW5kKCkubV9vZmZzZXQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnQg
cG9zOwogICAgICAgICAgICAgSW5saW5lVGV4dEJveCAqYm94ID0gdGV4dFJlbmRlcmVyLT5maW5k
TmV4dElubGluZVRleHRCb3gob2Zmc2V0LCBwb3MpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApp
bmRleCBhMzUwMjkyLi5mYTIzY2QzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTQ4
Myw3ICsxNDgzLDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChFbGVtZW50ICpzY29wZSwgaW50IHIKICAgICAgICAgICAgICAgICBQ
b3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1
aXZhbGVudCgpOwogICAgICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJ1bkVuZC5ub2RlKCksIHJ1bkVuZC5vZmZzZXQoKSwg
ZWMpOworICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChydW5FbmQubm9k
ZSgpLCBydW5FbmQubV9vZmZzZXQsIGVjKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFl
Yyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwCmluZGV4IDAxNTc5YzYuLmRkZDJmMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNz
ZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogCiAgICAgICAg
ICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKIAotICAgICAg
ICAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5ICYmIHNlbGVjdGlv
blRvRGVsZXRlLmVuZCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm5vZGUo
KSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5vZmZzZXQoKSAtIHNlbGVjdGlvblRvRGVsZXRl
LnN0YXJ0KCkub2Zmc2V0KCkgPiAxKSB7CisgICAgICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkubm9kZSgpID09
IHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkubm9kZSgpICYmIHNlbGVjdGlvblRvRGVsZXRlLmVu
ZCgpLm1fb2Zmc2V0IC0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5tX29mZnNldCA+IDEpIHsK
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgVW5pY29kZSBjb2RlIHBv
aW50cyB0byBiZSBkZWxldGVkLCBhZGp1c3QgdGhlIHJhbmdlIHRvIG1hdGNoIHBsYXRmb3JtIGNv
bnZlbnRpb25zLgogICAgICAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlLnNldFdpdGhvdXRW
YWxpZGF0aW9uKHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLCBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQo
KS5wcmV2aW91cyhCYWNrd2FyZERlbGV0aW9uKSk7CiAgICAgICAgICAgICB9CkBAIC00NzYsNyAr
NDc2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgICAgIGlmICh2aXNpYmxl
RW5kID09IGVuZE9mUGFyYWdyYXBoKHZpc2libGVFbmQpKQogICAgICAgICAgICAgICAgIGRvd25z
dHJlYW1FbmQgPSB2aXNpYmxlRW5kLm5leHQodHJ1ZSkuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3Ry
ZWFtKCk7CiAgICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczogU2VsZWN0IHRoZSB0
YWJsZSBmaXJzdCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgotICAgICAgICAgICAgaWYgKGRv
d25zdHJlYW1FbmQubm9kZSgpICYmIGRvd25zdHJlYW1FbmQubm9kZSgpLT5yZW5kZXJlcigpICYm
IGRvd25zdHJlYW1FbmQubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgZG93bnN0cmVh
bUVuZC5vZmZzZXQoKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5ub2Rl
KCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5u
b2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiBkb3duc3RyZWFtRW5kLm1fb2Zmc2V0ID09
IDApIHsKICAgICAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgUG9zaXRpb24oZG93bnN0cmVhbUVuZC5ub2RlKCks
IG1heERlZXBPZmZzZXQoZG93bnN0cmVhbUVuZC5ub2RlKCkpKSwgRE9XTlNUUkVBTSkpOwogICAg
ICAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZCgpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQ5OSwxMCArNDk5LDEwIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBleHRyYUNoYXJh
Y3RlcnM7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgp
Lm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5vZmZz
ZXQoKSAtIHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkub2Zmc2V0KCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5tX29m
ZnNldCAtIHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkubV9vZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVycyA9IHNl
bGVjdGlvblRvRGVsZXRlLmVuZCgpLm9mZnNldCgpOwotICAgICAgICAgICAgICAgICAgICBleHRl
bnQgPSBQb3NpdGlvbihleHRlbnQubm9kZSgpLCBleHRlbnQub2Zmc2V0KCkgKyBleHRyYUNoYXJh
Y3RlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFDaGFyYWN0ZXJzID0gc2VsZWN0
aW9uVG9EZWxldGUuZW5kKCkubV9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGV4dGVudCA9
IFBvc2l0aW9uKGV4dGVudC5ub2RlKCksIGV4dGVudC5tX29mZnNldCArIGV4dHJhQ2hhcmFjdGVy
cyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5k
by5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIGV4dGVu
dCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDU3
OTlmZjQuLjQ5NWM4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC01MTgs
NyArNTE4LDcgQEAgVUNoYXIgVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigpIGNvbnN0
CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHBvcy5ub2RlKCkpOwot
ICAgIGludCBvZmZzZXQgPSBwb3Mub2Zmc2V0KCk7CisgICAgaW50IG9mZnNldCA9IHBvcy5tX29m
ZnNldDsKICAgICBpZiAoKHVuc2lnbmVkKW9mZnNldCA+PSB0ZXh0Tm9kZS0+bGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB0ZXh0Tm9kZS0+ZGF0YSgpW29mZnNldF07CkBA
IC01NzQsNyArNTc0LDcgQEAgdm9pZCBWaXNpYmxlUG9zaXRpb246OmRlYnVnUG9zaXRpb24oY29u
c3QgY2hhciogbXNnKSBjb25zdAogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJQb3NpdGlvbiBbJXNdOiBudWxsXG4iLCBtc2cpOwogICAgIGVsc2UKLSAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJQb3NpdGlvbiBbJXNdOiAlcyBbJXBdIGF0ICVkXG4iLCBtc2csIG1f
ZGVlcFBvc2l0aW9uLm5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBtX2RlZXBQb3Np
dGlvbi5ub2RlKCksIG1fZGVlcFBvc2l0aW9uLm9mZnNldCgpKTsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJQb3NpdGlvbiBbJXNdOiAlcyBbJXBdIGF0ICVkXG4iLCBtc2csIG1fZGVlcFBvc2l0
aW9uLm5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBtX2RlZXBQb3NpdGlvbi5ub2Rl
KCksIG1fZGVlcFBvc2l0aW9uLm1fb2Zmc2V0KTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTU5
OCw3ICs1OTgsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBtYWtlUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uICZzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uCiAgICAgCiAgICAgUG9zaXRpb24g
cyA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChzdGFydCk7CiAgICAgUG9zaXRpb24gZSA9IHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudChlbmQpOwotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHMu
bm9kZSgpLT5kb2N1bWVudCgpLCBzLm5vZGUoKSwgcy5vZmZzZXQoKSwgZS5ub2RlKCksIGUub2Zm
c2V0KCkpOworICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHMubm9kZSgpLT5kb2N1bWVudCgpLCBz
Lm5vZGUoKSwgcy5tX29mZnNldCwgZS5ub2RlKCksIGUubV9vZmZzZXQpOwogfQogCiBWaXNpYmxl
UG9zaXRpb24gc3RhcnRWaXNpYmxlUG9zaXRpb24oY29uc3QgUmFuZ2UgKnIsIEVBZmZpbml0eSBh
ZmZpbml0eSkKQEAgLTYxOSw3ICs2MTksNyBAQCBib29sIHNldFN0YXJ0KFJhbmdlICpyLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFBvc2l0aW9uIHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0
aW9uKTsKICAgICBpbnQgY29kZSA9IDA7Ci0gICAgci0+c2V0U3RhcnQocC5ub2RlKCksIHAub2Zm
c2V0KCksIGNvZGUpOworICAgIHItPnNldFN0YXJ0KHAubm9kZSgpLCBwLm1fb2Zmc2V0LCBjb2Rl
KTsKICAgICByZXR1cm4gY29kZSA9PSAwOwogfQogCkBAIC02MjksNyArNjI5LDcgQEAgYm9vbCBz
ZXRFbmQoUmFuZ2UgKnIsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUG9zaXRpb24gcCA9IHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudCh2aXNpYmxlUG9zaXRpb24pOwogICAgIGludCBjb2RlID0gMDsKLSAgICByLT5zZXRF
bmQocC5ub2RlKCksIHAub2Zmc2V0KCksIGNvZGUpOworICAgIHItPnNldEVuZChwLm5vZGUoKSwg
cC5tX29mZnNldCwgY29kZSk7CiAgICAgcmV0dXJuIGNvZGUgPT0gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGI5OWY0MWMuLmYyNjNjZGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0CiAgICAgICAg
IEFTU0VSVChpc1JhbmdlKCkpOwogICAgICAgICBzID0gbV9zdGFydC5kb3duc3RyZWFtKCk7CiAg
ICAgICAgIGUgPSBtX2VuZC51cHN0cmVhbSgpOwotICAgICAgICBpZiAoUmFuZ2U6OmNvbXBhcmVC
b3VuZGFyeVBvaW50cyhzLm5vZGUoKSwgcy5vZmZzZXQoKSwgZS5ub2RlKCksIGUub2Zmc2V0KCkp
ID4gMCkgeworICAgICAgICBpZiAoUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzLm5vZGUo
KSwgcy5tX29mZnNldCwgZS5ub2RlKCksIGUubV9vZmZzZXQpID4gMCkgewogICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBzdGFydCBpcyBiZWZvcmUgdGhlIGVuZC4KICAgICAgICAgICAgIC8v
IFRoZSBlbmQgY2FuIHdpbmQgdXAgYmVmb3JlIHRoZSBzdGFydCBpZiBjb2xsYXBzZWQgd2hpdGVz
cGFjZSBpcyB0aGUgb25seSB0aGluZyBzZWxlY3RlZC4KICAgICAgICAgICAgIFBvc2l0aW9uIHRt
cCA9IHM7CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VT
ZWFyY2hSYW5nZShjb25zdCBQb3NpdGlvbiYgcG9zKQogCiAgICAgUG9zaXRpb24gc3RhcnQocmFu
Z2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykpOwogICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2Rl
Q29udGVudHMoYm91bmRhcnksIGVjKTsKLSAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQu
bm9kZSgpLCBzdGFydC5vZmZzZXQoKSwgZWMpOworICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChz
dGFydC5ub2RlKCksIHN0YXJ0Lm1fb2Zmc2V0LCBlYyk7CiAKICAgICBBU1NFUlQoIWVjKTsKICAg
ICBpZiAoZWMpCkBAIC01ODgsMTMgKzU4OCwxMyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmRl
YnVnUG9zaXRpb24oKSBjb25zdAogCiAgICAgaWYgKG1fc3RhcnQgPT0gbV9lbmQpIHsKICAgICAg
ICAgUG9zaXRpb24gcG9zID0gbV9zdGFydDsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJwb3M6
ICAgICAgICAlcyAlcDolZFxuIiwgcG9zLm5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgp
LCBwb3Mubm9kZSgpLCBwb3Mub2Zmc2V0KCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInBv
czogICAgICAgICVzICVwOiVkXG4iLCBwb3Mubm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRh
KCksIHBvcy5ub2RlKCksIHBvcy5tX29mZnNldCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUG9z
aXRpb24gcG9zID0gbV9zdGFydDsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJzdGFydDogICAg
ICAlcyAlcDolZFxuIiwgcG9zLm5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBwb3Mu
bm9kZSgpLCBwb3Mub2Zmc2V0KCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInN0YXJ0OiAg
ICAgICVzICVwOiVkXG4iLCBwb3Mubm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHBv
cy5ub2RlKCksIHBvcy5tX29mZnNldCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgICAgICBwb3MgPSBtX2VuZDsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbmQ6ICAgICAgICAlcyAlcDolZFxuIiwgcG9zLm5v
ZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBwb3Mubm9kZSgpLCBwb3Mub2Zmc2V0KCkp
OworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVuZDogICAgICAgICVzICVwOiVkXG4iLCBwb3Mu
bm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHBvcy5ub2RlKCksIHBvcy5tX29mZnNl
dCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiIpOwogICAgIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgVmlzaWJsZVNl
bGVjdGlvbjo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKIHsKICAgICBpZiAoc3RhcnQoKS5ub2Rl
KCkpIHsKICAgICAgICAgc3RhcnQoKS5ub2RlKCktPnNob3dUcmVlQW5kTWFyayhzdGFydCgpLm5v
ZGUoKSwgIlMiLCBlbmQoKS5ub2RlKCksICJFIik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAi
c3RhcnQgb2Zmc2V0OiAlZCwgZW5kIG9mZnNldDogJWRcbiIsIHN0YXJ0KCkub2Zmc2V0KCksIGVu
ZCgpLm9mZnNldCgpKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJzdGFydCBvZmZzZXQ6ICVk
LCBlbmQgb2Zmc2V0OiAlZFxuIiwgc3RhcnQoKS5tX29mZnNldCwgZW5kKCkubV9vZmZzZXQpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBi
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggNTA3ZThjMC4uMzdhNmRiMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05OCw4ICs5OCw4IEBAIGludCBjb21wYXJlUG9z
aXRpb25zKGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAgICBBU1NFUlQo
bm9kZUEpOwogICAgIE5vZGUqIG5vZGVCID0gYi5ub2RlKCk7CiAgICAgQVNTRVJUKG5vZGVCKTsK
LSAgICBpbnQgb2Zmc2V0QSA9IGEub2Zmc2V0KCk7Ci0gICAgaW50IG9mZnNldEIgPSBiLm9mZnNl
dCgpOworICAgIGludCBvZmZzZXRBID0gYS5tX29mZnNldDsKKyAgICBpbnQgb2Zmc2V0QiA9IGIu
bV9vZmZzZXQ7CiAKICAgICBOb2RlKiBzaGFkb3dBbmNlc3RvckEgPSBub2RlQS0+c2hhZG93QW5j
ZXN0b3JOb2RlKCk7CiAgICAgaWYgKHNoYWRvd0FuY2VzdG9yQSA9PSBub2RlQSkKQEAgLTMyMSwx
NyArMzIxLDE3IEBAIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3Np
dGlvbiYgcG9zKQogCiAgICAgTm9kZSogbm9kZSA9IHBvcy5ub2RlKCk7CiAKLSAgICBpZiAocG9z
Lm9mZnNldCgpIDw9IDApIHsKKyAgICBpZiAocG9zLm1fb2Zmc2V0IDw9IDApIHsKICAgICAgICAg
aWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpIHx8
IGlzVGFibGVFbGVtZW50KG5vZGUpKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9y
ZU5vZGUobm9kZSk7CiAgICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCAwKTsKICAgICB9CiAK
ICAgICBpZiAobm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpCi0gICAgICAgIHJldHVybiBQb3Np
dGlvbihub2RlLCBtaW4obm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCksIHBvcy5vZmZzZXQoKSkp
OworICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbWluKG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpLCBwb3MubV9vZmZzZXQpKTsKIAogICAgIGludCBtYXhDb21wbGlhbnRPZmZzZXQgPSBu
b2RlLT5jaGlsZE5vZGVDb3VudCgpOwotICAgIGlmIChwb3Mub2Zmc2V0KCkgPiBtYXhDb21wbGlh
bnRPZmZzZXQpIHsKKyAgICBpZiAocG9zLm1fb2Zmc2V0ID4gbWF4Q29tcGxpYW50T2Zmc2V0KSB7
CiAgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb25BZnRlck5vZGUobm9kZSk7CiAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFBvc2l0aW9uIHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQogICAgIH0gCiAKICAg
ICAvLyBFZGl0aW5nIHNob3VsZCBuZXZlciBnZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgot
ICAgIGlmICgocG9zLm9mZnNldCgpIDwgbWF4Q29tcGxpYW50T2Zmc2V0KSAmJiBlZGl0aW5nSWdu
b3Jlc0NvbnRlbnQobm9kZSkpIHsKKyAgICBpZiAoKHBvcy5tX29mZnNldCA8IG1heENvbXBsaWFu
dE9mZnNldCkgJiYgZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpID8gcG9z
aXRpb25CZWZvcmVOb2RlKG5vZGUpIDogUG9zaXRpb24obm9kZSwgMCk7CiAgICAgfQogICAgIAot
ICAgIGlmIChwb3Mub2Zmc2V0KCkgPT0gbWF4Q29tcGxpYW50T2Zmc2V0ICYmIChlZGl0aW5nSWdu
b3Jlc0NvbnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQorICAgIGlmIChwb3Mu
bV9vZmZzZXQgPT0gbWF4Q29tcGxpYW50T2Zmc2V0ICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQo
bm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQogICAgICAgICByZXR1cm4gcG9zaXRpb25B
ZnRlck5vZGUobm9kZSk7CiAgICAgCiAgICAgcmV0dXJuIFBvc2l0aW9uKHBvcyk7CkBAIC01NDEs
NyArNTQxLDcgQEAgUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVt
ZW50KGNvbnN0IFBvc2l0aW9uICZwb3MsIE5vZGUgKipjb24KIE5vZGUqIGlzRmlyc3RQb3NpdGlv
bkFmdGVyVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7CiAg
ICAgUG9zaXRpb24gdXBzdHJlYW0odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkudXBz
dHJlYW0oKSk7Ci0gICAgaWYgKHVwc3RyZWFtLm5vZGUoKSAmJiB1cHN0cmVhbS5ub2RlKCktPnJl
bmRlcmVyKCkgJiYgdXBzdHJlYW0ubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgdXBz
dHJlYW0ub2Zmc2V0KCkgPT0gbWF4RGVlcE9mZnNldCh1cHN0cmVhbS5ub2RlKCkpKQorICAgIGlm
ICh1cHN0cmVhbS5ub2RlKCkgJiYgdXBzdHJlYW0ubm9kZSgpLT5yZW5kZXJlcigpICYmIHVwc3Ry
ZWFtLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmIHVwc3RyZWFtLm1fb2Zmc2V0ID09
IG1heERlZXBPZmZzZXQodXBzdHJlYW0ubm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHVwc3RyZWFt
Lm5vZGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKQEAgLTU1MCw3ICs1NTAsNyBAQCBOb2RlKiBp
c0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uKQogTm9kZSogaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbikKIHsKICAgICBQb3NpdGlvbiBkb3duc3RyZWFtKHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKSk7Ci0gICAgaWYgKGRvd25z
dHJlYW0ubm9kZSgpICYmIGRvd25zdHJlYW0ubm9kZSgpLT5yZW5kZXJlcigpICYmIGRvd25zdHJl
YW0ubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgZG93bnN0cmVhbS5vZmZzZXQoKSA9
PSAwKQorICAgIGlmIChkb3duc3RyZWFtLm5vZGUoKSAmJiBkb3duc3RyZWFtLm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBkb3duc3RyZWFtLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmIGRv
d25zdHJlYW0ubV9vZmZzZXQgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvd25zdHJlYW0ubm9kZSgp
OwogICAgIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IDVi
YTljNGEuLjNiODhmMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTYzLDggKzYz
LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmYywgdW5zaWduZWQgKCpzZWEKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkKTsKICAgICAKICAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5vZmZzZXQoKSwgZXhj
ZXB0aW9uKTsKLSAgICBzZWFyY2hSYW5nZS0+c2V0RW5kKGVuZC5ub2RlKCksIGVuZC5vZmZzZXQo
KSwgZXhjZXB0aW9uKTsKKyAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBz
dGFydC5tX29mZnNldCwgZXhjZXB0aW9uKTsKKyAgICBzZWFyY2hSYW5nZS0+c2V0RW5kKGVuZC5u
b2RlKCksIGVuZC5tX29mZnNldCwgZXhjZXB0aW9uKTsKICAgICAKICAgICBBU1NFUlQoIWV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMsIHVuc2ln
bmVkICgqc2VhcmNoRgogICAgIFBvc2l0aW9uIHN0YXJ0KHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChwb3MpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzZWFyY2hSYW5nZS0+c2Vs
ZWN0Tm9kZUNvbnRlbnRzKGJvdW5kYXJ5LCBlYyk7Ci0gICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0
KHN0YXJ0Lm5vZGUoKSwgc3RhcnQub2Zmc2V0KCksIGVjKTsKKyAgICBzZWFyY2hSYW5nZS0+c2V0
U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5tX29mZnNldCwgZWMpOwogICAgIFRleHRJdGVyYXRv
ciBpdChzZWFyY2hSYW5nZS5nZXQoKSwgdHJ1ZSk7CiAgICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBz
dHJpbmc7CiAgICAgdW5zaWduZWQgbmV4dCA9IDA7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMpCiAgICAgICAgIC8vIFRoZXJlIGFyZSBWaXNpYmxlUG9zaXRpb25zIGF0IG9mZnNldCAw
IGluIGJsb2NrcyB3aXRob3V0CiAgICAgICAgIC8vIFJvb3RJbmxpbmVCb3hlcywgbGlrZSBlbXB0
eSBlZGl0YWJsZSBibG9ja3MgYW5kIGJvcmRlcmVkIGJsb2Nrcy4KICAgICAgICAgUG9zaXRpb24g
cCA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKHAubm9kZSgpLT5yZW5kZXJlcigp
ICYmIHAubm9kZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkgJiYgcC5vZmZzZXQoKSA9
PSAwKQorICAgICAgICBpZiAocC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgcC5ub2RlKCktPnJlbmRl
cmVyKCktPmlzUmVuZGVyQmxvY2soKSAmJiBwLm1fb2Zmc2V0ID09IDApCiAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb25Bdm9pZGluZ0ZpcnN0UG9zaXRpb25JblRhYmxlKGMpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIFZp
c2libGVQb3NpdGlvbiBzdGFydE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMpCiAgICAg
ICAgIC8vIGdyZWF0ZXIgdGhhbiB0aGUgaW5wdXQgcG9zaXRpb24uICBUaGlzIGZpeCBpcyB0byBh
Y2NvdW50IGZvciB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBsaW5lcyB3aXRoIHdlYmtpdC1saW5l
LWJyZWFrOmFmdGVyLXdoaXRlLXNwYWNlIAogICAgICAgICAvLyBzdHlsZSB2ZXJzdXMgbGluZXMg
d2l0aG91dCB0aGF0IHN0eWxlLCB3aGljaCB3b3VsZCBicmVhayBiZWZvcmUgYSBzcGFjZSBieSBk
ZWZhdWx0LiAKICAgICAgICAgUG9zaXRpb24gcCA9IHZpc1Bvcy5kZWVwRXF1aXZhbGVudCgpOwot
ICAgICAgICBpZiAocC5vZmZzZXQoKSA+IGMuZGVlcEVxdWl2YWxlbnQoKS5vZmZzZXQoKSAmJiBw
Lm5vZGUoKS0+aXNTYW1lTm9kZShjLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSkgeworICAgICAg
ICBpZiAocC5tX29mZnNldCA+IGMuZGVlcEVxdWl2YWxlbnQoKS5tX29mZnNldCAmJiBwLm5vZGUo
KS0+aXNTYW1lTm9kZShjLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSkgewogICAgICAgICAgICAg
dmlzUG9zID0gYy5wcmV2aW91cygpOwogICAgICAgICAgICAgaWYgKHZpc1Bvcy5pc051bGwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0zNTQsNyArMzU0
LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBjKQogICAgICAgICAvLyBUaGVyZSBhcmUgVmlzaWJsZVBvc2l0aW9ucyBh
dCBvZmZzZXQgMCBpbiBibG9ja3Mgd2l0aG91dAogICAgICAgICAvLyBSb290SW5saW5lQm94ZXMs
IGxpa2UgZW1wdHkgZWRpdGFibGUgYmxvY2tzIGFuZCBib3JkZXJlZCBibG9ja3MuCiAgICAgICAg
IFBvc2l0aW9uIHAgPSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgIGlmIChwLm5vZGUoKS0+
cmVuZGVyZXIoKSAmJiBwLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJCbG9jaygpICYmIHAu
b2Zmc2V0KCkgPT0gMCkKKyAgICAgICAgaWYgKHAubm9kZSgpLT5yZW5kZXJlcigpICYmIHAubm9k
ZSgpLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkgJiYgcC5tX29mZnNldCA9PSAwKQogICAg
ICAgICAgICAgcmV0dXJuIGM7CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAg
ICB9CkBAIC01NzEsNyArNTcxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24sIGludCB4KQogICAgICAgICAv
LyBOZWVkIHRvIG1vdmUgZm9yd2FyZCB0byBuZXh0IGNvbnRhaW5pbmcgZWRpdGFibGUgYmxvY2sg
aW4gdGhpcyByb290IGVkaXRhYmxlCiAgICAgICAgIC8vIGJsb2NrIGFuZCBmaW5kIHRoZSBmaXJz
dCByb290IGxpbmUgYm94IGluIHRoYXQgYmxvY2suCiAgICAgICAgIE5vZGUqIHN0YXJ0QmxvY2sg
PSBlbmNsb3NpbmdCbG9jayhub2RlKTsKLSAgICAgICAgTm9kZSogbiA9IG5leHRMZWFmV2l0aFNh
bWVFZGl0YWJpbGl0eShub2RlLCBwLm9mZnNldCgpKTsKKyAgICAgICAgTm9kZSogbiA9IG5leHRM
ZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBwLm1fb2Zmc2V0KTsKICAgICAgICAgd2hpbGUg
KG4gJiYgc3RhcnRCbG9jayA9PSBlbmNsb3NpbmdCbG9jayhuKSkKICAgICAgICAgICAgIG4gPSBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobik7CiAgICAgICAgIHdoaWxlIChuKSB7CkBAIC02
NzksMTMgKzY3OSwxMyBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25zdCBW
aXNpYmxlUG9zaXRpb24gJmMpCiAgICAgaWYgKHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKQogICAgICAg
ICAmJiAoKHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmICFzdGFydE5vZGUtPnJl
bmRlcmVyKCktPmlzSW5saW5lKCkpCiAgICAgICAgICAgICB8fCBzdGFydE5vZGUtPnJlbmRlcmVy
KCktPmlzSFIoKSkKLSAgICAgICAgJiYgcC5vZmZzZXQoKSA9PSBtYXhEZWVwT2Zmc2V0KHN0YXJ0
Tm9kZSkpCisgICAgICAgICYmIHAubV9vZmZzZXQgPT0gbWF4RGVlcE9mZnNldChzdGFydE5vZGUp
KQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgMCkp
OwogCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9kZSk7CiAK
ICAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOwotICAgIGludCBvZmZzZXQgPSBwLm9mZnNldCgp
OworICAgIGludCBvZmZzZXQgPSBwLm1fb2Zmc2V0OwogCiAgICAgTm9kZSAqbiA9IHN0YXJ0Tm9k
ZTsKICAgICB3aGlsZSAobikgewpAQCAtNzQyLDE0ICs3NDIsMTQgQEAgVmlzaWJsZVBvc2l0aW9u
IGVuZE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmYykKICAgICBpZiAoc3RhcnRO
b2RlLT5yZW5kZXJlcigpCiAgICAgICAgICYmICgoc3RhcnROb2RlLT5yZW5kZXJlcigpLT5pc1Rh
YmxlKCkgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkKICAgICAgICAgICAg
IHx8IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+aXNIUigpKQotICAgICAgICAmJiBwLm9mZnNldCgp
ID09IDApCisgICAgICAgICYmIHAubV9vZmZzZXQgPT0gMCkKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbihQb3NpdGlvbihzdGFydE5vZGUsIG1heERlZXBPZmZzZXQoc3RhcnROb2RlKSkp
OwogICAgIAogICAgIE5vZGUqIHN0YXJ0QmxvY2sgPSBlbmNsb3NpbmdCbG9jayhzdGFydE5vZGUp
OwogICAgIE5vZGUgKnN0YXlJbnNpZGVCbG9jayA9IHN0YXJ0QmxvY2s7CiAgICAgCiAgICAgTm9k
ZSAqbm9kZSA9IHN0YXJ0Tm9kZTsKLSAgICBpbnQgb2Zmc2V0ID0gcC5vZmZzZXQoKTsKKyAgICBp
bnQgb2Zmc2V0ID0gcC5tX29mZnNldDsKIAogICAgIE5vZGUgKm4gPSBzdGFydE5vZGU7CiAgICAg
d2hpbGUgKG4pIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4N2QxMTM4
Li5jNmUwNzk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB1cGRhdGVBWExpbmVTdGFydEZvclZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24KICAgICAgICAgaWYgKCFwLm5vZGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICByZW5kZXJlciA9IHAubm9kZSgpLT5yZW5kZXJl
cigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkg
JiYgIXAub2Zmc2V0KCkpCisgICAgICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmlzUmVu
ZGVyQmxvY2soKSAmJiAhcC5tX29mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBJ
bmxpbmVCb3gqIGJveDsKICAgICAgICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAwZjY1MmEzLi4xMGQ3OGFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNjg3
LDcgKzE2ODcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwbwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVuZGVy
ZXItPmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZXRTdGFydChub2RlLCAwLCBlYyk7Ci0gICAg
cmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLm5vZGUoKSwgaW5kZXhQb3NpdGlvbi5vZmZzZXQo
KSwgZWMpOworICAgIHJhbmdlLT5zZXRFbmQoaW5kZXhQb3NpdGlvbi5ub2RlKCksIGluZGV4UG9z
aXRpb24ubV9vZmZzZXQsIGVjKTsKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggZGVhYmQ5NS4uMDE0
ZWNlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTgyLDE0ICs4MiwxNCBAQCBpbnQgRE9NU2Vs
ZWN0aW9uOjphbmNob3JPZmZzZXQoKSBjb25zdAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKICAgICBQb3Np
dGlvbiBhbmNob3IgPSBzZWxlY3Rpb24uaXNCYXNlRmlyc3QoKSA/IHNlbGVjdGlvbi5zdGFydCgp
IDogc2VsZWN0aW9uLmVuZCgpOwogICAgIGFuY2hvciA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChhbmNob3IpOwotICAgIHJldHVybiBhbmNob3Iub2Zmc2V0KCk7CisgICAgcmV0dXJuIGFuY2hv
ci5tX29mZnNldDsKIH0KIAogaW50IERPTVNlbGVjdGlvbjo6YmFzZU9mZnNldCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5iYXNl
KCkpLm9mZnNldCgpOworICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQobV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmJhc2UoKSkubV9vZmZzZXQ7CiB9CiAKIE5vZGUq
IERPTVNlbGVjdGlvbjo6Zm9jdXNOb2RlKCkgY29uc3QKQEAgLTExOCwxNCArMTE4LDE0IEBAIGlu
dCBET01TZWxlY3Rpb246OmZvY3VzT2Zmc2V0KCkgY29uc3QKICAgICBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7CiAg
ICAgUG9zaXRpb24gZm9jdXMgPSBzZWxlY3Rpb24uaXNCYXNlRmlyc3QoKSA/IHNlbGVjdGlvbi5l
bmQoKSA6IHNlbGVjdGlvbi5zdGFydCgpOwogICAgIGZvY3VzID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KGZvY3VzKTsKLSAgICByZXR1cm4gZm9jdXMub2Zmc2V0KCk7CisgICAgcmV0dXJuIGZv
Y3VzLm1fb2Zmc2V0OwogfQogCiBpbnQgRE9NU2VsZWN0aW9uOjpleHRlbnRPZmZzZXQoKSBjb25z
dAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCku
ZXh0ZW50KCkpLm9mZnNldCgpOworICAgIHJldHVybiByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQo
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmV4dGVudCgpKS5tX29mZnNldDsKIH0K
IAogYm9vbCBET01TZWxlY3Rpb246OmlzQ29sbGFwc2VkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKaW5kZXggNTRmYzAzNS4uODk4MTdiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwNyw3
ICszMDcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xl
Q2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UgogICAgICAgICAvLyB3YXMgY3JlYXRl
ZCByaWdodC10by1sZWZ0CiAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0
YXJ0KCk7CiAgICAgICAgIFBvc2l0aW9uIGVuZCA9IG5ld1NlbGVjdGlvbi5lbmQoKTsKLSAgICAg
ICAgc2hvcnQgYmVmb3JlID0gUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhwb3Mubm9kZSgp
LCBwb3Mub2Zmc2V0KCksIHN0YXJ0Lm5vZGUoKSwgc3RhcnQub2Zmc2V0KCkpOworICAgICAgICBz
aG9ydCBiZWZvcmUgPSBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHBvcy5ub2RlKCksIHBv
cy5tX29mZnNldCwgc3RhcnQubm9kZSgpLCBzdGFydC5tX29mZnNldCk7CiAgICAgICAgIGlmIChi
ZWZvcmUgPD0gMCkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zLCBlbmQpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBkZjFjNzdmLi4xM2I1NjgyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIEZyYW1lOjpzZWxlY3Rpb25MYXlvdXRDaGFuZ2Vk
KCkKICAgICAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwo
KSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkg
ewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICpzdGFydFJlbmRlcmVyID0gc3RhcnRQb3Mubm9k
ZSgpLT5yZW5kZXJlcigpOwogICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICplbmRSZW5kZXJlciA9
IGVuZFBvcy5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICB2aWV3LT5zZXRTZWxlY3Rp
b24oc3RhcnRSZW5kZXJlciwgc3RhcnRQb3Mub2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmRQb3Mu
b2Zmc2V0KCkpOworICAgICAgICAgICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIs
IHN0YXJ0UG9zLm1fb2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kUG9zLm1fb2Zmc2V0KTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRl
eCAxZTUyMjMzLi4zMmQ4MjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgaW50IFJlbmRlclRleHRDb250cm9sOjppbmRleEZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvcykKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICByYW5nZS0+c2V0U3Rh
cnQobV9pbm5lclRleHQuZ2V0KCksIDAsIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKLSAgICByYW5n
ZS0+c2V0RW5kKGluZGV4UG9zaXRpb24ubm9kZSgpLCBpbmRleFBvc2l0aW9uLm9mZnNldCgpLCBl
Yyk7CisgICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLm5vZGUoKSwgaW5kZXhQb3NpdGlv
bi5tX29mZnNldCwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKaW5kZXggZTczZmVmYi4uMjM1MDQ5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTUxOCwxMyArNTE4LDEzIEBAIHN0YXRpYyB2b2lkIHdyaXRl
U2VsZWN0aW9uKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QqIG8pCiAKICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKLSAgICAgICAgdHMgPDwgImNhcmV0
OiBwb3NpdGlvbiAiIDw8IHNlbGVjdGlvbi5zdGFydCgpLm9mZnNldCgpIDw8ICIgb2YgIiA8PCBu
b2RlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpKTsKKyAgICAgICAgdHMgPDwgImNh
cmV0OiBwb3NpdGlvbiAiIDw8IHNlbGVjdGlvbi5zdGFydCgpLm1fb2Zmc2V0IDw8ICIgb2YgIiA8
PCBub2RlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpKTsKICAgICAgICAgaWYgKHNl
bGVjdGlvbi5hZmZpbml0eSgpID09IFVQU1RSRUFNKQogICAgICAgICAgICAgdHMgPDwgIiAodXBz
dHJlYW0gYWZmaW5pdHkpIjsKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICB9IGVsc2UgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgIHRzIDw8ICJzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0
aW9uICIgPDwgc2VsZWN0aW9uLnN0YXJ0KCkub2Zmc2V0KCkgPDwgIiBvZiAiIDw8IG5vZGVQb3Np
dGlvbihzZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCkpIDw8ICJcbiIKLSAgICAgICAgICAgPDwgInNl
bGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gIiA8PCBzZWxlY3Rpb24uZW5kKCkub2Zmc2V0KCkgPDwg
IiBvZiAiIDw8IG5vZGVQb3NpdGlvbihzZWxlY3Rpb24uZW5kKCkubm9kZSgpKSA8PCAiXG4iOwor
ICAgICAgICB0cyA8PCAic2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAiIDw8IHNlbGVjdGlvbi5z
dGFydCgpLm1fb2Zmc2V0IDw8ICIgb2YgIiA8PCBub2RlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0
KCkubm9kZSgpKSA8PCAiXG4iCisgICAgICAgICAgIDw8ICJzZWxlY3Rpb24gZW5kOiAgIHBvc2l0
aW9uICIgPDwgc2VsZWN0aW9uLmVuZCgpLm1fb2Zmc2V0IDw8ICIgb2YgIiA8PCBub2RlUG9zaXRp
b24oc2VsZWN0aW9uLmVuZCgpLm5vZGUoKSkgPDwgIlxuIjsKIH0KIAogU3RyaW5nIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oUmVuZGVyT2JqZWN0KiBvKQotLSAKMS42LjIKCg==
</data>
<flag name="review"
          id="13941"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>