<?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>122064</bug_id>
          
          <creation_ts>2013-09-28 08:52:53 -0700</creation_ts>
          <short_desc>Add Frame::mainFrame and Frame::isMainFrame</short_desc>
          <delta_ts>2013-09-28 10:17:45 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934283</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-28 08:52:53 -0700</bug_when>
    <thetext>Add Frame::mainFrame and Frame::isMainFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934289</commentid>
    <comment_count>1</comment_count>
      <attachid>212902</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-28 09:11:26 -0700</bug_when>
    <thetext>Created attachment 212902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934293</commentid>
    <comment_count>2</comment_count>
      <attachid>212902</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-28 09:21:02 -0700</bug_when>
    <thetext>Comment on attachment 212902
Patch

Attachment 212902 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2653511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934294</commentid>
    <comment_count>3</comment_count>
      <attachid>212902</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-28 09:22:03 -0700</bug_when>
    <thetext>Comment on attachment 212902
Patch

Attachment 212902 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2651522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934295</commentid>
    <comment_count>4</comment_count>
      <attachid>212903</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-28 09:32:28 -0700</bug_when>
    <thetext>Created attachment 212903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934301</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-28 10:17:45 -0700</bug_when>
    <thetext>Committed r156607: &lt;http://trac.webkit.org/changeset/156607&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212902</attachid>
            <date>2013-09-28 09:11:26 -0700</date>
            <delta_ts>2013-09-28 09:32:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122064-20130928091125.patch</filename>
            <type>text/plain</type>
            <size>71953</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk2ZWM2ZWVmODEwZjBm
NmQxNTUwMjUzZDJlZjk4MGE3MjQyYTM1NS4uMjcxNDYyYzYwYjRhZWRkYjFjYTkzZWIwYWZhZTMx
NDk4ZmQwZWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxMy0wOS0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZyYW1lOjptYWluRnJh
bWUgYW5kIEZyYW1lOjppc01haW5GcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlZCBleHBvcnRzIG9mIEZy
YW1lVmlldzo6aXNNYWluRnJhbWVWaWV3IGFuZAorICAgICAgICBQYWdlOjpmcmFtZUlzTWFpbkZy
YW1lLiBTaW5jZSB0aGUgbmV3IGlzTWFpbkZyYW1lIGZ1bmN0aW9uIGlzIGlubGluZSwgaXQKKyAg
ICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBleHBvcnRlZC4KKworICAgICAgICAqIGhpc3Rvcnkv
UGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6bWFya1BhZ2VzRm9y
RnVsbFN0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6bWFya1BhZ2Vz
Rm9yRGV2aWNlU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgVGhlc2UgdHdvIHdlcmUgdGhlIG9ubHkg
ZnVuY3Rpb25zIEkgZm91bmQgdGhhdCByZWFsbHkgd2FudGVkIHRoZSBlcXVpdmFsZW50CisgICAg
ICAgIG9mIFBhZ2U6OmZyYW1lSXNNYWluRnJhbWUsIHNvIHdyb3RlIGl0IG91dCBoZXJlIGluc3Rl
YWQgb2YgdXNpbmcgYSBmdW5jdGlvbgorICAgICAgICBjYWxsLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmNwcDogUmVtb3ZlZCB0aGUgdW51c2VkIGlzTWFpblJlc291cmNl
TG9hZGVyIGZ1bmN0aW9uLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOiBS
ZW1vdmVkIGRlY2xhcmF0aW9ucyBvZiBhIGZldyBub25leGlzdGVudCBvcgorICAgICAgICB1bnVz
ZWQgcHJpdmF0ZSBtZW1iZXIgZnVuY3Rpb25zLiBBbHNvIHJlbW92ZWQgdGhlIEluamVjdGVkU2Ny
aXB0Rm9yT3JpZ2luTWFwCisgICAgICAgIHR5cGVkZWY6IEl0J3MgbW9yIHJlYWRhYmxlIHRvIHVz
ZSB0aGUgdHlwZSBkaXJlY3RseQorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IFJl
bW92ZWQgaXNMb2FkaW5nTWFpbkZyYW1lLiBJdCdzIG5vdCBiZXR0ZXIgdGhhbgorICAgICAgICBj
YWxsaW5nIGZyYW1lKCkuaXNNYWluRnJhbWUoKSBkaXJlY3RseS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKTogSW5pdGlhbGl6ZSBt
X21haW5GcmFtZSBhbmQgY2FsbCBzZWxmT25seVJlZiwga2VlcGluZworICAgICAgICB0aGUgTWFp
bkZyYW1lIGFsaXZlIGFzIGxvbmcgYXMgYW55IG9mIGl0cyBzdWJmcmFtZXMgaXMgYWxpdmUuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKTogQ2FsbCBzZWxmT25seURlcmVmLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZVZpZXcpOiBVc2UgaXNNYWluRnJhbWUuCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6IERpdHRvLgor
CisgICAgICAgICogcGFnZS9GcmFtZS5oOiBBZGRlZCBGcmFtZTo6bWFpbkZyYW1lLCBGcmFtZTo6
aXNNYWluRnJhbWUsIGFuZCBGcmFtZTo6bV9tYWluRnJhbWUuCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOiBSZW1vdmVkIHRoZSBpc01haW5GcmFtZVZpZXcgZnVuY3Rpb24uIEl0J3Mgbm90
IGJldHRlciB0aGFuCisgICAgICAgIGNhbGxpbmcgZnJhbWUoKS5pc01haW5GcmFtZSgpIGRpcmVj
dGx5LgorCisgICAgICAgICogcGFnZS9NYWluRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWFpbkZyYW1lOjpNYWluRnJhbWUpOiBJbml0aWFsaXplIG1fc2VsZk9ubHlSZWZDb3VudCB0byAw
LgorICAgICAgICAoV2ViQ29yZTo6TWFpbkZyYW1lOjpzZWxmT25seVJlZik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWFpbkZyYW1lOjpzZWxmT25seURlcmVmKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNYWluRnJhbWU6OmRyb3BDaGlsZHJlbik6IEFkZGVkLiBDYWxsZWQgd2hlbiB0
aGUgc2VsZi1vbmx5IHJlZmVyZW5jZQorICAgICAgICBjb3VudCByZWFjaGVzIDAgdG8gYXZvaWQg
YSByZWZlcmVuY2UgY3ljbGUgd2l0aCBzdWJmcmFtZXMuCisKKyAgICAgICAgKiBwYWdlL01haW5G
cmFtZS5oOiBBZGRlZCBuZXcgZGF0YSBtZW1iZXJzIGFzIG1lbnRpb25lZCBhYm92ZS4gQWxzbywg
dGhlCisgICAgICAgIGRlZmluaXRpb24gb2YgdGhlIEZyYW1lOjppc01haW5GcmFtZSBpbmxpbmUg
ZnVuY3Rpb24gZ29lcyBoZXJlLCBzaW5jZSBpdCBjYW4ndAorICAgICAgICBjb21waWxlIHdpdGhv
dXQgdGhlIE1haW5GcmFtZSBjbGFzcyBkZWZpbml0aW9uLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGVy
cyBvZgorICAgICAgICBpc01haW5GcmFtZSBuZWVkIHRvIGluY2x1ZGUgTWFpbkZyYW1lLmgsIHdo
aWNoIHNlZW1zIHJlYXNvbmFibGUgYW5kIGlzIGVhc3kKKyAgICAgICAgdG8gZG8uCisKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOiBBZGRlZCBhc3NlcnRp
b24gdG8gUGFnZTo6bWFpbkZyYW1lIHNpbmNlIGl0IHJldHVybnMgYSByZWZlcmVuY2UuCisgICAg
ICAgIFJlbW92ZWQgUGFnZTo6ZnJhbWVJc01haW5GcmFtZSBzaW5jZSBpdCdzIG5vdCBiZXR0ZXIg
dGhhbiBjYWxsaW5nIGlzTWFpbkZyYW1lCisgICAgICAgIG9uIHRoZSBmcmFtZS4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Vmlz
dWFsVXBkYXRlc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEJlY29t
ZUN1cnJlbnREb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVw
ZGF0ZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJ
blBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0lu
amVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQ
bHVnSW4pOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURvY3VtZW50OjpzaG91bGRTaHJpbmtUb0ZpdCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRMYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQcm9ncmVzc2luZ1N0YXR1
c0NoYW5nZWQpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0
b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUp
OgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Db250cm9sbGVyOjpzdGFydExvYWRlcik6CisgICAgICAgICogcGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcik6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpibHVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjphbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVz
dWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRXaXRoV3JhcCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRGcmFtZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEhlYWRlckhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNldEZvb3RlckhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNo
b3VsZFVwZGF0ZUZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmJlZ2luRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmVuZERlZmVycmVkUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmlzaWJsZUNvbnRl
bnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbGJh
clN0eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Nyb2xs
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
Vmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyk6Cisg
ICAgICAgIFVzZSB0aGUgbmV3IGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZSBpbnN0ZWFkIG9mIFBh
Z2U6OmZyYW1lSXNNYWluRnJhbWUsCisgICAgICAgIFBhZ2U6Om1haW5GcmFtZSwgRnJhbWVMb2Fk
ZXI6OmlzTG9hZGluZ01haW5GcmFtZSwgYW5kIEZyYW1lVmlldzo6aXNNYWluRnJhbWVWaWV3Lgor
CiAyMDEzLTA5LTI4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQYXNzIFZNIGluc3RlYWQgb2YgRXhlY1N0YXRlIHRvIEpTRnVuY3Rpb24gY29uc3RydWN0b3Jz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNDgwZDM1NjBlYjRhOGYyYjBkYzAx
NzRjMGM0Mjg4MGQ3ZTViMWE3ZC4uZjVmYTc1Mzc1NDEyMGRmMjg4MjU2ODJkN2M2OTAyMDQ4OTc3
ZGQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTMtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBG
cmFtZTo6bWFpbkZyYW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICBDYWxsIGlz
TWFpbkZyYW1lLgorCiAyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwN2MyZTE2
NWRhNTNkMTkzMjVkMjE3NzdjNDQwMmMyOTg4MGNkMDE5Li43YTQ1NGJkYWMzNThiMGEwOGMxZjMx
ZTAwODU2ZTZiYTI1ZWJiNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBG
cmFtZTo6bWFpbkZyYW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAg
ICAgIENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IGNkZjA4ODY4MmI2ZjBiMTNmYWIzZTM0ZDkzMjAwMjQxNTQ1MWM1Y2EuLjAwMmVkNTQ4Nzky
OWZiZmNlMjQ1NjE4M2NkNWRkYmYzMzk5ZjQ2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wOS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIEZyYW1lOjptYWluRnJhbWUgYW5kIEZyYW1lOjppc01haW5GcmFtZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIENhbGwg
aXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGJ1aWxkIGZpeCBhZnRlciByMTU2
NTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDUwMTIxZDUzY2RjZmUyOTdhMmFiZDliMTFjMmFkZTc2
ZTJjNTAyODEuLmZhZWNlNjIwNTljMmZhNzk5MjQxOGM2YTMxMWIzOGM0ZGViZTgzYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wOS0yOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZyYW1lOjptYWluRnJhbWUgYW5kIEZyYW1l
Ojppc01haW5GcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyMDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9p
bnN0YWxsXSk6CisgICAgICAgIENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjggIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgZmFpbHMgdG8gYnVpbGQg
d2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBjbGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NDczYTlkMmVmMWEz
MzlhZDBjNDVlYTlkYmEyMGNkYjIzNmI4NDI1Li5lNWI2ZDAyYjU2ZTA1NDE1NjJmZGJmMWQ3ODJi
OGZkZTMwMjRjMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMjggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBGcmFtZTo6bWFpbkZy
YW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyk6CisgICAgICAg
IENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXNzYWdlIHNlbmRpbmcgZnVuY3Rpb25zIHNob3Vs
ZCBvbmx5IGFjY2VwdCBydmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDQ4MWIwYTEzZTdm
ODVlYjRhYjVhZGE5MzU2NTUwN2QyNjU2YTE1NTEuLjQ5N2FhZGY1NTg5NmQ2YTRiNDdiMDA3OGJl
MTFlNDZlMzA1ZWJjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NTksNyArODU5LDYgQEAg
X19aTjdXZWJDb3JlNFBhZ2UxNHNldE1lZGlhVm9sdW1lRWYKIF9fWk43V2ViQ29yZTRQYWdlMTVh
ZGRTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlMxXzEyU2NoZWR1bGVQYWlyRUVFCiBf
X1pON1dlYkNvcmU0UGFnZTE1ZGlkTW92ZU9uc2NyZWVuRXYKIF9fWk43V2ViQ29yZTRQYWdlMTZj
b3VudEZpbmRNYXRjaGVzRVJLTjNXVEY2U3RyaW5nRWpqCi1fX1pON1dlYkNvcmU0UGFnZTE2ZnJh
bWVJc01haW5GcmFtZUVQS05TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTRQYWdlMTZzZXRDYW5TdGFy
dE1lZGlhRWIKIF9fWk43V2ViQ29yZTRQYWdlMTZzZXREZWZlcnNMb2FkaW5nRWIKIF9fWk43V2Vi
Q29yZTRQYWdlMTd3aWxsTW92ZU9mZnNjcmVlbkV2CkBAIC0xNjk0LDcgKzE2OTMsNiBAQCBfX1pO
SzdXZWJDb3JlOUZyYW1lVmlldzExbmVlZHNMYXlvdXRFdgogX19aTks3V2ViQ29yZTlGcmFtZVZp
ZXcxM2lzVHJhbnNwYXJlbnRFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxM3BhaW50QmVoYXZp
b3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxNGRpZEZpcnN0TGF5b3V0RXYKLV9fWk5LN1dl
YkNvcmU5RnJhbWVWaWV3MTVpc01haW5GcmFtZVZpZXdFdgogX19aTks3V2ViQ29yZTlGcmFtZVZp
ZXcxN2NvbnZlcnRUb1JlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU183SW50UmVjdEUK
IF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTdjb252ZXJ0VG9SZW5kZXJlckVQS05TXzEyUmVuZGVy
T2JqZWN0RVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWJhc2VCYWNr
Z3JvdW5kQ29sb3JFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggODQzNzExZGI5ZGViYzc1
OTc1MDA5OGMwMzcxNDQyODkyOTMxMWU1My4uMjQzMTI0MDM0ODI2MGVkYWZjOGI1MDliMDQzMjRh
OTJjZjUxNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZChib29sIHZpc3VhbFVwZGF0
ZXNBbGxvd2VkKQogICAgICAgICB1cGRhdGVMYXlvdXQoKTsKIAogICAgIGlmIChQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKCkpKSB7CisgICAgICAgIGlmIChmcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAg
ICAgICBmcmFtZVZpZXctPmFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMoRGlkRmlyc3RQYWludEFm
dGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKICAgICAgICAgICAgIGlmIChwYWdl
LT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgJiBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJl
c3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKQogICAgICAgICAgICAgICAgIGZyYW1lKCktPmxvYWRl
cigpLmRpZExheW91dChEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVu
ZGVyaW5nKTsKQEAgLTIwNDIsMTMgKzIwNDIsMTMgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQmVjb21l
Q3VycmVudERvY3VtZW50SW5GcmFtZSgpCiAgICAgLy8gRklYTUU6IERvaW5nIHRoaXMgZXZlcnkg
dGltZSBpcyBhIHdhc3RlLiBJZiB0aGUgY3VycmVudCBkb2N1bWVudCBhbmQgaXRzCiAgICAgLy8g
c3ViZnJhbWVzJyBkb2N1bWVudHMgaGF2ZSBubyB3aGVlbCBldmVudCBoYW5kbGVycywgdGhlbiB0
aGUgY291bnQgZGlkIG5vdCBjaGFuZ2UsCiAgICAgLy8gdW5sZXNzIHRoZSBkb2N1bWVudHMgdGhl
eSBhcmUgcmVwbGFjaW5nIGhhZCB3aGVlbCBldmVudCBoYW5kbGVycy4KLSAgICBpZiAocGFnZSgp
ICYmIHBhZ2UoKS0+ZnJhbWVJc01haW5GcmFtZShtX2ZyYW1lKSkKKyAgICBpZiAocGFnZSgpICYm
IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VXaGVlbEV2ZW50SGFuZGxlckNv
dW50Q2hhbmdlZCgqcGFnZSgpKTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLy8g
RklYTUU6IERvaW5nIHRoaXMgb25seSBmb3IgdGhlIG1haW4gZnJhbWUgaXMgaW5zdWZmaWNpZW50
LgogICAgIC8vIEEgc3ViZnJhbWUgY291bGQgaGF2ZSB0b3VjaCBldmVudCBoYW5kbGVycy4KLSAg
ICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXJzKCkgJiYgcGFnZSgpICYmIHBhZ2UoKS0+ZnJhbWVJ
c01haW5GcmFtZShtX2ZyYW1lKSkKKyAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXJzKCkgJiYg
cGFnZSgpICYmIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkubmVlZFRvdWNoRXZlbnRzKHRydWUpOwogI2VuZGlmCiAKQEAgLTI5NjUsNyAr
Mjk2NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZl
YXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50czo6VHlwZSBvCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVZpZXdwb3J0QXJndW1lbnRzKCkKIHsKLSAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+ZnJhbWVJ
c01haW5GcmFtZShmcmFtZSgpKSkgeworICAgIGlmIChwYWdlKCkgJiYgZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0
UHJvcGVydGllc0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpCiAgICAgICAgICAgICAvLyBm
dW5jdGlvbi4gSXQgd291bGQgYmUgbmljZSBpZiB0aGVyZSB3YXMgbW9yZSBzeW1tZXRyeSBoZXJl
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4Njk4CiAgICAgICAgICAgICB2LT5jYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOwotICAg
ICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZnJhbWVJc01haW5GcmFtZShtX2ZyYW1lKSkgewor
ICAgICAgICAgICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAg
ICAgICAgICAgIHYtPnJlc2V0U2Nyb2xsYmFyc0FuZENsZWFyQ29udGVudHNTaXplKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5jbGVhclN0YXRlVHJlZSgpOwpAQCAtNjA1MSw3ICs2MDUxLDcg
QEAgdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJX
b3JsZCogd29ybGQpCiAgICAgaWYgKCFqc1N0cmluZykKICAgICAgICAganNTdHJpbmcgPSBwbHVn
SW5zSmF2YVNjcmlwdDsKIAotICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVh
dGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcpLCB3b3JsZCk7CisgICAgbV9mcmFt
ZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUo
anNTdHJpbmcpLCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IGVkMTM1YTcx
ZWM4NTM3YWRmMjQ1NmRjMTM2MTI4MThlNzM1M2QzZmEuLjY5OTc4Zjg5Mjg2MTFjODY4NTRmNjY0
NTg0YzAwZTE1NDhhY2ZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CkBAIC0xNTcsNyArMTU3LDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFt
ZSkKICAgICBBU1NFUlQobV92aWV3KTsKIAogICAgIGlmIChmcmFtZS5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpID09ICZmcmFtZSkKLSAgICAgICAgZnJhbWUucGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUoJmZyYW1lLnBhZ2UoKS0+bWFpbkZy
YW1lKCkpOworICAgICAgICBmcmFtZS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3Vz
ZWRGcmFtZSgmZnJhbWUubWFpbkZyYW1lKCkpOwogCiAgICAgLy8gQ3VzdG9tIHNjcm9sbGJhciBy
ZW5kZXJlcnMgd2lsbCBnZXQgcmVhdHRhY2hlZCB3aGVuIHRoZSBkb2N1bWVudCBjb21lcyBvdXQg
b2YgdGhlIHBhZ2UgY2FjaGUKICAgICBtX3ZpZXctPmRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDE5YWY1NmFmN2EzMTkxN2Fm
ZTI5ZmRhYzlmYzFiYWU5YzEyODI1NzAuLjk5ZjhlZDQ5YzFjMGJlOTIwZjY2ZWIxZDhlY2FiOGFi
NGJhYzlkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCBDYWNoZWRQYWdlOjp+Q2FjaGVkUGFnZSgpCiB2b2lkIENhY2hlZFBhZ2U6OnJlc3Rv
cmUoUGFnZSYgcGFnZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRNYWluRnJhbWUpOwotICAgIEFT
U0VSVChwYWdlLmZyYW1lSXNNYWluRnJhbWUoJm1fY2FjaGVkTWFpbkZyYW1lLT52aWV3KCktPmZy
YW1lKCkpKTsKKyAgICBBU1NFUlQobV9jYWNoZWRNYWluRnJhbWUtPnZpZXcoKS0+ZnJhbWUoKS5p
c01haW5GcmFtZSgpKTsKICAgICBBU1NFUlQoIXBhZ2Uuc3ViZnJhbWVDb3VudCgpKTsKIAogICAg
IG1fY2FjaGVkTWFpbkZyYW1lLT5vcGVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKaW5kZXggNmEyMzdmM2M2NTlkZTE4MDYzNDU2MDY1MGViNWNkNGFhMGIzMGQxMy4uMzI5NDIw
NjgwNjVkYWU1NzZhNTdjMmNkNzM3NTZkZjE4ZTA0ZmE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNhY2hlOjptYXJrUGFn
ZXNGb3JGdWxsU3R5bGVSZWNhbGMoUGFnZSogcGFnZSkKIHsKICAgICBmb3IgKEhpc3RvcnlJdGVt
KiBjdXJyZW50ID0gbV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bV9uZXh0KSB7
CiAgICAgICAgIENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBjdXJyZW50LT5tX2NhY2hlZFBhZ2Uu
Z2V0KCk7Ci0gICAgICAgIGlmIChwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKCZjYWNoZWRQYWdlLT5j
YWNoZWRNYWluRnJhbWUoKS0+dmlldygpLT5mcmFtZSgpKSkKKyAgICAgICAgaWYgKCZwYWdlLT5t
YWluRnJhbWUoKSA9PSAmY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPnZpZXcoKS0+ZnJh
bWUoKSkKICAgICAgICAgICAgIGNhY2hlZFBhZ2UtPm1hcmtGb3JGdWxsU3R5bGVSZWNhbGMoKTsK
ICAgICB9CiB9CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBQYWdlQ2FjaGU6Om1hcmtQYWdlc0Zv
ckRldmljZVNjYWxlQ2hhbmdlZChQYWdlKiBwYWdlKQogewogICAgIGZvciAoSGlzdG9yeUl0ZW0q
IGN1cnJlbnQgPSBtX2hlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5tX25leHQpIHsK
ICAgICAgICAgQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSA9IGN1cnJlbnQtPm1fY2FjaGVkUGFnZS5n
ZXQoKTsKLSAgICAgICAgaWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJmNhY2hlZFBhZ2UtPmNh
Y2hlZE1haW5GcmFtZSgpLT52aWV3KCktPmZyYW1lKCkpKQorICAgICAgICBpZiAoJnBhZ2UtPm1h
aW5GcmFtZSgpID09ICZjYWNoZWRQYWdlLT5jYWNoZWRNYWluRnJhbWUoKS0+dmlldygpLT5mcmFt
ZSgpKQogICAgICAgICAgICAgY2FjaGVkUGFnZS0+bWFya0ZvckRldmljZVNjYWxlQ2hhbmdlZCgp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGZkY2NiNzI3ZDVlOGQ1NTZiMDY5ZmQ1ZDA4YTA0YTBlY2M2MWY1NzMuLmM2
MzZjZDQxMWM0OWNhYTkxMzU0YzAwZGI2ZGUwZmQzZjA5OGVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNjA1LDcgKzYwNSw3IEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1
Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBp
bk1haW5GcmFtZSA9IGRvY3VtZW50KCkucGFnZSgpLT5mcmFtZUlzTWFpbkZyYW1lKGRvY3VtZW50
KCkuZnJhbWUoKSk7CisgICAgYm9vbCBpbk1haW5GcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKS0+
aXNNYWluRnJhbWUoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLmlzUGx1Z2luRG9jdW1lbnQoKSAm
JiBpbk1haW5GcmFtZSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gZG9jdW1l
bnQgaW4gbWFpbiBmcmFtZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggYWNiNjcyZGEyZTY1ZTZjNjUyMDY5ZDQ1ZTQ4OTkwMWJhMjg1NzE4Zi4uZWYwNWRi
OTQwM2I0MzBiOTRkOTUzNWRkZjA5OTgzNjljYzBmNWJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgQ2FjaGVkSW1hZ2UqIEltYWdlRG9j
dW1lbnQ6OmNhY2hlZEltYWdlKCkKIAogYm9vbCBJbWFnZURvY3VtZW50OjpzaG91bGRTaHJpbmtU
b0ZpdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCktPnNldHRpbmdzKCkuc2hyaW5rc1N0
YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZyYW1lKCktPnBhZ2UoKS0+ZnJhbWVJc01haW5GcmFt
ZShmcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+c2V0dGluZ3MoKS5zaHJpbmtzU3RhbmRh
bG9uZUltYWdlc1RvRml0KCkgJiYgZnJhbWUoKS0+aXNNYWluRnJhbWUoKTsKIH0KIAogdm9pZCBJ
bWFnZUV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cAppbmRleCAyNzMyNDI5OTQxM2M2Y2M5N2QwNzJmNWI2NWVjZmE0OTgyNGVlNzIyLi44ZWM1NWZk
MjJiODg0YWM3MzZkOWZiMGI0ZWE3OTRjZWY4YTI1YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTEzOSwxMSArMTM5LDYgQEAgdm9pZCBJbnNw
ZWN0b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQogICAgIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJJbnNwZWN0ZWRPYmplY3Rz
KCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVybCkKLXsKLSAgICByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlLT5mcmFtZUlzTWFpbkZyYW1lKGxvYWRlci0+ZnJhbWUoKSkgJiYgcmVx
dWVzdFVybCA9PSBsb2FkZXItPnJlcXVlc3RVUkwoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQpCiB7CiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0
ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmgKaW5kZXggNzcyYzkyYmJmMTY0MDg2MTkxYTE1NGFhODFkNmUyODU4NTc2ZmI5
Ny4uNmQ0OTJiMmVmNDc1YzZjYjhlOWRjMmQ2MzhlYmE3ZTc3ZDllYmY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTkyLDIyICs5MiwxMyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqKTsK
IAotICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLSAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKLSNlbmRpZgot
Ci0gICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciosIGNvbnN0IFVS
TCYgcmVxdWVzdFVybCk7Ci0KICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVj
dG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKIAotICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4gPiBt
X3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKLSAgICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gPiBtX3Bl
bmRpbmdJbnNwZWN0RGF0YTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IElu
amVjdGVkU2NyaXB0Rm9yT3JpZ2luTWFwOwotICAgIEluamVjdGVkU2NyaXB0Rm9yT3JpZ2luTWFw
IG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW47CisgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5n
Pj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7CisgICAgcGFpcjxSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBt
X3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2luamVj
dGVkU2NyaXB0Rm9yT3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDI0
YjRmNWE3M2ZiN2MzNGY4ZDcwZTM5MzRjNzU1NjI3ZWFiMDY0MDEuLmUwZWViNDNiMmQ1ZDQzMWU2
MzlhMzlkNGI2Yzc1YmFjMWE1YjQyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUs
IERPTVdyYXBwZXJXbwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VwcG9zZWQgdG8gc2VydmUg
YXMgSW5zcGVjdG9yRnJvbnRlbmQgbm90aWZ5IGluc3BlY3RvciBmcm9udGVuZAogICAgIC8vIGNs
aWVudCB0aGF0IGl0J3MgY2xlYXJlZCBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGV4cG9zZSBpbnNw
ZWN0b3IgYmluZGluZ3MuCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgJiYgbV9w
YWdlLT5mcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGM3
YzUzOGVhMjUyNmM2OTBiYThkYjk3ZDI5NDY1OTRjOTBiY2MyZTQuLjExYmQ1ODM3MGIzODY3YTE4
YjIwMDUwNjJlOGRlYWM1NmM0NDVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC05MDMsNyArOTAzLDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnQKICAgICBpZiAoIWluc3BlY3RvckFnZW50IHx8ICFpbnNw
ZWN0b3JBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAocGFnZS0+ZnJhbWVJc01haW5GcmFtZShsb2FkZXItPmZyYW1lKCkpKSB7CisgICAg
aWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoSW5zcGVj
dG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JDb25zb2xlQWdlbnQoKSkKICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+cmVzZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCAxMDcyMGEwNDY0Nzk5MzUxMjcyZjFiOGFhMWUzNDI4NzkzMjRkNDQ0Li40OWE3YTlkOTE0
YWM5N2MzMTQxYzVjZGVkMjU1MTdkYjkzYzViMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtODczLDcgKzg3Myw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZy
YW1lLCBET01XcmFwcGVyV29yCiAgICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlLT5mcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7CiAKICAgICBpZiAoIW1f
ZnJvbnRlbmQpCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omxv
YWRFdmVudEZpcmVkKCkKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKG1fcGFnZS0+ZnJhbWVJc01haW5G
cmFtZShsb2FkZXItPmZyYW1lKCkpKSB7CisgICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgewogICAgICAgICBtX3NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gbV9wZW5k
aW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgICAgIG1fc2NyaXB0UHJlcHJvY2Vz
c29yID0gbV9wZW5kaW5nU2NyaXB0UHJlcHJvY2Vzc29yOwogICAgICAgICBtX3BlbmRpbmdTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggYmJmYmExMzVhN2JkY2NlNGVjNGRlYzdlMWFhNGExY2Y1
ODBjM2FkNy4uNDE0MjE3YTY0Y2NlMTU1YmMxN2FjYWRjZTJhNjJjZWQwZGEwM2I2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJh
c2UgVVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRo
ZQogICAgIC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVu
IHdlIHJlZGlyZWN0LgotICAgIGlmIChmcmFtZUxvYWRlcigpLT5pc0xvYWRpbmdNYWluRnJhbWUo
KSkKKyAgICBpZiAoZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAg
ICBuZXdSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1JlcXVlc3QudXJsKCkpOwog
CiAgICAgLy8gSWYgd2UncmUgZmllbGRpbmcgYSByZWRpcmVjdCBpbiByZXNwb25zZSB0byBhIFBP
U1QsIGZvcmNlIGEgbG9hZCBmcm9tIG9yaWdpbiwgc2luY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IGYzZWY2OWU3YTUxOTQ3ODQyZDljMGU3YWUyMDhmMTA5ZGNjYmIz
ODguLjJjYmM1MGRhMjM2MGIxYmE3ZmI2ZDhkYzYwNTM2ODVjOTMzNTYyNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTgzMSw3ICsxODMxLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiAg
ICAgc2V0U3RhdGUoRnJhbWVTdGF0ZUNvbW1pdHRlZFBhZ2UpOwogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLSAgICBpZiAoaXNMb2FkaW5nTWFpbkZyYW1lKCkpCisgICAgaWYgKG1fZnJhbWUu
aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
Lm5lZWRUb3VjaEV2ZW50cyhmYWxzZSk7CiAjZW5kaWYKIApAQCAtMTg0Niw3ICsxODQ2LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqIGNhY2hl
ZFBhZ2UpCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGxvYWQgd2l0aGluIGEgZnJh
bWUgaXMgYSBuYXZpZ2F0aW9uIHdpdGhpbiBhIGJhY2svZm9yd2FyZCBsaXN0IHRoYXQgd2FzIGF0
dGFjaGVkCiAgICAgICAgICAgICAgICAgLy8gd2l0aG91dCBhbnkgb2YgdGhlIGl0ZW1zIGJlaW5n
IGxvYWRlZCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBoaXN0b3J5IGluIGEgc2ltaWxhciBt
YW5uZXIgYXMKICAgICAgICAgICAgICAgICAvLyBmb3IgYSBzdGFuZGFyZCBsb2FkIHdpdGggdGhl
IGV4Y2VwdGlvbiBvZiB1cGRhdGluZyB0aGUgYmFjay9mb3J3YXJkIGxpc3QgKDxyZGFyOi8vcHJv
YmxlbS84MDkxMTAzPikuCi0gICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlTWFjaGluZS5jb21t
aXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiBpc0xvYWRpbmdNYWluRnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3Vt
ZW50TG9hZCgpICYmIG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAgICAg
aGlzdG9yeSgpLnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5Q29udHJvbGxlcjo6VXBkYXRl
QWxsRXhjZXB0QmFja0ZvcndhcmRMaXN0KTsKIAogICAgICAgICAgICAgICAgIGhpc3RvcnkoKS51
cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiB7CiAgICAgQVNT
RVJUKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKG1fZnJhbWUucGFnZSgp
KTsKLSAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCktPmZyYW1lSXNNYWluRnJhbWUoJm1fZnJhbWUp
KTsKKyAgICBBU1NFUlQobV9mcmFtZS5pc01haW5GcmFtZSgpKTsKIAogICAgIG1fZnJhbWUubmF2
aWdhdGlvblNjaGVkdWxlcigpLmNhbmNlbCgpOwogCkBAIC0yMDI3LDExICsyMDI3LDYgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6aXNIb3N0ZWRCeU9iamVjdEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBvd25lciAmJiBvd25lci0+aGFzVGFnTmFtZShvYmplY3RUYWcpOwogfQogCi1ib29sIEZyYW1l
TG9hZGVyOjppc0xvYWRpbmdNYWluRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1l
LnBhZ2UoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+ZnJhbWVJc01haW5GcmFtZSgmbV9mcmFtZSk7Ci19
Ci0KIGJvb2wgRnJhbWVMb2FkZXI6OmlzUmVwbGFjaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVwbGFjZTsKQEAgLTIxNzksNyArMjE3NCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIAogICAg
ICAgICAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzQ29tcGxldGVkKCk7CiAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJm1fZnJhbWUpKQorICAgICAgICAgICAgICAgIGlm
IChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnJlc2V0
UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwogICAgICAgICAgICAgfQogCkBAIC0yMjg2
LDEwICsyMjgxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9h
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiB2b2lkIEZyYW1lTG9hZGVyOjpk
aWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAgICBBU1NF
UlQocGFnZS0+ZnJhbWVJc01haW5GcmFtZSgmbV9mcmFtZSkpOwotI2VuZGlmCisgICAgQVNTRVJU
KG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZExheW91
dChtaWxlc3RvbmVzKTsKIH0KQEAgLTIzNTMsNyArMjM0NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrTG9hZENvbXBsZXRlKCkKICAgICAvLyBGSVhNRTogQWx3YXlzIHRyYXZlcnNpbmcgdGhl
IGVudGlyZSBmcmFtZSB0cmVlIGlzIGEgYml0IGluZWZmaWNpZW50LCBidXQgCiAgICAgLy8gaXMg
Y3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUgcHJldmlvdXMgaGlzdG9y
eSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIFZlY3RvcjxSZWY8RnJhbWU+LCAxNj4gZnJhbWVz
OwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZtX2ZyYW1lLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICBmcmFtZXMuYXBwZW5kKCpmcmFtZSk7CiAK
ICAgICAvLyBUbyBwcm9jZXNzIGNoaWxkcmVuIGJlZm9yZSB0aGVpciBwYXJlbnRzLCBpdGVyYXRl
IHRoZSB2ZWN0b3IgYmFja3dhcmRzLgpAQCAtMjQ0Niw3ICsyNDM4LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBG
cmFtZUxvYWRUeXAKICAgICAvLyBEb24ndCBzZXQgdGhlIGNvb2tpZSBwb2xpY3kgVVJMIGlmIGl0
J3MgYWxyZWFkeSBiZWVuIHNldC4KICAgICAvLyBCdXQgbWFrZSBzdXJlIHRvIHNldCBpdCBvbiBh
bGwgcmVxdWVzdHMgcmVnYXJkbGVzcyBvZiBwcm90b2NvbCwgYXMgaXQgaGFzIHNpZ25pZmljYW5j
ZSBiZXlvbmQgdGhlIGNvb2tpZSBwb2xpY3kgKDxyZGFyOi8vcHJvYmxlbS82NjE2NjY0PikuCiAg
ICAgaWYgKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKG1haW5SZXNvdXJjZSAmJiBpc0xvYWRpbmdNYWluRnJhbWUoKSkKKyAgICAgICAgaWYg
KG1haW5SZXNvdXJjZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QudXJsKCkpOwogICAgICAgICBlbHNl
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgICAg
ICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGRvY3VtZW50LT5maXJzdFBhcnR5Rm9y
Q29va2llcygpKTsKQEAgLTI1ODYsOCArMjU3OCw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
CiAgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAg
YWRkSFRUUE9yaWdpbklmTmVlZGVkKGluaXRpYWxSZXF1ZXN0LCBvdXRnb2luZ09yaWdpbigpKTsK
IAotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIGluaXRpYWxS
ZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKS51cmwoKSk7CisgICAgaW5pdGlhbFJlcXVlc3Qu
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkpOwogICAgIAogICAgIGFkZEV4dHJhRmllbGRz
VG9TdWJyZXNvdXJjZVJlcXVlc3QoaW5pdGlhbFJlcXVlc3QpOwogCkBAIC0yODQwLDkgKzI4MzEs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzcwogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlv
biByZXF1ZXN0IGNhbWUgZnJvbSB0aGUgYmFjay9mb3J3YXJkIG1lbnUsIGFuZCB3ZSBwdW50IG9u
IGl0LCB3ZSBoYXZlIHRoZSAKICAgICAgICAgLy8gcHJvYmxlbSB0aGF0IHdlIGhhdmUgb3B0aW1p
c3RpY2FsbHkgbW92ZWQgdGhlIGIvZiBjdXJzb3IgYWxyZWFkeSwgc28gbW92ZSBpdCBiYWNrLiAg
Rm9yIHNhbml0eSwgCiAgICAgICAgIC8vIHdlIG9ubHkgZG8gdGhpcyB3aGVuIHB1bnRpbmcgYSBu
YXZpZ2F0aW9uIGZvciB0aGUgdGFyZ2V0IGZyYW1lIG9yIHRvcC1sZXZlbCBmcmFtZS4gIAotICAg
ICAgICBpZiAoKGlzVGFyZ2V0SXRlbSB8fCBpc0xvYWRpbmdNYWluRnJhbWUoKSkgJiYgaXNCYWNr
Rm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSkgeworICAgICAgICBp
ZiAoKGlzVGFyZ2V0SXRlbSB8fCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpICYmIGlzQmFja0Zvcndh
cmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSkpIHsKICAgICAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoSGlz
dG9yeUl0ZW0qIHJlc2V0SXRlbSA9IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3Rvcnko
KS5jdXJyZW50SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKEhpc3RvcnlJdGVtKiByZXNl
dEl0ZW0gPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRl
bSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuc2V0Q3VycmVu
dEl0ZW0ocmVzZXRJdGVtKTsKICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC0yODYyLDcgKzI4NTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRB
ZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzcwogCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICBpZiAocGFnZS0+ZnJhbWVJ
c01haW5GcmFtZSgmbV9mcmFtZSkpCisgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc3VtZSgpOwogICAg
IH0KICNlbmRpZgpAQCAtMzMyMiwxNCArMzMxMywxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNw
YXRjaERpZENvbW1pdExvYWQoKQogCiAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAKLSAgICBpZiAoaXNMb2FkaW5nTWFpbkZyYW1lKCkpIHsKKyAgICBpZiAobV9mcmFtZS5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZXNldFNlZW5QbHVnaW5z
KCk7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZXNldFNlZW5NZWRpYUVuZ2luZXMoKTsKICAg
ICB9CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJh
bWUsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUucGFnZSgpLT5m
cmFtZUlzTWFpbkZyYW1lKCZtX2ZyYW1lKSkKKyAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgp
KQogICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+ZmVhdHVyZU9ic2VydmVyKCktPmRpZENvbW1pdExv
YWQoKTsKIAogfQpAQCAtMzM2OCw3ICszMzU5LDcgQEAgTmV0d29ya2luZ0NvbnRleHQqIEZyYW1l
TG9hZGVyOjpuZXR3b3JraW5nQ29udGV4dCgpIGNvbnN0CiAKIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQcm9ncmVzc2luZ1N0YXR1c0NoYW5nZWQoKQogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1f
ZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgdmlldy0+dXBkYXRlTGF5ZXJGbHVzaFRo
cm90dGxpbmdJbkFsbEZyYW1lcygpOwogICAgIHZpZXctPmFkanVzdFRpbGVkQmFja2luZ0NvdmVy
YWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDg2NGRiNjU5NTA2
Y2ExZGNjOGZiOGE3Y2IxYTM4OTJhNTQ4N2I2ZjIuLmQyNGNlYTg3YzVkYzQ5NGRiMjExZTZlNGEx
ZWJiNWZlZWRmZmNjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xNjYs
NyArMTY2LDYgQEAgcHVibGljOgogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICBib29sIGlzSG9zdGVkQnlPYmplY3RF
bGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xvYWRpbmdNYWluRnJhbWUoKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNSZXBsYWNpbmcoKSBjb25zdDsKICAgICB2b2lkIHNldFJlcGxhY2luZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggMjQyODg1
NWVjYmMxYTc0ZGM0YzRmNjI2MGI1YTVkMDUzNDM1ZGRlOS4uZDU2NTk4ZjQ5NDJhZGRjODEwMGJm
ZTA5NTcxMTM1NmViNTc3YjQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNh
dmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAg
ICAgICAgaXRlbS0+c2V0U2Nyb2xsUG9pbnQobV9mcmFtZS52aWV3KCktPnNjcm9sbFBvc2l0aW9u
KCkpOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgIGlmIChwYWdlICYm
IHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJm1fZnJhbWUpKQorICAgIGlmIChwYWdlICYmIG1fZnJh
bWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgaXRlbS0+c2V0UGFnZVNjYWxlRmFjdG9yKHBhZ2Ut
PnBhZ2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBncmVhdCB0
byB3b3JrIG91dCBhIHdheSB0byBwdXQgdGhpcyBjb2RlIGluIFdlYkNvcmUgaW5zdGVhZCBvZiBj
YWxsaW5nIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KQEAgLTEzNCwxMyArMTM0LDEzIEBAIHZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4Njk4CiAgICAg
aWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgIFBhZ2UqIHBh
Z2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZnJhbWVJc01h
aW5GcmFtZSgmbV9mcmFtZSkpIHsKKyAgICAgICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS5pc01haW5G
cmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKHZp
ZXcpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF2aWV3LT53YXNTY3JvbGxlZEJ5VXNlcigp
KSB7Ci0gICAgICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKCZtX2Zy
YW1lKSAmJiBtX2N1cnJlbnRJdGVtLT5wYWdlU2NhbGVGYWN0b3IoKSkKKyAgICAgICAgICAgIGlm
IChwYWdlICYmIG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBtX2N1cnJlbnRJdGVtLT5wYWdlU2Nh
bGVGYWN0b3IoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3IobV9j
dXJyZW50SXRlbS0+cGFnZVNjYWxlRmFjdG9yKCksIG1fY3VycmVudEl0ZW0tPnNjcm9sbFBvaW50
KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbFBv
c2l0aW9uKG1fY3VycmVudEl0ZW0tPnNjcm9sbFBvaW50KCkpOwpAQCAtNDY0LDkgKzQ2NCw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIC8vIFRl
bGwgYWxsIG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9u
YWwgaXRlbXMgYW5kCiAgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAg
V2UnbGwgYXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKICAgICAgICAgLy8gY29t
bWl0dGVkKSBhbmQgaXRzIGNoaWxkcmVuICh3aGljaCB3aWxsIGJlIHJlcGxhY2VkKS4KLSAgICAg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgICAgICBBU1NFUlQocGFnZSk7Ci0g
ICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRh
dGVGb3JDb21taXQoKTsKKyAgICAgICAgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0
b3J5KCkucmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7CiAgICAgfQogfQogCkBAIC01MzEsNyAr
NTI5LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2
aWdhdGlvbigpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpc2l0ZWRMaW5rKHBhZ2UsIG1f
ZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
Lmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7Cisg
ICAgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlVXBkYXRl
Rm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogCiAgICAgaWYgKG1fY3VycmVudEl0ZW0pIHsK
ICAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0VVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkp
OwpAQCAtNzk2LDcgKzc5NCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUJhY2tG
b3J3YXJkTGlzdENsaXBwZWRBdFRhcmdldChib29sIGRvQ2xpcCkKICAgICBpZiAobV9mcmFtZS5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBwYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKTsKKyAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1l
Lm1haW5GcmFtZSgpLmxvYWRlcigpOwogCiAgICAgZnJhbWVMb2FkZXIuY2hlY2tEaWRQZXJmb3Jt
Rmlyc3ROYXZpZ2F0aW9uKCk7CiAKQEAgLTgzOSw3ICs4MzcsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIC8vIEdldCBhIEhpc3RvcnlJdGVtIHRy
ZWUgZm9yIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUuCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b3BJdGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1U
cmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0gPSBt
X2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5jcmVhdGVJdGVtVHJlZShtX2Zy
YW1lLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gT3ZlcnJpZGUgZGF0YSBpbiB0aGUgY3VycmVudCBp
dGVtIChjcmVhdGVkIGJ5IGNyZWF0ZUl0ZW1UcmVlKSB0byByZWZsZWN0CiAgICAgLy8gdGhlIHB1
c2hTdGF0ZSgpIGFyZ3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25D
b250cm9sbGVyLmNwcAppbmRleCBhZmU2N2I3OWUzYTFjMzFhZDU0NDY3NDI4YmY3NDg4ZjYxOWU2
Y2M2Li44NjFlNmFhMjkyNDg0ZTA3OGZmOTdmMjk1NGRkN2YyYjQ0NmZmZDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMzAsNyArMTMw
LDggQEAgdm9pZCBJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIoKQogewogICAgIC8vIEZJWE1F
OiBXZSBraWNrIG9mZiB0aGUgaWNvbiBsb2FkZXIgd2hlbiB0aGUgZnJhbWUgaXMgZG9uZSByZWNl
aXZpbmcgaXRzIG1haW4gcmVzb3VyY2UuCiAgICAgLy8gQnV0IHdlIHNob3VsZCBpbnN0ZWFkIGRv
IGl0IHdoZW4gd2UncmUgZG9uZSBwYXJzaW5nIHRoZSBoZWFkIGVsZW1lbnQuCi0gICAgaWYgKCFt
X2ZyYW1lLT5sb2FkZXIoKS5pc0xvYWRpbmdNYWluRnJhbWUoKSkKKworICAgIGlmICghbV9mcmFt
ZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpY29uRGF0YWJh
c2UoKS5pc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Nj
cm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJv
bGxlci5jcHAKaW5kZXggMmFmZjMzYTVjNDY4MmY1ZjUyNWUzYzJkM2RiMjIxZmIzYzY1ZjFiYy4u
Y2MyM2RkMjQ2OWEwNmIwNzFmZmE0NmNiNThjZTA2MWU1NWQxMjkyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKQEAgLTExNiwxMCArMTE2LDggQEAg
dm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRl
cmVySXNCZWluZ0Rlc3Ryb3llZCkKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIC8v
IElmIHdlJ3JlIG5vdCBpbiB0aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGFyZSBu
b3QgZG9pbmcgYSBwYW5TY3JvbGwgYW55IG1vcmUuCi0gICAgaWYgKEZyYW1lKiBtYWluRnJhbWUg
PSBnZXRNYWluRnJhbWUoJmZyYW1lKSkgewotICAgICAgICBpZiAoJmZyYW1lICE9IG1haW5GcmFt
ZSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGlkUGFuU2Nyb2xsU3Rv
cCgpOwotICAgIH0KKyAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgIGZyYW1l
Lm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRpZFBhblNjcm9sbFN0b3AoKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggYWE5M2Y3NTJiZjYzNzhkYjY3ZTVjNDJjYTQ5NDNhMWZiYmMwOTlmNS4uYTYzYzA3MzM4MWJl
ZmFlM2U2MTE2YmVlNmJhYTk1Nzk5MDkzYmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAgICAgfQogI2VuZGlmCiAK
LSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZSAhPSAmZnJhbWUtPnBh
Z2UoKS0+bWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYg
IWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9w
ZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTAzMzgwMTY2MjIxYjFjNmRmNWIz
ODgwMWI5YTBjZjAwODY3YTkzYy4uOGMyNTA2Nzc5NTkzYTM0NWMwODE3NGM5ZTY2YTYzMzAwNzI4
NDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjE1LDEwICsyMTUsOSBAQCBz
dGF0aWMgYm9vbCBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnMoRE9NV2luZG93KiB3aW5kb3cp
CiAgICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpCisgICAgaWYgKCFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoZnJhbWUpOworICAgIHJldHVy
biBmcmFtZS0+aXNNYWluRnJhbWUoKTsKIH0KIAogYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoQWxs
UGVuZGluZ0JlZm9yZVVubG9hZEV2ZW50cygpCkBAIC05MDYsNyArOTA1LDcgQEAgdm9pZCBET01X
aW5kb3c6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgfQogCiAg
ICAgLy8gSWYgd2UncmUgYSB0b3AgbGV2ZWwgd2luZG93LCBicmluZyB0aGUgd2luZG93IHRvIHRo
ZSBmcm9udC4KLSAgICBpZiAocGFnZS0+ZnJhbWVJc01haW5GcmFtZShtX2ZyYW1lKSAmJiBhbGxv
d0ZvY3VzKQorICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpICYmIGFsbG93Rm9jdXMpCiAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzKCk7CiAKICAgICBpZiAoIW1fZnJhbWUpCkBAIC05
MzIsNyArOTMxLDcgQEAgdm9pZCBET01XaW5kb3c6OmJsdXIoKQogICAgIGlmIChtX2ZyYW1lLT5z
ZXR0aW5ncygpLndpbmRvd0ZvY3VzUmVzdHJpY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9mcmFtZSAhPSAmcGFnZS0+bWFpbkZyYW1lKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5p
c01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBwYWdlLT5jaHJvbWUoKS51bmZv
Y3VzKCk7CkBAIC05NDcsNyArOTQ2LDcgQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9mcmFtZSAhPSAmcGFnZS0+bWFpbkZyYW1lKCkpCisgICAgaWYgKCFtX2Zy
YW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29udGV4dCkg
ewpAQCAtMTQ1MiwxMCArMTQ1MSw5IEBAIGJvb2wgRE9NV2luZG93OjphbGxvd2VkVG9DaGFuZ2VX
aW5kb3dHZW9tZXRyeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY29uc3QgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAobV9mcmFtZSAhPSAmcGFnZS0+bWFpbkZyYW1lKCkpCisgICAgaWYgKCFtX2Zy
YW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gUHJldmVu
dCB3ZWIgY29udGVudCBmcm9tIHRyaWNraW5nIHRoZSB1c2VyIGludG8gaW5pdGlhdGluZyBhIGRy
YWcuCiAgICAgaWYgKG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLm1vdXNlUHJlc3NlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdmMzAwYTUwZmYyYTIyODBlNzk3Yzc0
MTI2NjNmMzQzYWM1NWNjNTkuLmQzZjhiMzgxYzY2OTZmMTFiMTk3MjEzNTY1YjYxZDc0MjQ2MTlj
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMjksMTUgKzEwMjks
MTMgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgSGl0VGUKIHsKICAgICAvLyBXZSBhbHdheXMgc2VuZCBo
aXRUZXN0UmVzdWx0QXRQb2ludCB0byB0aGUgbWFpbiBmcmFtZSBpZiB3ZSBoYXZlIG9uZSwKICAg
ICAvLyBvdGhlcndpc2Ugd2UgbWlnaHQgaGl0IGFyZWFzIHRoYXQgYXJlIG9ic2N1cmVkIGJ5IGhp
Z2hlciBmcmFtZXMuCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewotICAg
ICAgICBGcmFtZSYgbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgICAgIGlmICgm
bV9mcmFtZSAhPSAmbWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fZnJhbWUudmlldygpOwotICAgICAgICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1h
aW5GcmFtZS52aWV3KCk7Ci0gICAgICAgICAgICBpZiAoZnJhbWVWaWV3ICYmIG1haW5WaWV3KSB7
Ci0gICAgICAgICAgICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluVmlldy0+cm9v
dFZpZXdUb0NvbnRlbnRzKGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQ
b2ludChwb2ludCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFpbkZyYW1lLmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBoaXRUeXBlLCBwYWRk
aW5nKTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAoIW1fZnJhbWUuaXNNYWluRnJhbWUoKSkgewor
ICAgICAgICBGcmFtZSYgbWFpbkZyYW1lID0gbV9mcmFtZS5tYWluRnJhbWUoKTsKKyAgICAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICAgICAgRnJhbWVWaWV3
KiBtYWluVmlldyA9IG1haW5GcmFtZS52aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcgJiYg
bWFpblZpZXcpIHsKKyAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZp
ZXctPnJvb3RWaWV3VG9Db250ZW50cyhmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3Vu
ZGVkSW50UG9pbnQocG9pbnQpKSk7CisgICAgICAgICAgICByZXR1cm4gbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBoaXRUeXBlLCBw
YWRkaW5nKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTI4MCwxMSArMTI3OCwxMSBAQCBPcHRp
b25hbEN1cnNvciBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGJvb2wgc2hpZgogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5
ZXItPmluUmVzaXplTW9kZSgpKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7CiAKLSAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQorICAgIGlmICgh
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsKKwogI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5wYW5TY3JvbGxJblByb2dyZXNzKCkpCisgICAgaWYgKG1fZnJhbWUubWFpbkZyYW1lKCku
ZXZlbnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gTm9D
dXJzb3JDaGFuZ2U7CiAjZW5kaWYKIApAQCAtMTU1OSw3ICsxNTU3LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgLy8gV2Ugc3RvcmUgd2hl
dGhlciBwYW4gc2Nyb2xsaW5nIGlzIGluIHByb2dyZXNzIGJlZm9yZSBjYWxsaW5nIHN0b3BBdXRv
c2Nyb2xsVGltZXIoKQogICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBzZXQgbV9hdXRvc2Nyb2xsVHlw
ZSB0byBOb0F1dG9zY3JvbGwgb24gcmV0dXJuLgotICAgIGJvb2wgaXNQYW5TY3JvbGxJblByb2dy
ZXNzID0gbV9mcmFtZS5wYWdlKCkgJiYgbV9mcmFtZS5wYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKTsKKyAgICBib29sIGlzUGFuU2Nyb2xsSW5Q
cm9ncmVzcyA9IG1fZnJhbWUubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Q
cm9ncmVzcygpOwogICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBpZiAoaXNQYW5TY3Jv
bGxJblByb2dyZXNzKSB7CiAgICAgICAgIC8vIFdlIGludmFsaWRhdGUgdGhlIGNsaWNrIHdoZW4g
ZXhpdGluZyBwYW4gc2Nyb2xsaW5nIHNvIHRoYXQgd2UgZG9uJ3QgaW5hZHZlcnRlbnRseSBuYXZp
Z2F0ZQpAQCAtMzI2MCwxNSArMzI1OCwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgICAgIGNh
cHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcp
Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICBpZiAocGFn
ZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7Ci0g
ICAgICAgICAgICAvLyBJZiBhIGtleSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBwYW5TY3JvbGwgaXMg
aW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AKLSAgICAgICAgICAgIGlmIChpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2
ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSAKLSAgICAgICAgICAgICAg
ICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgaWYgKG1fZnJhbWUubWFpbkZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7CisgICAgICAgIC8vIElmIGEga2V5
IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdlIHdh
bnQgdG8gc3RvcAorICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgCisgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKLSAg
ICAgICAgICAgIC8vIElmIHdlIHdlcmUgaW4gcGFuc2Nyb2xsIG1vZGUsIHdlIHN3YWxsb3cgdGhl
IGtleSBldmVudAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAg
Ly8gSWYgd2Ugd2VyZSBpbiBwYW5zY3JvbGwgbW9kZSwgd2Ugc3dhbGxvdyB0aGUga2V5IGV2ZW50
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDFkZGFiNTNlMDhlMGQ1NTc5ZjVmZDdlNzc2OWY5ZGUyNjQxMGRkZTMuLmY0YWI2MGM5
NGYzODBmNTk4YzYyNmM3YzNmMGNhNDM3NzVmN2ZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC0xNTIsNyArMTUyLDggQEAgc3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRUZXh0Wm9vbUZhY3Rv
cihGcmFtZSogZnJhbWUpCiB9CiAKIEZyYW1lOjpGcmFtZShQYWdlJiBwYWdlLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGllbnQmIGZyYW1lTG9hZGVy
Q2xpZW50KQotICAgIDogbV9wYWdlKCZwYWdlKQorICAgIDogbV9tYWluRnJhbWUob3duZXJFbGVt
ZW50ID8gcGFnZS5tYWluRnJhbWUoKSA6IHN0YXRpY19jYXN0PE1haW5GcmFtZSY+KCp0aGlzKSkK
KyAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1fc2V0dGluZ3MoJnBhZ2Uuc2V0dGluZ3MoKSkK
ICAgICAsIG1fdHJlZU5vZGUodGhpcywgcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1l
bnQpKQogICAgICwgbV9sb2FkZXIoKnRoaXMsIGZyYW1lTG9hZGVyQ2xpZW50KQpAQCAtMTg4LDYg
KzE4OSw3IEBAIEZyYW1lOjpGcmFtZShQYWdlJiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGllbnQmCiAgICAgICAgIHNldFRpbGVkQmFja2lu
Z1N0b3JlRW5hYmxlZChzZXR0aW5ncygpLnRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCgpKTsKICNl
bmRpZgogICAgIH0gZWxzZSB7CisgICAgICAgIG1fbWFpbkZyYW1lLnNlbGZPbmx5UmVmKCk7CiAg
ICAgICAgIHBhZ2UuaW5jcmVtZW50U3ViZnJhbWVDb3VudCgpOwogICAgICAgICBvd25lckVsZW1l
bnQtPnNldENvbnRlbnRGcmFtZSh0aGlzKTsKICAgICB9CkBAIC0yMjUsNiArMjI3LDkgQEAgRnJh
bWU6On5GcmFtZSgpCiAgICAgSGFzaFNldDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPjo6aXRl
cmF0b3Igc3RvcCA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBpdCA9IG1fZGVzdHJ1Y3Rp
b25PYnNlcnZlcnMuYmVnaW4oKTsgaXQgIT0gc3RvcDsgKytpdCkKICAgICAgICAgKCppdCktPmZy
YW1lRGVzdHJveWVkKCk7CisKKyAgICBpZiAoIWlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbWFp
bkZyYW1lLnNlbGZPbmx5RGVyZWYoKTsKIH0KIAogdm9pZCBGcmFtZTo6YWRkRGVzdHJ1Y3Rpb25P
YnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtNjQ1LDcgKzY1
MCw3IEBAIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQogICAgICAgICBpZiAo
bV9wYWdlKQogICAgICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRTdWJmcmFtZUNvdW50KCk7CiAg
ICAgfQotICAgIG1fb3duZXJFbGVtZW50ID0gMDsKKyAgICBtX293bmVyRWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKIFN0cmluZyBGcmFtZTo6ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhj
b25zdCBTdHJpbmcmIHN0cikgY29uc3QKQEAgLTcxMyw3ICs3MTgsNyBAQCB2b2lkIEZyYW1lOjpj
cmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvcgogICAgIEFTU0VSVCh0aGlzKTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAotICAg
IGJvb2wgaXNNYWluRnJhbWUgPSBtX3BhZ2UtPmZyYW1lSXNNYWluRnJhbWUodGhpcyk7CisgICAg
Ym9vbCBpc01haW5GcmFtZSA9IHRoaXMtPmlzTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoaXNNYWlu
RnJhbWUgJiYgdmlldygpKQogICAgICAgICB2aWV3KCktPnNldFBhcmVudFZpc2libGUoZmFsc2Up
OwpAQCAtODg2LDcgKzg5MSw3IEBAIHZvaWQgRnJhbWU6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29tRmFjdG9yCiAgICAgICAgICAg
ICB2aWV3LT5sYXlvdXQoKTsKICAgICB9CiAKLSAgICBpZiAocGFnZS0+ZnJhbWVJc01haW5GcmFt
ZSh0aGlzKSkKKyAgICBpZiAoaXNNYWluRnJhbWUoKSkKICAgICAgICAgcGFnZUNhY2hlKCktPm1h
cmtQYWdlc0ZvckZ1bGxTdHlsZVJlY2FsYyhwYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4
IDJiYTFhOWFmYTIxMjg2NzhlNmE2MDkzNjllMDRkMzNkYzJjNTI5NDcuLjVhYjc5NWJiZjRmNDUz
MjZiMGJkMzYzNjY0ZWNlNzBjYjE2NzgyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY0LDYgKzY0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDsKICAgICBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKICAgICBjbGFzcyBJbnRSZWN0Owor
ICAgIGNsYXNzIE1haW5GcmFtZTsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFJhbmdlOwog
ICAgIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwpAQCAtMTA5LDYgKzExMCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOwogICAgICAgICB2b2lk
IGRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKIAorICAgICAgICBNYWluRnJhbWUmIG1haW5GcmFt
ZSgpIGNvbnN0OworICAgICAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3Q7CisKICAgICAgICAg
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCgpIGNvbnN0OwogCkBAIC0yMDUsNiArMjA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVj
dGlvbk9ic2VydmVyczsKIAorICAgICAgICBNYWluRnJhbWUmIG1fbWFpbkZyYW1lOwogICAgICAg
ICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIGNvbnN0IFJlZlB0cjxTZXR0aW5ncz4gbV9zZXR0aW5n
czsKICAgICAgICAgbXV0YWJsZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKQEAgLTMzNiw2ICszNDEs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gKm1fZXZlbnRIYW5kbGVy
OwogICAgIH0KIAorICAgIGlubGluZSBNYWluRnJhbWUmIEZyYW1lOjptYWluRnJhbWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lOworICAgIH0KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
Y3BwCmluZGV4IDY0MzAyMjk3ZDljOTUxY2MwZDk2MGExZjEyODg4MTA2OTA4ZDJkM2EuLmRiZTg4
YTM1ODJlZDZiZjgxYjE5NGEzYWZjNDdkNWEyMTRkZGRiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
VHJlZS5jcHAKQEAgLTI3NywzNyArMjc3LDM1IEBAIEZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIGlmIChuYW1lID09ICJfcGFyZW50IikK
ICAgICAgICAgcmV0dXJuIHBhcmVudCgpID8gcGFyZW50KCkgOiBtX3RoaXNGcmFtZTsKIAotICAg
IC8vIFNpbmNlICJfYmxhbmsiIHNob3VsZCBuZXZlciBiZSBhbnkgZnJhbWUncyBuYW1lLCB0aGUg
Zm9sbG93aW5nIGp1c3QgYW1vdW50cyB0byBhbiBvcHRpbWl6YXRpb24uCisgICAgLy8gU2luY2Ug
Il9ibGFuayIgc2hvdWxkIG5ldmVyIGJlIGFueSBmcmFtZSdzIG5hbWUsIHRoZSBmb2xsb3dpbmcg
aXMgb25seSBhbiBvcHRpbWl6YXRpb24uCiAgICAgaWYgKG5hbWUgPT0gIl9ibGFuayIpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgLy8gU2VhcmNoIHN1YnRyZWUgc3RhcnRpbmcgd2l0aCB0aGlz
IGZyYW1lIGZpcnN0LgotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV90aGlzRnJhbWU7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fdGhpc0ZyYW1lKSkKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dChtX3RoaXNGcmFtZSkpIHsKICAgICAgICAgaWYgKGZyYW1lLT50cmVl
KCkudW5pcXVlTmFtZSgpID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAg
fQogCi0gICAgLy8gU2VhcmNoIHRoZSBlbnRpcmUgdHJlZSBmb3IgdGhpcyBwYWdlIG5leHQuCi0g
ICAgUGFnZSogcGFnZSA9IG1fdGhpc0ZyYW1lLT5wYWdlKCk7Ci0KLSAgICAvLyBUaGUgZnJhbWUg
Y291bGQgaGF2ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHBhZ2UsIHNvIGNoZWNrIGl0LgotICAg
IGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkKKyAgICAvLyBUaGVuIHRoZSByZXN0IG9mIHRoZSB0cmVlLgorICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1fdGhpc0ZyYW1lLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS51
bmlxdWVOYW1lKCkgPT0gbmFtZSkKICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICB9CiAK
ICAgICAvLyBTZWFyY2ggdGhlIGVudGlyZSB0cmVlIG9mIGVhY2ggb2YgdGhlIG90aGVyIHBhZ2Vz
IGluIHRoaXMgbmFtZXNwYWNlLgogICAgIC8vIEZJWE1FOiBJcyByYW5kb20gb3JkZXIgT0s/Cisg
ICAgUGFnZSogcGFnZSA9IG1fdGhpc0ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gMDsKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlLT5n
cm91cCgpLnBhZ2VzKCk7Ci0gICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHBhZ2VzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChhdXRvIGl0ID0g
cGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBQYWdlKiBvdGhlclBhZ2UgPSAqaXQ7Ci0gICAgICAgIGlmIChvdGhlclBhZ2UgIT0gcGFn
ZSkgewotICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmb3RoZXJQYWdlLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlm
IChvdGhlclBhZ2UgPT0gcGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZvdGhlclBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUtPnRy
ZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2Nyw3ICszNjUsNyBAQCBGcmFtZSogRnJhbWVUcmVl
Ojp0cmF2ZXJzZU5leHRXaXRoV3JhcChib29sIHdyYXApIGNvbnN0CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKICAgICBpZiAod3JhcCkKLSAgICAgICAgcmV0dXJuICZtX3RoaXNGcmFtZS0+cGFn
ZSgpLT5tYWluRnJhbWUoKTsKKyAgICAgICAgcmV0dXJuICZtX3RoaXNGcmFtZS0+bWFpbkZyYW1l
KCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAz
OWRlMTc1NWIzMjcyMzY0ZDBkY2E1MmEwNGYxNjU1MGUxNzkzNGM2Li5jNzQ3YjBlM2VkMWQwNzgy
ZGUyYWEwY2RmMWQwNmIzNDlhOWE1MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yMDQsNyArMjA0LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUmIGZyYW1lKQogewog
ICAgIGluaXQoKTsKIAotICAgIGlmIChpc01haW5GcmFtZVZpZXcoKSkgeworICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQpOwogICAgICAgICBTY3JvbGxh
YmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eUFs
bG93ZWQpOwogICAgIH0KQEAgLTQxMCwxMSArNDEwLDYgQEAgdm9pZCBGcmFtZVZpZXc6OmNsZWFy
KCkKICAgICBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZCh0cnVlKTsKIH0KIAotYm9vbCBGcmFtZVZp
ZXc6OmlzTWFpbkZyYW1lVmlldygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lKCkucGFnZSgp
ICYmIGZyYW1lKCkucGFnZSgpLT5mcmFtZUlzTWFpbkZyYW1lKCZmcmFtZSgpKTsKLX0KLQogYm9v
bCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fZmly
c3RMYXlvdXQ7CkBAIC00NDgsNyArNDQzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQogICAgIC8vIEF1dG9zaXplZCBmb250IHNpemVzIGRl
cGVuZCBvbiB0aGUgd2lkdGggb2YgdGhlIHZpZXdpbmcgYXJlYS4KICAgICBpZiAobmV3UmVjdC53
aWR0aCgpICE9IG9sZFJlY3Qud2lkdGgoKSkgewogICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWUo
KS5wYWdlKCk7Ci0gICAgICAgIGlmIChpc01haW5GcmFtZVZpZXcoKSAmJiBwYWdlLT5zZXR0aW5n
cygpLnRleHRBdXRvc2l6aW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChmcmFtZSgpLmlzTWFp
bkZyYW1lKCkgJiYgcGFnZS0+c2V0dGluZ3MoKS50ZXh0QXV0b3NpemluZ0VuYWJsZWQoKSkgewog
ICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgICAgICAgICAg
ZnJhbWUoKS5kb2N1bWVudCgpLT50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVsdGlwbGll
cnMoKTsKICAgICAgICAgfQpAQCAtNTM4LDcgKzUzMyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRh
dGVDYW5IYXZlU2Nyb2xsYmFycygpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBGcmFtZVZpZXc6
OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKLSAg
ICBpZiAoIWZyYW1lKCkuc2V0dGluZ3MoKS5hbGxvd0N1c3RvbVNjcm9sbGJhckluTWFpbkZyYW1l
KCkgJiYgaXNNYWluRnJhbWVWaWV3KCkpCisgICAgaWYgKCFmcmFtZSgpLnNldHRpbmdzKCkuYWxs
b3dDdXN0b21TY3JvbGxiYXJJbk1haW5GcmFtZSgpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIFNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihvcmllbnRhdGlvbik7
CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJhciBkeW5hbWlj
YWxseSBhcyBkb2N1bWVudHMgY2hhbmdlIChvciBhcyBkb2MgZWxlbWVudHMgYW5kIGJvZGllcyBn
ZXQgZGlzY292ZXJlZCB0aGF0IGhhdmUgY3VzdG9tIHN0eWxlcykuCkBAIC02MTQsNyArNjA5LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCog
bywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFMKICAgICAvLyB0aGVyZSBpcyBhIGZyYW1lU2NhbGVG
YWN0b3IgdGhhdCBpcyBncmVhdGVyIHRoYW4gb25lIG9uIHRoZSBtYWluIGZyYW1lLiBBbHNvIGRp
c3JlZ2FyZCBoaWRkZW4gaWYgdGhlcmUgaXMgYQogICAgIC8vIGhlYWRlciBvciBmb290ZXIuCiAK
LSAgICBib29sIG92ZXJyaWRlSGlkZGVuID0gaXNNYWluRnJhbWVWaWV3KCkgJiYgKChmcmFtZSgp
LmZyYW1lU2NhbGVGYWN0b3IoKSA+IDEpIHx8IGhlYWRlckhlaWdodCgpIHx8IGZvb3RlckhlaWdo
dCgpKTsKKyAgICBib29sIG92ZXJyaWRlSGlkZGVuID0gZnJhbWUoKS5pc01haW5GcmFtZSgpICYm
ICgoZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkgPiAxKSB8fCBoZWFkZXJIZWlnaHQoKSB8fCBm
b290ZXJIZWlnaHQoKSk7CiAKICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYID0gby0+c3R5bGUoKS0+
b3ZlcmZsb3dYKCk7CiAgICAgRU92ZXJmbG93IG92ZXJmbG93WSA9IG8tPnN0eWxlKCktPm92ZXJm
bG93WSgpOwpAQCAtOTIwLDcgKzkxNSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXROZWVkc09uZVNo
b3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKIHZvaWQgRnJhbWVWaWV3OjpzZXRIZWFkZXJIZWln
aHQoaW50IGhlYWRlckhlaWdodCkKIHsKICAgICBpZiAoZnJhbWUoKS5wYWdlKCkpCi0gICAgICAg
IEFTU0VSVChpc01haW5GcmFtZVZpZXcoKSk7CisgICAgICAgIEFTU0VSVChmcmFtZSgpLmlzTWFp
bkZyYW1lKCkpOwogICAgIG1faGVhZGVySGVpZ2h0ID0gaGVhZGVySGVpZ2h0OwogCiAgICAgaWYg
KFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCkpCkBAIC05MzAsNyAr
OTI1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEhlYWRlckhlaWdodChpbnQgaGVhZGVySGVpZ2h0
KQogdm9pZCBGcmFtZVZpZXc6OnNldEZvb3RlckhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQogewog
ICAgIGlmIChmcmFtZSgpLnBhZ2UoKSkKLSAgICAgICAgQVNTRVJUKGlzTWFpbkZyYW1lVmlldygp
KTsKKyAgICAgICAgQVNTRVJUKGZyYW1lKCkuaXNNYWluRnJhbWUoKSk7CiAgICAgbV9mb290ZXJI
ZWlnaHQgPSBmb290ZXJIZWlnaHQ7CiAKICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKSkKQEAgLTE1OTYsNyArMTU5MSw3IEBAIEludFBvaW50IEZyYW1l
Vmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBtaW5p
bXVtUG9zaXRpb24oU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAg
aWYgKGlzTWFpbkZyYW1lVmlldygpICYmIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID09IFBpblRv
Qm90dG9tKQorICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkgJiYgbV9zY3JvbGxQaW5uaW5n
QmVoYXZpb3IgPT0gUGluVG9Cb3R0b20pCiAgICAgICAgIG1pbmltdW1Qb3NpdGlvbi5zZXRZKG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIG1pbmltdW1Qb3Np
dGlvbjsKQEAgLTE2MDgsNyArMTYwMyw3IEBAIEludFBvaW50IEZyYW1lVmlldzo6bWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QKIAogICAgIG1heGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRv
WmVybygpOwogCi0gICAgaWYgKGlzTWFpbkZyYW1lVmlldygpICYmIG1fc2Nyb2xsUGlubmluZ0Jl
aGF2aW9yID09IFBpblRvVG9wKQorICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkgJiYgbV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3IgPT0gUGluVG9Ub3ApCiAgICAgICAgIG1heGltdW1PZmZzZXQu
c2V0WShtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpOwogICAgIAogICAgIHJldHVybiBtYXhp
bXVtT2Zmc2V0OwpAQCAtMTk5NCwxMSArMTk4OSwxMiBAQCB2b2lkIEZyYW1lVmlldzo6cmVwYWlu
dEZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZygpCiBib29sIEZyYW1lVmlldzo6c2hvdWxkVXBk
YXRlRml4ZWRFbGVtZW50c0FmdGVyU2Nyb2xsaW5nKCkKIHsKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQorICAgIC8vIElmIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGlzIHVwZGF0aW5nIHRo
ZSBmaXhlZCBlbGVtZW50cywgdGhlbiB0aGUgRnJhbWVWaWV3IHNob3VsZCBub3QgdXBkYXRlIHRo
ZW0gYXMgd2VsbC4KKwogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gSWYgdGhlIHNjcm9sbGluZyB0
aHJlYWQgaXMgdXBkYXRpbmcgdGhlIGZpeGVkIGVsZW1lbnRzLCB0aGVuIHRoZSBGcmFtZVZpZXcg
c2hvdWxkIG5vdCB1cGRhdGUgdGhlbSBhcyB3ZWxsLgogICAgIGlmICgmcGFnZS0+bWFpbkZyYW1l
KCkgIT0gJmZyYW1lKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMTg2LDkgKzIxODIs
OCBAQCB2b2lkIEZyYW1lVmlldzo6YWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKQogCiB2b2lkIEZy
YW1lVmlldzo6YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCkKIHsKLSAgICBQYWdlKiBwYWdlID0gZnJh
bWUoKS5wYWdlKCk7Ci0gICAgaWYgKCZwYWdlLT5tYWluRnJhbWUoKSAhPSAmZnJhbWUoKSkgewot
ICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPmJlZ2luRGVmZXJyZWRSZXBhaW50cygp
OworICAgIGlmICghZnJhbWUoKS5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIGZyYW1lKCkubWFp
bkZyYW1lKCkudmlldygpLT5iZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjE5Nyw5ICsyMTkyLDggQEAgdm9pZCBGcmFtZVZpZXc6OmJlZ2luRGVm
ZXJyZWRSZXBhaW50cygpCiAKIHZvaWQgRnJhbWVWaWV3OjplbmREZWZlcnJlZFJlcGFpbnRzKCkK
IHsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7Ci0gICAgaWYgKCZwYWdlLT5tYWlu
RnJhbWUoKSAhPSAmZnJhbWUoKSkgewotICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS52aWV3KCkt
PmVuZERlZmVycmVkUmVwYWludHMoKTsKKyAgICBpZiAoIWZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
eworICAgICAgICBmcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+ZW5kRGVmZXJyZWRSZXBhaW50
cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzQyLDcgKzI3MzYsNyBAQCB2b2lk
IEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICBmcmFtZSgp
LmxvYWRlcigpLmRpZEZpcnN0TGF5b3V0KCk7CiAgICAgICAgICAgICBpZiAocmVxdWVzdGVkTWls
ZXN0b25lcyAmIERpZEZpcnN0TGF5b3V0KQogICAgICAgICAgICAgICAgIG1pbGVzdG9uZXNBY2hp
ZXZlZCB8PSBEaWRGaXJzdExheW91dDsKLSAgICAgICAgICAgIGlmIChpc01haW5GcmFtZVZpZXco
KSkKKyAgICAgICAgICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAg
ICAgcGFnZS0+c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpOwogICAgICAg
ICB9CiAgICAgICAgIHVwZGF0ZUlzVmlzdWFsbHlOb25FbXB0eSgpOwpAQCAtMjc1NSw3ICsyNzQ5
LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKG1pbGVzdG9uZXNBY2hpZXZlZCAmJiBwYWdlICYmIHBhZ2UtPmZy
YW1lSXNNYWluRnJhbWUoJmZyYW1lKCkpKQorICAgIGlmIChtaWxlc3RvbmVzQWNoaWV2ZWQgJiYg
ZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICBmcmFtZSgpLmxvYWRlcigpLmRpZExheW91
dChtaWxlc3RvbmVzQWNoaWV2ZWQpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCkBA
IC0yODE4LDcgKzI4MTIsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVk
ZWQoKQogICAgIGlmICghc2hvdWxkU2VuZFJlc2l6ZUV2ZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIGlzTWFpbkZyYW1lID0gaXNNYWluRnJhbWVWaWV3KCk7CisgICAgYm9vbCBpc01h
aW5GcmFtZSA9IGZyYW1lKCkuaXNNYWluRnJhbWUoKTsKICAgICBib29sIGNhblNlbmRSZXNpemVF
dmVudFN5bmNocm9ub3VzbHkgPSBpc01haW5GcmFtZSAmJiAhaXNJbkxheW91dCgpOwogCiAgICAg
Ly8gSWYgd2UgcmVzaXplZCBkdXJpbmcgbGF5b3V0LCBxdWV1ZSB1cCBhIHJlc2l6ZSBldmVudCBm
b3IgbGF0ZXIsIG90aGVyd2lzZSBmaXJlIGl0IHJpZ2h0IGF3YXkuCkBAIC0yOTk0LDcgKzI5ODgs
NyBAQCBjb25zdCBQYWdpbmF0aW9uJiBGcmFtZVZpZXc6OnBhZ2luYXRpb24oKSBjb25zdAogICAg
IGlmIChtX3BhZ2luYXRpb24gIT0gUGFnaW5hdGlvbigpKQogICAgICAgICByZXR1cm4gbV9wYWdp
bmF0aW9uOwogCi0gICAgaWYgKGlzTWFpbkZyYW1lVmlldygpKQorICAgIGlmIChmcmFtZSgpLmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLnBhZ2UoKS0+cGFnaW5hdGlvbigp
OwogCiAgICAgcmV0dXJuIG1fcGFnaW5hdGlvbjsKQEAgLTMwODMsNyArMzA3Nyw3IEBAIEludFJl
Y3QgRnJhbWVWaWV3Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0CiAKIGZsb2F0IEZyYW1lVmll
dzo6dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc01haW5G
cmFtZVZpZXcoKSB8fCAhZnJhbWUoKS5zZXR0aW5ncygpLmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKCkpCisgICAgaWYgKCFmcmFtZSgpLmlzTWFpbkZyYW1lKCkgfHwgIWZyYW1lKCku
c2V0dGluZ3MoKS5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQogICAgICAgICBy
ZXR1cm4gMTsKIAogICAgIHJldHVybiBmcmFtZSgpLnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7
CkBAIC0zMDkxLDcgKzMwODUsNyBAQCBmbG9hdCBGcmFtZVZpZXc6OnZpc2libGVDb250ZW50U2Nh
bGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIEZyYW1lVmlldzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1
bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiB7Ci0gICAgaWYgKCFpc01haW5G
cmFtZVZpZXcoKSkKKyAgICBpZiAoIWZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLm5vdGlmeVNjcm9s
bGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Nyb2xsZXJUaHVtYik7CkBAIC0zMTYzLDcgKzMxNTcs
NyBAQCBib29sIEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dAogCiB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwg
Ym9vbCBmb3JjZVVwZGF0ZSkKIHsKLSAgICBpZiAoIWlzTWFpbkZyYW1lVmlldygpKQorICAgIGlm
ICghZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBmcmFtZSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENo
YW5nZShuZXdTdHlsZSk7CkBAIC0zMjY5LDcgKzMyNjMsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFp
bnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b3JuZQogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikgewotICAgICAgICBpZiAoaXNN
YWluRnJhbWVWaWV3KCkpCisgICAgICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBiYXNlQmFja2dyb3VuZENvbG9y
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBtX3Njcm9sbENvcm5lci0+cGFpbnRJ
bnRvUmVjdChjb250ZXh0LCBjb3JuZXJSZWN0LmxvY2F0aW9uKCksIGNvcm5lclJlY3QpOwogICAg
ICAgICByZXR1cm47CkBAIC0zMjgwLDcgKzMyNzQsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRT
Y3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZQogCiB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqIGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoYmFy
LT5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGlzTWFpbkZyYW1lVmlldygpKSB7CisgICAgaWYgKGJh
ci0+aXNDdXN0b21TY3JvbGxiYXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgSW50UmVjdCB0b0ZpbGwgPSBiYXItPmZyYW1lUmVjdCgpOwogICAgICAgICB0b0ZpbGwuaW50
ZXJzZWN0KHJlY3QpOwogICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNr
Z3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0zNjIxLDcgKzM2MTUsNyBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaQogICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPnBy
aW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc01haW5GcmFtZVZpZXcoKSAm
JiBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGFpbnRDdXN0b21PdmVyaGFuZ0Fy
ZWEoY29udGV4dCwgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGRpcnR5UmVjdCkpCisgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSAmJiBmcmFtZSgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoY29udGV4dCwg
aG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGRpcnR5UmVjdCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcm9sbFZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhj
b250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgZGly
dHlSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGNmYzlmMzY3ZTNiNjU5YTk2MGM5
YTk1NzE4MTk1ZWRjOGQxYzU5NTIuLjg2YzU4Y2RmOTdmMjM1MzUzMDkyNzAzODhhYjJiMDdkOWRh
NjFmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDM0LDggKzQzNCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEFkZFdpZGdldFRvUmVuZGVyVHJlZShXaWRnZXQmKTsKICAgICB2b2lk
IHdpbGxSZW1vdmVXaWRnZXRGcm9tUmVuZGVyVHJlZShXaWRnZXQmKTsKIAotICAgIGJvb2wgaXNN
YWluRnJhbWVWaWV3KCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Ny
b2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50
UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAKaW5kZXggNmEzN2Vl
ZWFlYzkyNTNkYzA3Zjc0NTQzOWFkYzlkZmE4MTg5OTEyMy4uMDU0YTA2MjVjNGExNzc3YWMzYWYz
MjVlYTA4NDYzM2Y5YTQ3ODQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NYWlu
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcApAQCAtMzEs
NiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBNYWluRnJhbWU6Ok1haW5G
cmFtZShQYWdlJiBwYWdlLCBGcmFtZUxvYWRlckNsaWVudCYgY2xpZW50KQogICAgIDogRnJhbWUo
cGFnZSwgbnVsbHB0ciwgY2xpZW50KQorICAgICwgbV9zZWxmT25seVJlZkNvdW50KDApCiB7CiB9
CiAKQEAgLTM5LDQgKzQwLDMwIEBAIFJlZlB0cjxNYWluRnJhbWU+IE1haW5GcmFtZTo6Y3JlYXRl
KFBhZ2UmIHBhZ2UsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNYWluRnJhbWUocGFnZSwgY2xpZW50KSk7CiB9CiAKK3ZvaWQgTWFpbkZyYW1lOjpz
ZWxmT25seVJlZigpCit7CisgICAgaWYgKG1fc2VsZk9ubHlSZWZDb3VudCsrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICByZWYoKTsKK30KKwordm9pZCBNYWluRnJhbWU6OnNlbGZPbmx5RGVyZWYo
KQoreworICAgIEFTU0VSVChtX3NlbGZPbmx5UmVmQ291bnQpOworICAgIGlmICgtLW1fc2VsZk9u
bHlSZWZDb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGhhc09uZVJlZigpKQorICAg
ICAgICBkcm9wQ2hpbGRyZW4oKTsKKworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgTWFpbkZyYW1l
Ojpkcm9wQ2hpbGRyZW4oKQoreworICAgIHdoaWxlIChGcmFtZSogY2hpbGQgPSB0cmVlKCkuZmly
c3RDaGlsZCgpKQorICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoY2hpbGQpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NYWluRnJhbWUuaAppbmRleCBmZTJiZjJmOGEwOTcxM2E4ZDI4NTViNDcxY2FkOWRl
Mzk1NWQ0NmViLi45OThlZWI3ZTdjMjdkN2ExYjViNWNjYzA5Y2JkNTdhMTdkMDIyYjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWFpbkZyYW1lLmgKQEAgLTM1LDEwICszNSwyMiBAQCBjbGFzcyBNYWluRnJhbWUg
RklOQUwgOiBwdWJsaWMgRnJhbWUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWFpbkZy
YW1lPiBjcmVhdGUoUGFnZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7CiAKKyAgICB2b2lkIHNlbGZP
bmx5UmVmKCk7CisgICAgdm9pZCBzZWxmT25seURlcmVmKCk7CisKIHByaXZhdGU6CiAgICAgTWFp
bkZyYW1lKFBhZ2UmLCBGcmFtZUxvYWRlckNsaWVudCYpOworCisgICAgdm9pZCBkcm9wQ2hpbGRy
ZW4oKTsKKworICAgIHVuc2lnbmVkIG1fc2VsZk9ubHlSZWZDb3VudDsKIH07CiAKK2lubGluZSBi
b29sIEZyYW1lOjppc01haW5GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gJm1f
bWFpbkZyYW1lOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYmU2NTU5
NTRmYzI1MWU0YTU2MGM5ZWYyYjg4ZWMzOTg3ZmMxMTMwZS4uNzg4YjJkODY0MWFkNDg3OTliY2Rm
OWI1YmQ2ZDE0YjgzOGYxOGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMzksMTEgKzIzOSw2
IEBAIFBhZ2U6On5QYWdlKCkKICAgICBtX3BhZ2VUaHJvdHRsZXIuY2xlYXIoKTsKIH0KIAotYm9v
bCBQYWdlOjpmcmFtZUlzTWFpbkZyYW1lKGNvbnN0IEZyYW1lKiBmcmFtZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUgPT0gbV9tYWluRnJhbWUuZ2V0KCk7Ci19Ci0KIEFyZW5hU2l6ZSBQYWdlOjpyZW5k
ZXJUcmVlU2l6ZSgpIGNvbnN0CiB7CiAgICAgQXJlbmFTaXplIHRvdGFsKDAsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBiMDAwZGY0OTE5YmI5MTk2ZTQ2ZmM0N2MyMThmNjYzZWFlNGU3ZTQ0Li43MDA5
NGY2ZmRjMmZiY2UzNTc2Yzg1ZDg5MTM4Mzk4NmQzMWY4MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
MTYyLDkgKzE2Miw4IEBAIHB1YmxpYzoKICAgICBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yQ2xpZW50OyB9CiAgICAgUGx1Z0luQ2xpZW50KiBwbHVn
SW5DbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdJbkNsaWVudDsgfQogCi0gICAgTWFpbkZy
YW1lJiBtYWluRnJhbWUoKSB7IHJldHVybiAqbV9tYWluRnJhbWU7IH0KLSAgICBjb25zdCBNYWlu
RnJhbWUmIG1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuICptX21haW5GcmFtZTsgfQotICAgIGJv
b2wgZnJhbWVJc01haW5GcmFtZShjb25zdCBGcmFtZSopOworICAgIE1haW5GcmFtZSYgbWFpbkZy
YW1lKCkgeyBBU1NFUlQobV9tYWluRnJhbWUpOyByZXR1cm4gKm1fbWFpbkZyYW1lOyB9CisgICAg
Y29uc3QgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSBjb25zdCB7IEFTU0VSVChtX21haW5GcmFtZSk7
IHJldHVybiAqbV9tYWluRnJhbWU7IH0KIAogICAgIGJvb2wgb3BlbmVkQnlET00oKSBjb25zdDsK
ICAgICB2b2lkIHNldE9wZW5lZEJ5RE9NKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYWExMThmOWM1YTFl
MTNmMGZmODUwOWY1ODZjMzgyNDY4YjcxNTY5Yy4uM2Q2YTE3NTc4NmVjZjFmOGI0YWM4NDRiYzE4
MTA0Y2UxMTZkYzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyogZnJhbWVWaWV3CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKICAgICAvLyBXZSBjdXJyZW50
bHkgb25seSBoYW5kbGUgdGhlIG1haW4gZnJhbWUuCi0gICAgaWYgKCZmcmFtZVZpZXctPmZyYW1l
KCkgIT0gJm1fcGFnZS0+bWFpbkZyYW1lKCkpCisgICAgaWYgKCFmcmFtZVZpZXctPmZyYW1lKCku
aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2UgY3VycmVu
dGx5IG9ubHkgc3VwcG9ydCBjb21wb3NpdGVkIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDY4YjliOTI5N2ZmN2ZjNDBiMjIw
ZjM2MWI3NmU3ZmMyY2Q4YjdmOGYuLjIwZGFjMzUyNjY3OWU3Yjc0ZDcyZTFhNmUyY2E3YTIwNGMw
YzFjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgUmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXll
ckJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigp
LmZyYW1lKCkucGFnZSgpOwogCiAgICAgaWYgKGxheWVyLT5pc1Jvb3RMYXllcigpICYmIHBhZ2Up
IHsKLSAgICAgICAgaWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJnJlbmRlcmVyKCkuZnJhbWUo
KSkpCisgICAgICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAg
ICAgICAgIG1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXIgPSB0cnVlOwogCiAgICAgICAgIG1f
dXNpbmdUaWxlZENhY2hlTGF5ZXIgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zaG91bGRVc2VU
aWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcocmVuZGVyZXIoKS5mcmFtZSgpLnZpZXcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGRiY2JhNTczZjU0
Y2I3MDJmOWMyMzA1YWM3MzQ3ZjQ3YzU3NTQzZjcuLjZmYzBhY2QxMzlhYjczODI5NjhiYjk5NmU1
N2E5YjA2NzE2OTAxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAi
TWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTmV0d29ya01hbmFnZXIuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRW5jb2Rlci5oIgpAQCAtNTQsOSArNTUsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2NvcGVQb2ludGVyLmgiCiAj
aW5jbHVkZSAiU2VsZWN0aW9uSGFuZGxlci5oIgotI2lmIEVOQUJMRShCTEFDS0JFUlJZX0NSRURF
TlRJQUxfUEVSU0lTVCkKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVG91
Y2hFdmVudEhhbmRsZXIuaCIKQEAgLTk3MSw3ICs5NzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGRv
Y0xvYQogCiAgICAgLy8gVGFyZ2V0VHlwZSBmb3Igc3VicmVzb3VyY2UgbG9hZHMgc2hvdWxkIGhh
dmUgYmVlbiBzZXQgaW4gQ2FjaGVkUmVzb3VyY2U6OmxvYWQoKS4KICAgICBpZiAoaXNNYWluUmVz
b3VyY2VMb2FkKQotICAgICAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUoZG9jTG9hZGVyLT5mcmFt
ZUxvYWRlcigpLT5pc0xvYWRpbmdNYWluRnJhbWUoKSA/IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNNYWluRnJhbWUgOiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3ViZnJhbWUpOworICAgICAg
ICByZXF1ZXN0LnNldFRhcmdldFR5cGUoZG9jTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgp
LmlzTWFpbkZyYW1lKCkgPyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzTWFpbkZyYW1lIDogUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YmZyYW1lKTsKIAogICAgIC8vIEFueSBwcm9jZXNzaW5n
IHdoaWNoIGlzIGRvbmUgZm9yIGFsbCBsb2FkcyAoYm90aCBtYWluIGFuZCBzdWJyZXNvdXJjZSkg
c2hvdWxkIGdvIGhlcmUuCiAgICAgTmV0d29ya1JlcXVlc3QgcGxhdGZvcm1SZXF1ZXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCmluZGV4IDc3N2IyMzAxMjQzNDE0NjYxZDdmOTg0ZmI5NGI3OWY1NWUyZjZh
N2QuLmU1MTI1ODkxYzE5OTAzNDhhMjliNWQ3Yzk4OTkwNTMzOWM2NzZjMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVFRQU3RhdHVzQ29kZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKQEAgLTE4Myw3
ICsxODQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZwogICAgIGJvb2wgaXNNYWluRnJhbWVS
ZXF1ZXN0ID0gZmFsc2U7CiAgICAgaWYgKGxvYWRlcikgewogICAgICAgICAgICAgY29uc3QgRnJh
bWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICAg
ICAgaXNNYWluRnJhbWVSZXF1ZXN0ID0gKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5pc0xvYWRpbmdNYWluRnJhbWUoKSk7
CisgICAgICAgICAgICBpc01haW5GcmFtZVJlcXVlc3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVy
LT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmZyYW1lKCkuaXNN
YWluRnJhbWUoKSk7CiAgICAgfQogCiAgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVx
dWVzdCA9IHsgMCwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCBpZGVudGlm
aWVyLCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKQEAgLTIzNiw3ICsyMzcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aQogICAgIGJvb2wgaXNNYWluRnJhbWVSZXF1ZXN0ID0gZmFs
c2U7CiAgICAgaWYgKGxvYWRlcikgewogICAgICAgICAgICAgY29uc3QgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICAgICAgaXNNYWluRnJh
bWVSZXF1ZXN0ID0gKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcigpICYmIGZyYW1lTG9hZGVyLT5pc0xvYWRpbmdNYWluRnJhbWUoKSk7CisgICAgICAgICAg
ICBpc01haW5GcmFtZVJlcXVlc3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmZyYW1lKCkuaXNNYWluRnJhbWUoKSk7
CiAgICAgfQogCiAgICAgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgcmVxdWVzdCA9IHsgdXJs
LmRhdGEoKSwgZmlyc3RQYXJ0eS5kYXRhKCksIGh0dHBNZXRob2QuZGF0YSgpLCBpZGVudGlmaWVy
LCBtX2ZyYW1lLCBpc01haW5GcmFtZVJlcXVlc3QgfTsKQEAgLTk5Miw3ICs5OTMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgY29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbG9hZGVyLT5mcmFt
ZUxvYWRlcigpOwotICAgIGNvbnN0IGJvb2wgaXNNYWluRnJhbWVSZXF1ZXN0ID0gZnJhbWVMb2Fk
ZXIgJiYgKGxvYWRlciA9PSBmcmFtZUxvYWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
KSAmJiBmcmFtZUxvYWRlci0+aXNMb2FkaW5nTWFpbkZyYW1lKCk7CisgICAgY29uc3QgYm9vbCBp
c01haW5GcmFtZVJlcXVlc3QgPSBmcmFtZUxvYWRlciAmJiAobG9hZGVyID09IGZyYW1lTG9hZGVy
LT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpICYmIGZyYW1lTG9hZGVyLT5mcmFtZSgpLmlz
TWFpbkZyYW1lKCk7CiAgICAgY29uc3QgQ1N0cmluZyYgdXJsRm9ySGlzdG9yeSA9IGxvYWRlci0+
dXJsRm9ySGlzdG9yeSgpLnN0cmluZygpLnV0ZjgoKTsKICAgICBjb25zdCBDU3RyaW5nJiB0aXRs
ZSA9IGxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCk7CiAgICAgY29uc3QgQ1N0cmluZyYg
Zmlyc3RQYXJ0eSA9IGxvYWRlci0+cmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3Ry
aW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDFiM2E1MjQyOTc3MTY0OWM4MWI0
MjhjMTM3ZTUyMzMwODJiMDY2NjIuLjkxOWFmYTRjYmE4Mzc3NGY3MWU4NmEzNjYyN2Y2Mjg1OTA4
YTllOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZQogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IFdFQktJ
VF9XRUJfUkVTT1VSQ0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9SRVNPVVJDRSwgInVy
aSIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgMCkpOwogCiAgICAgaWYg
KGxvYWRlciA9PSBsb2FkZXItPmZyYW1lTG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKQotICAgICAgICAmJiBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ01haW5GcmFt
ZSgpKSB7CisgICAgICAgICYmIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5pc01haW5G
cmFtZSgpKSB7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19hZGRfbWFpbl9yZXNvdXJjZShnZXRW
aWV3RnJvbUZyYW1lKG1fZnJhbWUpLCBpZGVudGlmaWVyU3RyaW5nLmdldCgpLCB3ZWJSZXNvdXJj
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGFmYWJmMjA0
YjQwYTBhZmZlMWNhOWFlNmRjMmExNzc2M2E2OGQzODIuLjQ2MDY2ZDNmN2JiNWI2ODE1NThjMzA3
MGNmNWExZDcxNjEwMDBjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9ybVN0YXRlLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
TG9hZGVyVHlwZXMuaD4KQEAgLTEwNyw2ICsxMDYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JY29u
RGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CkBAIC0xMDYzLDEwICsx
MDYzLDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkhh
bmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAg
IEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSk7Ci0gICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7Ci0gICAgQk9PTCBmb3JNYWluRnJhbWUgPSBwYWdlICYmIHBhZ2UtPmZy
YW1lSXNNYWluRnJhbWUoZnJhbWUpOwotICAgIHJldHVybiBbV2ViVmlldyBfY2FuSGFuZGxlUmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgZm9yTWFpbkZyYW1lOmZv
ck1haW5GcmFtZV07CisgICAgcmV0dXJuIFtXZWJWaWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSBmb3JNYWluRnJhbWU6Y29yZShtX3dlYkZy
YW1lLmdldCgpKS0+aXNNYWluRnJhbWUoKV07CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdApAQCAtMTI2
NSw3ICsxMjYyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgLy8gSWYgd2Ugb3duIHRoZSB2aWV3LCBkZWxldGUgdGhl
IG9sZCBvbmUgLSBvdGhlcndpc2UgdGhlIHJlbmRlciBtX2ZyYW1lIHdpbGwgdGFrZSBjYXJlIG9m
IGRlbGV0aW5nIHRoZSB2aWV3LgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUuZ2V0KCkpOwogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKTsKLSAgICBib29s
IGlzTWFpbkZyYW1lID0gcGFnZS0+ZnJhbWVJc01haW5GcmFtZShjb3JlRnJhbWUpOworICAgIGJv
b2wgaXNNYWluRnJhbWUgPSBjb3JlRnJhbWUtPmlzTWFpbkZyYW1lKCk7CiAgICAgaWYgKGlzTWFp
bkZyYW1lICYmIGNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+
c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCAyYjVmNjVjOTg3Yzhm
N2IyM2I2YjA4YzNiODdmZmY3MzJiMDFjZTZiLi42Y2UwZjNhMjdhMzVmMzBhOWI5Yjk2YTdkZWM4
MjJiOGJkNTE1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQpAQCAtMjgyLDcgKzI4Miw3IEBAIC0gKHZvaWQpX2luc3RhbGwKIAogICAgIC8vIElmIHRoaXMg
aXNuJ3QgdGhlIG1haW4gZnJhbWUsIGl0IG11c3QgaGF2ZSBhbiBvd25lciBlbGVtZW50IHNldCwg
b3IgaXQKICAgICAvLyB3b24ndCBldmVyIGdldCBpbnN0YWxsZWQgaW4gdGhlIHZpZXcgaGllcmFy
Y2h5LgotICAgIEFTU0VSVChmcmFtZS0+cGFnZSgpLT5mcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSB8
fCBmcmFtZS0+b3duZXJFbGVtZW50KCkpOworICAgIEFTU0VSVChmcmFtZS0+aXNNYWluRnJhbWUo
KSB8fCBmcmFtZS0+b3duZXJFbGVtZW50KCkpOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWUtPnZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
aW5kZXggNzIwOTI5ZmM0ZTc4YTQxOGNhYWY4Y2QzODQxNjdkOTcxMWUxMDQwZS4uYTE1ZmI4MzY1
YzBhN2MzZDI5MGE3MmZkMDU5M2UwMDJlODlhMGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlRGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIp
CiAKIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNob3VsZFVzZVRpbGVkQmFj
a2luZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICByZXR1
cm4gZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+aXNNYWluRnJhbWVWaWV3KCk7CisgICAgcmV0dXJu
IGZyYW1lVmlldyAmJiBmcmFtZVZpZXctPmZyYW1lKCkuaXNNYWluRnJhbWUoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212903</attachid>
            <date>2013-09-28 09:32:28 -0700</date>
            <delta_ts>2013-09-28 10:11:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122064-20130928093227.patch</filename>
            <type>text/plain</type>
            <size>73764</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk2ZWM2ZWVmODEwZjBm
NmQxNTUwMjUzZDJlZjk4MGE3MjQyYTM1NS4uMjcxNDYyYzYwYjRhZWRkYjFjYTkzZWIwYWZhZTMx
NDk4ZmQwZWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxMy0wOS0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZyYW1lOjptYWluRnJh
bWUgYW5kIEZyYW1lOjppc01haW5GcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlZCBleHBvcnRzIG9mIEZy
YW1lVmlldzo6aXNNYWluRnJhbWVWaWV3IGFuZAorICAgICAgICBQYWdlOjpmcmFtZUlzTWFpbkZy
YW1lLiBTaW5jZSB0aGUgbmV3IGlzTWFpbkZyYW1lIGZ1bmN0aW9uIGlzIGlubGluZSwgaXQKKyAg
ICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBleHBvcnRlZC4KKworICAgICAgICAqIGhpc3Rvcnkv
UGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6bWFya1BhZ2VzRm9y
RnVsbFN0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6bWFya1BhZ2Vz
Rm9yRGV2aWNlU2NhbGVDaGFuZ2VkKToKKyAgICAgICAgVGhlc2UgdHdvIHdlcmUgdGhlIG9ubHkg
ZnVuY3Rpb25zIEkgZm91bmQgdGhhdCByZWFsbHkgd2FudGVkIHRoZSBlcXVpdmFsZW50CisgICAg
ICAgIG9mIFBhZ2U6OmZyYW1lSXNNYWluRnJhbWUsIHNvIHdyb3RlIGl0IG91dCBoZXJlIGluc3Rl
YWQgb2YgdXNpbmcgYSBmdW5jdGlvbgorICAgICAgICBjYWxsLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmNwcDogUmVtb3ZlZCB0aGUgdW51c2VkIGlzTWFpblJlc291cmNl
TG9hZGVyIGZ1bmN0aW9uLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOiBS
ZW1vdmVkIGRlY2xhcmF0aW9ucyBvZiBhIGZldyBub25leGlzdGVudCBvcgorICAgICAgICB1bnVz
ZWQgcHJpdmF0ZSBtZW1iZXIgZnVuY3Rpb25zLiBBbHNvIHJlbW92ZWQgdGhlIEluamVjdGVkU2Ny
aXB0Rm9yT3JpZ2luTWFwCisgICAgICAgIHR5cGVkZWY6IEl0J3MgbW9yIHJlYWRhYmxlIHRvIHVz
ZSB0aGUgdHlwZSBkaXJlY3RseQorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IFJl
bW92ZWQgaXNMb2FkaW5nTWFpbkZyYW1lLiBJdCdzIG5vdCBiZXR0ZXIgdGhhbgorICAgICAgICBj
YWxsaW5nIGZyYW1lKCkuaXNNYWluRnJhbWUoKSBkaXJlY3RseS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKTogSW5pdGlhbGl6ZSBt
X21haW5GcmFtZSBhbmQgY2FsbCBzZWxmT25seVJlZiwga2VlcGluZworICAgICAgICB0aGUgTWFp
bkZyYW1lIGFsaXZlIGFzIGxvbmcgYXMgYW55IG9mIGl0cyBzdWJmcmFtZXMgaXMgYWxpdmUuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKTogQ2FsbCBzZWxmT25seURlcmVmLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZVZpZXcpOiBVc2UgaXNNYWluRnJhbWUuCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6IERpdHRvLgor
CisgICAgICAgICogcGFnZS9GcmFtZS5oOiBBZGRlZCBGcmFtZTo6bWFpbkZyYW1lLCBGcmFtZTo6
aXNNYWluRnJhbWUsIGFuZCBGcmFtZTo6bV9tYWluRnJhbWUuCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOiBSZW1vdmVkIHRoZSBpc01haW5GcmFtZVZpZXcgZnVuY3Rpb24uIEl0J3Mgbm90
IGJldHRlciB0aGFuCisgICAgICAgIGNhbGxpbmcgZnJhbWUoKS5pc01haW5GcmFtZSgpIGRpcmVj
dGx5LgorCisgICAgICAgICogcGFnZS9NYWluRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWFpbkZyYW1lOjpNYWluRnJhbWUpOiBJbml0aWFsaXplIG1fc2VsZk9ubHlSZWZDb3VudCB0byAw
LgorICAgICAgICAoV2ViQ29yZTo6TWFpbkZyYW1lOjpzZWxmT25seVJlZik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWFpbkZyYW1lOjpzZWxmT25seURlcmVmKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNYWluRnJhbWU6OmRyb3BDaGlsZHJlbik6IEFkZGVkLiBDYWxsZWQgd2hlbiB0
aGUgc2VsZi1vbmx5IHJlZmVyZW5jZQorICAgICAgICBjb3VudCByZWFjaGVzIDAgdG8gYXZvaWQg
YSByZWZlcmVuY2UgY3ljbGUgd2l0aCBzdWJmcmFtZXMuCisKKyAgICAgICAgKiBwYWdlL01haW5G
cmFtZS5oOiBBZGRlZCBuZXcgZGF0YSBtZW1iZXJzIGFzIG1lbnRpb25lZCBhYm92ZS4gQWxzbywg
dGhlCisgICAgICAgIGRlZmluaXRpb24gb2YgdGhlIEZyYW1lOjppc01haW5GcmFtZSBpbmxpbmUg
ZnVuY3Rpb24gZ29lcyBoZXJlLCBzaW5jZSBpdCBjYW4ndAorICAgICAgICBjb21waWxlIHdpdGhv
dXQgdGhlIE1haW5GcmFtZSBjbGFzcyBkZWZpbml0aW9uLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGVy
cyBvZgorICAgICAgICBpc01haW5GcmFtZSBuZWVkIHRvIGluY2x1ZGUgTWFpbkZyYW1lLmgsIHdo
aWNoIHNlZW1zIHJlYXNvbmFibGUgYW5kIGlzIGVhc3kKKyAgICAgICAgdG8gZG8uCisKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOiBBZGRlZCBhc3NlcnRp
b24gdG8gUGFnZTo6bWFpbkZyYW1lIHNpbmNlIGl0IHJldHVybnMgYSByZWZlcmVuY2UuCisgICAg
ICAgIFJlbW92ZWQgUGFnZTo6ZnJhbWVJc01haW5GcmFtZSBzaW5jZSBpdCdzIG5vdCBiZXR0ZXIg
dGhhbiBjYWxsaW5nIGlzTWFpbkZyYW1lCisgICAgICAgIG9uIHRoZSBmcmFtZS4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Vmlz
dWFsVXBkYXRlc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEJlY29t
ZUN1cnJlbnREb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVw
ZGF0ZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJ
blBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0lu
amVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQ
bHVnSW4pOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURvY3VtZW50OjpzaG91bGRTaHJpbmtUb0ZpdCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRMYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQcm9ncmVzc2luZ1N0YXR1
c0NoYW5nZWQpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0
b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUp
OgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Db250cm9sbGVyOjpzdGFydExvYWRlcik6CisgICAgICAgICogcGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcik6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpibHVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjphbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVz
dWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRXaXRoV3JhcCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRGcmFtZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEhlYWRlckhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNldEZvb3RlckhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNo
b3VsZFVwZGF0ZUZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmJlZ2luRGVmZXJyZWRSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmVuZERlZmVycmVkUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmlzaWJsZUNvbnRl
bnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbGJh
clN0eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Nyb2xs
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
Vmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyk6Cisg
ICAgICAgIFVzZSB0aGUgbmV3IGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZSBpbnN0ZWFkIG9mIFBh
Z2U6OmZyYW1lSXNNYWluRnJhbWUsCisgICAgICAgIFBhZ2U6Om1haW5GcmFtZSwgRnJhbWVMb2Fk
ZXI6OmlzTG9hZGluZ01haW5GcmFtZSwgYW5kIEZyYW1lVmlldzo6aXNNYWluRnJhbWVWaWV3Lgor
CiAyMDEzLTA5LTI4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQYXNzIFZNIGluc3RlYWQgb2YgRXhlY1N0YXRlIHRvIEpTRnVuY3Rpb24gY29uc3RydWN0b3Jz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNDgwZDM1NjBlYjRhOGYyYjBkYzAx
NzRjMGM0Mjg4MGQ3ZTViMWE3ZC4uZjVmYTc1Mzc1NDEyMGRmMjg4MjU2ODJkN2M2OTAyMDQ4OTc3
ZGQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTMtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBG
cmFtZTo6bWFpbkZyYW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICBDYWxsIGlz
TWFpbkZyYW1lLgorCiAyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwN2MyZTE2
NWRhNTNkMTkzMjVkMjE3NzdjNDQwMmMyOTg4MGNkMDE5Li43YTQ1NGJkYWMzNThiMGEwOGMxZjMx
ZTAwODU2ZTZiYTI1ZWJiNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBG
cmFtZTo6bWFpbkZyYW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAg
ICAgIENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IGNkZjA4ODY4MmI2ZjBiMTNmYWIzZTM0ZDkzMjAwMjQxNTQ1MWM1Y2EuLjAwMmVkNTQ4Nzky
OWZiZmNlMjQ1NjE4M2NkNWRkYmYzMzk5ZjQ2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wOS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIEZyYW1lOjptYWluRnJhbWUgYW5kIEZyYW1lOjppc01haW5GcmFtZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIENhbGwg
aXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGJ1aWxkIGZpeCBhZnRlciByMTU2
NTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDUwMTIxZDUzY2RjZmUyOTdhMmFiZDliMTFjMmFkZTc2
ZTJjNTAyODEuLmZhZWNlNjIwNTljMmZhNzk5MjQxOGM2YTMxMWIzOGM0ZGViZTgzYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wOS0yOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZyYW1lOjptYWluRnJhbWUgYW5kIEZyYW1l
Ojppc01haW5GcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyMDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9p
bnN0YWxsXSk6CisgICAgICAgIENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjggIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgZmFpbHMgdG8gYnVpbGQg
d2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBjbGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NDczYTlkMmVmMWEz
MzlhZDBjNDVlYTlkYmEyMGNkYjIzNmI4NDI1Li5lNWI2ZDAyYjU2ZTA1NDE1NjJmZGJmMWQ3ODJi
OGZkZTMwMjRjMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMjggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBGcmFtZTo6bWFpbkZy
YW1lIGFuZCBGcmFtZTo6aXNNYWluRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyk6CisgICAgICAg
IENhbGwgaXNNYWluRnJhbWUuCisKIDIwMTMtMDktMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXNzYWdlIHNlbmRpbmcgZnVuY3Rpb25zIHNob3Vs
ZCBvbmx5IGFjY2VwdCBydmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDQ4MWIwYTEzZTdm
ODVlYjRhYjVhZGE5MzU2NTUwN2QyNjU2YTE1NTEuLjQ5N2FhZGY1NTg5NmQ2YTRiNDdiMDA3OGJl
MTFlNDZlMzA1ZWJjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NTksNyArODU5LDYgQEAg
X19aTjdXZWJDb3JlNFBhZ2UxNHNldE1lZGlhVm9sdW1lRWYKIF9fWk43V2ViQ29yZTRQYWdlMTVh
ZGRTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlMxXzEyU2NoZWR1bGVQYWlyRUVFCiBf
X1pON1dlYkNvcmU0UGFnZTE1ZGlkTW92ZU9uc2NyZWVuRXYKIF9fWk43V2ViQ29yZTRQYWdlMTZj
b3VudEZpbmRNYXRjaGVzRVJLTjNXVEY2U3RyaW5nRWpqCi1fX1pON1dlYkNvcmU0UGFnZTE2ZnJh
bWVJc01haW5GcmFtZUVQS05TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTRQYWdlMTZzZXRDYW5TdGFy
dE1lZGlhRWIKIF9fWk43V2ViQ29yZTRQYWdlMTZzZXREZWZlcnNMb2FkaW5nRWIKIF9fWk43V2Vi
Q29yZTRQYWdlMTd3aWxsTW92ZU9mZnNjcmVlbkV2CkBAIC0xNjk0LDcgKzE2OTMsNiBAQCBfX1pO
SzdXZWJDb3JlOUZyYW1lVmlldzExbmVlZHNMYXlvdXRFdgogX19aTks3V2ViQ29yZTlGcmFtZVZp
ZXcxM2lzVHJhbnNwYXJlbnRFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxM3BhaW50QmVoYXZp
b3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxNGRpZEZpcnN0TGF5b3V0RXYKLV9fWk5LN1dl
YkNvcmU5RnJhbWVWaWV3MTVpc01haW5GcmFtZVZpZXdFdgogX19aTks3V2ViQ29yZTlGcmFtZVZp
ZXcxN2NvbnZlcnRUb1JlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU183SW50UmVjdEUK
IF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTdjb252ZXJ0VG9SZW5kZXJlckVQS05TXzEyUmVuZGVy
T2JqZWN0RVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWJhc2VCYWNr
Z3JvdW5kQ29sb3JFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggODQzNzExZGI5ZGViYzc1
OTc1MDA5OGMwMzcxNDQyODkyOTMxMWU1My4uMjQzMTI0MDM0ODI2MGVkYWZjOGI1MDliMDQzMjRh
OTJjZjUxNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZChib29sIHZpc3VhbFVwZGF0
ZXNBbGxvd2VkKQogICAgICAgICB1cGRhdGVMYXlvdXQoKTsKIAogICAgIGlmIChQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKCkpKSB7CisgICAgICAgIGlmIChmcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAg
ICAgICBmcmFtZVZpZXctPmFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMoRGlkRmlyc3RQYWludEFm
dGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKICAgICAgICAgICAgIGlmIChwYWdl
LT5yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgJiBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJl
c3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKQogICAgICAgICAgICAgICAgIGZyYW1lKCktPmxvYWRl
cigpLmRpZExheW91dChEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVu
ZGVyaW5nKTsKQEAgLTIwNDIsMTMgKzIwNDIsMTMgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQmVjb21l
Q3VycmVudERvY3VtZW50SW5GcmFtZSgpCiAgICAgLy8gRklYTUU6IERvaW5nIHRoaXMgZXZlcnkg
dGltZSBpcyBhIHdhc3RlLiBJZiB0aGUgY3VycmVudCBkb2N1bWVudCBhbmQgaXRzCiAgICAgLy8g
c3ViZnJhbWVzJyBkb2N1bWVudHMgaGF2ZSBubyB3aGVlbCBldmVudCBoYW5kbGVycywgdGhlbiB0
aGUgY291bnQgZGlkIG5vdCBjaGFuZ2UsCiAgICAgLy8gdW5sZXNzIHRoZSBkb2N1bWVudHMgdGhl
eSBhcmUgcmVwbGFjaW5nIGhhZCB3aGVlbCBldmVudCBoYW5kbGVycy4KLSAgICBpZiAocGFnZSgp
ICYmIHBhZ2UoKS0+ZnJhbWVJc01haW5GcmFtZShtX2ZyYW1lKSkKKyAgICBpZiAocGFnZSgpICYm
IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VXaGVlbEV2ZW50SGFuZGxlckNv
dW50Q2hhbmdlZCgqcGFnZSgpKTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLy8g
RklYTUU6IERvaW5nIHRoaXMgb25seSBmb3IgdGhlIG1haW4gZnJhbWUgaXMgaW5zdWZmaWNpZW50
LgogICAgIC8vIEEgc3ViZnJhbWUgY291bGQgaGF2ZSB0b3VjaCBldmVudCBoYW5kbGVycy4KLSAg
ICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXJzKCkgJiYgcGFnZSgpICYmIHBhZ2UoKS0+ZnJhbWVJ
c01haW5GcmFtZShtX2ZyYW1lKSkKKyAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXJzKCkgJiYg
cGFnZSgpICYmIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkubmVlZFRvdWNoRXZlbnRzKHRydWUpOwogI2VuZGlmCiAKQEAgLTI5NjUsNyAr
Mjk2NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZl
YXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50czo6VHlwZSBvCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVZpZXdwb3J0QXJndW1lbnRzKCkKIHsKLSAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+ZnJhbWVJ
c01haW5GcmFtZShmcmFtZSgpKSkgeworICAgIGlmIChwYWdlKCkgJiYgZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0
UHJvcGVydGllc0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpCiAgICAgICAgICAgICAvLyBm
dW5jdGlvbi4gSXQgd291bGQgYmUgbmljZSBpZiB0aGVyZSB3YXMgbW9yZSBzeW1tZXRyeSBoZXJl
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4Njk4CiAgICAgICAgICAgICB2LT5jYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOwotICAg
ICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZnJhbWVJc01haW5GcmFtZShtX2ZyYW1lKSkgewor
ICAgICAgICAgICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAg
ICAgICAgICAgIHYtPnJlc2V0U2Nyb2xsYmFyc0FuZENsZWFyQ29udGVudHNTaXplKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5jbGVhclN0YXRlVHJlZSgpOwpAQCAtNjA1MSw3ICs2MDUxLDcg
QEAgdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJX
b3JsZCogd29ybGQpCiAgICAgaWYgKCFqc1N0cmluZykKICAgICAgICAganNTdHJpbmcgPSBwbHVn
SW5zSmF2YVNjcmlwdDsKIAotICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVh
dGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcpLCB3b3JsZCk7CisgICAgbV9mcmFt
ZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUo
anNTdHJpbmcpLCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IGVkMTM1YTcx
ZWM4NTM3YWRmMjQ1NmRjMTM2MTI4MThlNzM1M2QzZmEuLjY5OTc4Zjg5Mjg2MTFjODY4NTRmNjY0
NTg0YzAwZTE1NDhhY2ZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CkBAIC0xNTcsNyArMTU3LDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFt
ZSkKICAgICBBU1NFUlQobV92aWV3KTsKIAogICAgIGlmIChmcmFtZS5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpID09ICZmcmFtZSkKLSAgICAgICAgZnJhbWUucGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUoJmZyYW1lLnBhZ2UoKS0+bWFpbkZy
YW1lKCkpOworICAgICAgICBmcmFtZS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3Vz
ZWRGcmFtZSgmZnJhbWUubWFpbkZyYW1lKCkpOwogCiAgICAgLy8gQ3VzdG9tIHNjcm9sbGJhciBy
ZW5kZXJlcnMgd2lsbCBnZXQgcmVhdHRhY2hlZCB3aGVuIHRoZSBkb2N1bWVudCBjb21lcyBvdXQg
b2YgdGhlIHBhZ2UgY2FjaGUKICAgICBtX3ZpZXctPmRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDE5YWY1NmFmN2EzMTkxN2Fm
ZTI5ZmRhYzlmYzFiYWU5YzEyODI1NzAuLjk5ZjhlZDQ5YzFjMGJlOTIwZjY2ZWIxZDhlY2FiOGFi
NGJhYzlkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCBDYWNoZWRQYWdlOjp+Q2FjaGVkUGFnZSgpCiB2b2lkIENhY2hlZFBhZ2U6OnJlc3Rv
cmUoUGFnZSYgcGFnZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRNYWluRnJhbWUpOwotICAgIEFT
U0VSVChwYWdlLmZyYW1lSXNNYWluRnJhbWUoJm1fY2FjaGVkTWFpbkZyYW1lLT52aWV3KCktPmZy
YW1lKCkpKTsKKyAgICBBU1NFUlQobV9jYWNoZWRNYWluRnJhbWUtPnZpZXcoKS0+ZnJhbWUoKS5p
c01haW5GcmFtZSgpKTsKICAgICBBU1NFUlQoIXBhZ2Uuc3ViZnJhbWVDb3VudCgpKTsKIAogICAg
IG1fY2FjaGVkTWFpbkZyYW1lLT5vcGVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKaW5kZXggNmEyMzdmM2M2NTlkZTE4MDYzNDU2MDY1MGViNWNkNGFhMGIzMGQxMy4uMzI5NDIw
NjgwNjVkYWU1NzZhNTdjMmNkNzM3NTZkZjE4ZTA0ZmE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNhY2hlOjptYXJrUGFn
ZXNGb3JGdWxsU3R5bGVSZWNhbGMoUGFnZSogcGFnZSkKIHsKICAgICBmb3IgKEhpc3RvcnlJdGVt
KiBjdXJyZW50ID0gbV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bV9uZXh0KSB7
CiAgICAgICAgIENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBjdXJyZW50LT5tX2NhY2hlZFBhZ2Uu
Z2V0KCk7Ci0gICAgICAgIGlmIChwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKCZjYWNoZWRQYWdlLT5j
YWNoZWRNYWluRnJhbWUoKS0+dmlldygpLT5mcmFtZSgpKSkKKyAgICAgICAgaWYgKCZwYWdlLT5t
YWluRnJhbWUoKSA9PSAmY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPnZpZXcoKS0+ZnJh
bWUoKSkKICAgICAgICAgICAgIGNhY2hlZFBhZ2UtPm1hcmtGb3JGdWxsU3R5bGVSZWNhbGMoKTsK
ICAgICB9CiB9CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBQYWdlQ2FjaGU6Om1hcmtQYWdlc0Zv
ckRldmljZVNjYWxlQ2hhbmdlZChQYWdlKiBwYWdlKQogewogICAgIGZvciAoSGlzdG9yeUl0ZW0q
IGN1cnJlbnQgPSBtX2hlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5tX25leHQpIHsK
ICAgICAgICAgQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSA9IGN1cnJlbnQtPm1fY2FjaGVkUGFnZS5n
ZXQoKTsKLSAgICAgICAgaWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJmNhY2hlZFBhZ2UtPmNh
Y2hlZE1haW5GcmFtZSgpLT52aWV3KCktPmZyYW1lKCkpKQorICAgICAgICBpZiAoJnBhZ2UtPm1h
aW5GcmFtZSgpID09ICZjYWNoZWRQYWdlLT5jYWNoZWRNYWluRnJhbWUoKS0+dmlldygpLT5mcmFt
ZSgpKQogICAgICAgICAgICAgY2FjaGVkUGFnZS0+bWFya0ZvckRldmljZVNjYWxlQ2hhbmdlZCgp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGZkY2NiNzI3ZDVlOGQ1NTZiMDY5ZmQ1ZDA4YTA0YTBlY2M2MWY1NzMuLmM2
MzZjZDQxMWM0OWNhYTkxMzU0YzAwZGI2ZGUwZmQzZjA5OGVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNjA1LDcgKzYwNSw3IEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1
Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBp
bk1haW5GcmFtZSA9IGRvY3VtZW50KCkucGFnZSgpLT5mcmFtZUlzTWFpbkZyYW1lKGRvY3VtZW50
KCkuZnJhbWUoKSk7CisgICAgYm9vbCBpbk1haW5GcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKS0+
aXNNYWluRnJhbWUoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLmlzUGx1Z2luRG9jdW1lbnQoKSAm
JiBpbk1haW5GcmFtZSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gZG9jdW1l
bnQgaW4gbWFpbiBmcmFtZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggYWNiNjcyZGEyZTY1ZTZjNjUyMDY5ZDQ1ZTQ4OTkwMWJhMjg1NzE4Zi4uZWEyYjk5
YjIyOTJhMzljN2E2NmExZWQxYTJmMGExNzg0ZWZmMDkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
QEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTM3NCw3ICszNzQsNyBAQCBDYWNoZWRJ
bWFnZSogSW1hZ2VEb2N1bWVudDo6Y2FjaGVkSW1hZ2UoKQogCiBib29sIEltYWdlRG9jdW1lbnQ6
OnNob3VsZFNocmlua1RvRml0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWUoKS0+c2V0dGlu
Z3MoKS5zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5m
cmFtZUlzTWFpbkZyYW1lKGZyYW1lKCkpOworICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygp
LnNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQoKSAmJiBmcmFtZSgpLT5pc01haW5GcmFtZSgp
OwogfQogCiB2b2lkIEltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwCmluZGV4IDI3MzI0Mjk5NDEzYzZjYzk3ZDA3MmY1YjY1ZWNmYTQ5ODI0
ZWU3MjIuLjhlYzU1ZmQyMmI4ODRhYzczNmQ5ZmIwYjRlYTc5NGNlZjhhMjVhZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTM5LDExICsxMzks
NiBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZCgpCiAg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhcklu
c3BlY3RlZE9iamVjdHMoKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JBZ2VudDo6aXNNYWluUmVzb3Vy
Y2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKQot
ewotICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPmZyYW1lSXNNYWluRnJhbWUobG9hZGVyLT5m
cmFtZSgpKSAmJiByZXF1ZXN0VXJsID09IGxvYWRlci0+cmVxdWVzdFVSTCgpOwotfQotCiB2b2lk
IEluc3BlY3RvckFnZW50OjpldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNw
ZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0b3JBZ2VudEVuYWJsZWQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCA3NzJjOTJiYmYxNjQwODYxOTFhMTU0YWE4
MWQ2ZTI4NTg1NzZmYjk3Li42ZDQ5MmIyZWY0NzVjNmNiOGU5ZGMyZDYzOGViYTdlNzdkOWViZjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtOTIsMjIg
KzkyLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIElu
amVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb21w
b3NpdGVTdGF0ZSopOwogCi0gICAgdm9pZCB1bmJpbmRBbGxSZXNvdXJjZXMoKTsKLQotI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJv
b2wpOwotI2VuZGlmCi0KLSAgICBib29sIGlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKTsKLQogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFn
ZTsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogCi0gICAgVmVjdG9yPHBhaXI8bG9u
ZywgU3RyaW5nPiA+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwotICAgIHBhaXI8UmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiA+IG1fcGVuZGluZ0luc3BlY3REYXRhOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gSW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW5NYXA7Ci0gICAgSW5qZWN0ZWRTY3Jp
cHRGb3JPcmlnaW5NYXAgbV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbjsKKyAgICBWZWN0b3I8cGFp
cjxsb25nLCBTdHJpbmc+PiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKKyAgICBwYWly
PFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOworICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggMjRiNGY1YTczZmI3YzM0ZjhkNzBlMzkzNGM3NTU2MjdlYWIwNjQwMS4uMzlk
NWQ0ZGRlODc0ZmE2MjlhMjdiNjVkOGI1NDI2ZjY5NTdhNmE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkRPTVdyYXBw
ZXJXb3JsZC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgiCkBAIC02OSw2ICs2OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUs
IERPTVdyYXBwZXJXbwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VwcG9zZWQgdG8gc2VydmUg
YXMgSW5zcGVjdG9yRnJvbnRlbmQgbm90aWZ5IGluc3BlY3RvciBmcm9udGVuZAogICAgIC8vIGNs
aWVudCB0aGF0IGl0J3MgY2xlYXJlZCBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGV4cG9zZSBpbnNw
ZWN0b3IgYmluZGluZ3MuCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgJiYgbV9w
YWdlLT5mcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGM3
YzUzOGVhMjUyNmM2OTBiYThkYjk3ZDI5NDY1OTRjOTBiY2MyZTQuLjExYmQ1ODM3MGIzODY3YTE4
YjIwMDUwNjJlOGRlYWM1NmM0NDVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC05MDMsNyArOTAzLDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnQKICAgICBpZiAoIWluc3BlY3RvckFnZW50IHx8ICFpbnNw
ZWN0b3JBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAocGFnZS0+ZnJhbWVJc01haW5GcmFtZShsb2FkZXItPmZyYW1lKCkpKSB7CisgICAg
aWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoSW5zcGVj
dG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JDb25zb2xlQWdlbnQoKSkKICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+cmVzZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCAxMDcyMGEwNDY0Nzk5MzUxMjcyZjFiOGFhMWUzNDI4NzkzMjRkNDQ0Li40OWE3YTlkOTE0
YWM5N2MzMTQxYzVjZGVkMjU1MTdkYjkzYzViMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtODczLDcgKzg3Myw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZy
YW1lLCBET01XcmFwcGVyV29yCiAgICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlLT5mcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7CiAKICAgICBpZiAoIW1f
ZnJvbnRlbmQpCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omxv
YWRFdmVudEZpcmVkKCkKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKG1fcGFnZS0+ZnJhbWVJc01haW5G
cmFtZShsb2FkZXItPmZyYW1lKCkpKSB7CisgICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgewogICAgICAgICBtX3NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gbV9wZW5k
aW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgICAgIG1fc2NyaXB0UHJlcHJvY2Vz
c29yID0gbV9wZW5kaW5nU2NyaXB0UHJlcHJvY2Vzc29yOwogICAgICAgICBtX3BlbmRpbmdTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggYmJmYmExMzVhN2JkY2NlNGVjNGRlYzdlMWFhNGExY2Y1
ODBjM2FkNy4uODc1ZjEzMmQzMzRlMmQwNTFkNTRkOTQ4YjM0NmY5NWEyZjU0MDViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkZvcm1TdGF0ZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIkljb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZQogCiAgICAgLy8gVXBkYXRlIGNvb2tpZSBwb2xpY3kgYmFz
ZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2VwdCBmb3Igc3ViZnJhbWVzLCB3aGljaCB1c2UgdGhl
CiAgICAgLy8gVVJMIG9mIHRoZSBtYWluIGZyYW1lIHdoaWNoIGRvZXNuJ3QgY2hhbmdlIHdoZW4g
d2UgcmVkaXJlY3QuCi0gICAgaWYgKGZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ01haW5GcmFtZSgp
KQorICAgIGlmIChmcmFtZUxvYWRlcigpLT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpCiAgICAgICAg
IG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3UmVxdWVzdC51cmwoKSk7CiAK
ICAgICAvLyBJZiB3ZSdyZSBmaWVsZGluZyBhIHJlZGlyZWN0IGluIHJlc3BvbnNlIHRvIGEgUE9T
VCwgZm9yY2UgYSBsb2FkIGZyb20gb3JpZ2luLCBzaW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggZjNlZjY5ZTdhNTE5NDc4NDJkOWMwZTdhZTIwOGYxMDlkY2NiYjM4
OC4uMmNiYzUwZGEyMzYwYjFiYTdmYjZkOGRjNjA1MzY4NWM5MzM1NjI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xODMxLDcgKzE4MzEsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSkKICAg
ICBzZXRTdGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSk7CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc0xvYWRpbmdNYWluRnJhbWUoKSkKKyAgICBpZiAobV9mcmFtZS5p
c01haW5GcmFtZSgpKQogICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCku
bmVlZFRvdWNoRXZlbnRzKGZhbHNlKTsKICNlbmRpZgogCkBAIC0xODQ2LDcgKzE4NDYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVk
UGFnZSkKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgbG9hZCB3aXRoaW4gYSBmcmFt
ZSBpcyBhIG5hdmlnYXRpb24gd2l0aGluIGEgYmFjay9mb3J3YXJkIGxpc3QgdGhhdCB3YXMgYXR0
YWNoZWQKICAgICAgICAgICAgICAgICAvLyB3aXRob3V0IGFueSBvZiB0aGUgaXRlbXMgYmVpbmcg
bG9hZGVkIHRoZW4gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhpc3RvcnkgaW4gYSBzaW1pbGFyIG1h
bm5lciBhcwogICAgICAgICAgICAgICAgIC8vIGZvciBhIHN0YW5kYXJkIGxvYWQgd2l0aCB0aGUg
ZXhjZXB0aW9uIG9mIHVwZGF0aW5nIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCAoPHJkYXI6Ly9wcm9i
bGVtLzgwOTExMDM+KS4KLSAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5lLmNvbW1p
dHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmIGlzTG9hZGluZ01haW5GcmFtZSgpKQorICAg
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1l
bnRMb2FkKCkgJiYgbV9mcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBo
aXN0b3J5KCkudXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhpc3RvcnlDb250cm9sbGVyOjpVcGRhdGVB
bGxFeGNlcHRCYWNrRm9yd2FyZExpc3QpOwogCiAgICAgICAgICAgICAgICAgaGlzdG9yeSgpLnVw
ZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpOwpAQCAtMTk2MCw3ICsxOTYwLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3JlKCkKIHsKICAgICBBU1NF
UlQoIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkp
OwotICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKS0+ZnJhbWVJc01haW5GcmFtZSgmbV9mcmFtZSkp
OworICAgIEFTU0VSVChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCiAgICAgbV9mcmFtZS5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKCk7CiAKQEAgLTIwMjcsMTEgKzIwMjcsNiBAQCBib29s
IEZyYW1lTG9hZGVyOjppc0hvc3RlZEJ5T2JqZWN0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG93bmVyICYmIG93bmVyLT5oYXNUYWdOYW1lKG9iamVjdFRhZyk7CiB9CiAKLWJvb2wgRnJhbWVM
b2FkZXI6OmlzTG9hZGluZ01haW5GcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWUu
cGFnZSgpICYmIG1fZnJhbWUucGFnZSgpLT5mcmFtZUlzTWFpbkZyYW1lKCZtX2ZyYW1lKTsKLX0K
LQogYm9vbCBGcmFtZUxvYWRlcjo6aXNSZXBsYWNpbmcoKSBjb25zdAogewogICAgIHJldHVybiBt
X2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZXBsYWNlOwpAQCAtMjE3OSw3ICsyMTc0LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogCiAgICAg
ICAgICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKICAgICAgICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAocGFnZS0+ZnJhbWVJc01haW5GcmFtZSgmbV9mcmFtZSkpCisgICAgICAgICAgICAgICAgaWYg
KG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAgICAgcGFnZS0+cmVzZXRS
ZWxldmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAgICAgICAgICAgICB9CiAKQEAgLTIyODYs
MTAgKzIyODEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPcmlnaW5hbFVSTEZvckRvd25sb2Fk
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRp
ZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIEFTU0VS
VChwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKCZtX2ZyYW1lKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQo
bV9mcmFtZS5pc01haW5GcmFtZSgpKTsKIAogICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkTGF5b3V0
KG1pbGVzdG9uZXMpOwogfQpAQCAtMjM1Myw3ICsyMzQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hlY2tMb2FkQ29tcGxldGUoKQogICAgIC8vIEZJWE1FOiBBbHdheXMgdHJhdmVyc2luZyB0aGUg
ZW50aXJlIGZyYW1lIHRyZWUgaXMgYSBiaXQgaW5lZmZpY2llbnQsIGJ1dCAKICAgICAvLyBpcyBj
dXJyZW50bHkgbmVlZGVkIGluIG9yZGVyIHRvIG51bGwgb3V0IHRoZSBwcmV2aW91cyBoaXN0b3J5
IGl0ZW0gZm9yIGFsbCBmcmFtZXMuCiAgICAgVmVjdG9yPFJlZjxGcmFtZT4sIDE2PiBmcmFtZXM7
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9mcmFtZS5wYWdlKCktPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1fZnJhbWUubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lcy5hcHBlbmQoKmZyYW1lKTsKIAog
ICAgIC8vIFRvIHByb2Nlc3MgY2hpbGRyZW4gYmVmb3JlIHRoZWlyIHBhcmVudHMsIGl0ZXJhdGUg
dGhlIHZlY3RvciBiYWNrd2FyZHMuCkBAIC0yNDQ2LDcgKzI0MzgsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZy
YW1lTG9hZFR5cAogICAgIC8vIERvbid0IHNldCB0aGUgY29va2llIHBvbGljeSBVUkwgaWYgaXQn
cyBhbHJlYWR5IGJlZW4gc2V0LgogICAgIC8vIEJ1dCBtYWtlIHN1cmUgdG8gc2V0IGl0IG9uIGFs
bCByZXF1ZXN0cyByZWdhcmRsZXNzIG9mIHByb3RvY29sLCBhcyBpdCBoYXMgc2lnbmlmaWNhbmNl
IGJleW9uZCB0aGUgY29va2llIHBvbGljeSAoPHJkYXI6Ly9wcm9ibGVtLzY2MTY2NjQ+KS4KICAg
ICBpZiAocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAobWFpblJlc291cmNlICYmIGlzTG9hZGluZ01haW5GcmFtZSgpKQorICAgICAgICBpZiAo
bWFpblJlc291cmNlICYmIG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIHJlcXVl
c3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIGVsc2Ug
aWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgICAg
IHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JD
b29raWVzKCkpOwpAQCAtMjU4Niw4ICsyNTc4LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUK
ICAgICAgICAgaW5pdGlhbFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICBh
ZGRIVFRQT3JpZ2luSWZOZWVkZWQoaW5pdGlhbFJlcXVlc3QsIG91dGdvaW5nT3JpZ2luKCkpOwog
Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgaW5pdGlhbFJl
cXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLnVybCgpKTsKKyAgICBpbml0aWFsUmVxdWVzdC5z
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlcXVlc3QoKS51cmwoKSk7CiAgICAgCiAgICAgYWRkRXh0cmFGaWVsZHNU
b1N1YnJlc291cmNlUmVxdWVzdChpbml0aWFsUmVxdWVzdCk7CiAKQEAgLTI4NDAsOSArMjgzMSw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9u
IHJlcXVlc3QgY2FtZSBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgbWVudSwgYW5kIHdlIHB1bnQgb24g
aXQsIHdlIGhhdmUgdGhlIAogICAgICAgICAvLyBwcm9ibGVtIHRoYXQgd2UgaGF2ZSBvcHRpbWlz
dGljYWxseSBtb3ZlZCB0aGUgYi9mIGN1cnNvciBhbHJlYWR5LCBzbyBtb3ZlIGl0IGJhY2suICBG
b3Igc2FuaXR5LCAKICAgICAgICAgLy8gd2Ugb25seSBkbyB0aGlzIHdoZW4gcHVudGluZyBhIG5h
dmlnYXRpb24gZm9yIHRoZSB0YXJnZXQgZnJhbWUgb3IgdG9wLWxldmVsIGZyYW1lLiAgCi0gICAg
ICAgIGlmICgoaXNUYXJnZXRJdGVtIHx8IGlzTG9hZGluZ01haW5GcmFtZSgpKSAmJiBpc0JhY2tG
b3J3YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCkpKSB7CisgICAgICAgIGlm
ICgoaXNUYXJnZXRJdGVtIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkgJiYgaXNCYWNrRm9yd2Fy
ZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSkgewogICAgICAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChIaXN0
b3J5SXRlbSogcmVzZXRJdGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgp
LmN1cnJlbnRJdGVtKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoSGlzdG9yeUl0ZW0qIHJlc2V0
SXRlbSA9IG1fZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVt
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS5zZXRDdXJyZW50
SXRlbShyZXNldEl0ZW0pOwogICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTI4NjIsNyArMjg1Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5mcmFtZUlz
TWFpbkZyYW1lKCZtX2ZyYW1lKSkKKyAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkK
ICAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzdW1lKCk7CiAgICAg
fQogI2VuZGlmCkBAIC0zMzIyLDE0ICszMzEzLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKIAotICAgIGlmIChpc0xvYWRpbmdNYWluRnJhbWUoKSkgeworICAgIGlmIChtX2ZyYW1lLmlz
TWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPnJlc2V0U2VlblBsdWdpbnMo
KTsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPnJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwogICAg
IH0KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZCgmbV9mcmFt
ZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5wYWdlKCktPmZy
YW1lSXNNYWluRnJhbWUoJm1fZnJhbWUpKQorICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5mZWF0dXJlT2JzZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9h
ZCgpOwogCiB9CkBAIC0zMzY4LDcgKzMzNTksNyBAQCBOZXR3b3JraW5nQ29udGV4dCogRnJhbWVM
b2FkZXI6Om5ldHdvcmtpbmdDb250ZXh0KCkgY29uc3QKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFByb2dyZXNzaW5nU3RhdHVzQ2hhbmdlZCgpCiB7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9m
cmFtZS5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICB2aWV3LT51cGRhdGVMYXllckZsdXNoVGhy
b3R0bGluZ0luQWxsRnJhbWVzKCk7CiAgICAgdmlldy0+YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJh
Z2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggODY0ZGI2NTk1MDZj
YTFkY2M4ZmI4YTdjYjFhMzg5MmE1NDg3YjZmMi4uZDI0Y2VhODdjNWRjNDk0ZGIyMTFlNmU0YTFl
YmI1ZmVlZGZmY2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE2Niw3
ICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIAogICAgIGJvb2wgaXNIb3N0ZWRCeU9iamVjdEVs
ZW1lbnQoKSBjb25zdDsKLSAgICBib29sIGlzTG9hZGluZ01haW5GcmFtZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc1JlcGxhY2luZygpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVwbGFjaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCAyNDI4ODU1
ZWNiYzFhNzRkYzRjNGY2MjYwYjVhNWQwNTM0MzVkZGU5Li5kNTY1OThmNDk0MmFkZGM4MTAwYmZl
MDk1NzExMzU2ZWI1NzdiNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAg
ICAgICBpdGVtLT5zZXRTY3JvbGxQb2ludChtX2ZyYW1lLnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24o
KSk7CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgaWYgKHBhZ2UgJiYg
cGFnZS0+ZnJhbWVJc01haW5GcmFtZSgmbV9mcmFtZSkpCisgICAgaWYgKHBhZ2UgJiYgbV9mcmFt
ZS5pc01haW5GcmFtZSgpKQogICAgICAgICBpdGVtLT5zZXRQYWdlU2NhbGVGYWN0b3IocGFnZS0+
cGFnZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGdyZWF0IHRv
IHdvcmsgb3V0IGEgd2F5IHRvIHB1dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0ZWFkIG9mIGNh
bGxpbmcgdGhyb3VnaCB0byB0aGUgY2xpZW50LgpAQCAtMTM0LDEzICsxMzQsMTMgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2OTgKICAgICBp
ZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpOwotICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5mcmFtZUlzTWFp
bkZyYW1lKCZtX2ZyYW1lKSkgeworICAgICAgICBpZiAocGFnZSAmJiBtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uodmll
dyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXZpZXctPndhc1Njcm9sbGVkQnlVc2VyKCkp
IHsKLSAgICAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUoJm1fZnJh
bWUpICYmIG1fY3VycmVudEl0ZW0tPnBhZ2VTY2FsZUZhY3RvcigpKQorICAgICAgICAgICAgaWYg
KHBhZ2UgJiYgbV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1fY3VycmVudEl0ZW0tPnBhZ2VTY2Fs
ZUZhY3RvcigpKQogICAgICAgICAgICAgICAgIHBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihtX2N1
cnJlbnRJdGVtLT5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jdXJyZW50SXRlbS0+c2Nyb2xsUG9pbnQo
KSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9z
aXRpb24obV9jdXJyZW50SXRlbS0+c2Nyb2xsUG9pbnQoKSk7CkBAIC00NjQsOSArNDY0LDcgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKICAgICAgICAgLy8gVGVs
bCBhbGwgb3RoZXIgZnJhbWVzIGluIHRoZSB0cmVlIHRvIGNvbW1pdCB0aGVpciBwcm92aXNpb25h
bCBpdGVtcyBhbmQKICAgICAgICAgLy8gcmVzdG9yZSB0aGVpciBzY3JvbGwgcG9zaXRpb24uICBX
ZSdsbCBhdm9pZCB0aGlzIGZyYW1lICh3aGljaCBoYXMgYWxyZWFkeQogICAgICAgICAvLyBjb21t
aXR0ZWQpIGFuZCBpdHMgY2hpbGRyZW4gKHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQpLgotICAgICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgICAgIEFTU0VSVChwYWdlKTsKLSAg
ICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVVwZGF0
ZUZvckNvbW1pdCgpOworICAgICAgICBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3Rv
cnkoKS5yZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKTsKICAgICB9CiB9CiAKQEAgLTUzMSw3ICs1
MjksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgbV9m
cmFtZS5kb2N1bWVudCgpLT51cmwoKSk7Ci0gICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
aGlzdG9yeSgpLnJlY3Vyc2l2ZVVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKKyAg
ICBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRhdGVG
b3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7CiAKICAgICBpZiAobV9jdXJyZW50SXRlbSkgewog
ICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7
CkBAIC03OTYsNyArNzk0LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0Zv
cndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogICAgIGlmIChtX2ZyYW1lLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IHBhZ2UtPm1haW5G
cmFtZSgpLmxvYWRlcigpOworICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IG1fZnJhbWUu
bWFpbkZyYW1lKCkubG9hZGVyKCk7CiAKICAgICBmcmFtZUxvYWRlci5jaGVja0RpZFBlcmZvcm1G
aXJzdE5hdmlnYXRpb24oKTsKIApAQCAtODM5LDcgKzgzNyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVP
YmplY3QsCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgLy8gR2V0IGEgSGlzdG9yeUl0ZW0gdHJl
ZSBmb3IgdGhlIGN1cnJlbnQgZnJhbWUgdHJlZS4KLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IHRv
cEl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3JlYXRlSXRlbVRy
ZWUobV9mcmFtZSwgZmFsc2UpOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJh
bWUsIGZhbHNlKTsKICAgICAKICAgICAvLyBPdmVycmlkZSBkYXRhIGluIHRoZSBjdXJyZW50IGl0
ZW0gKGNyZWF0ZWQgYnkgY3JlYXRlSXRlbVRyZWUpIHRvIHJlZmxlY3QKICAgICAvLyB0aGUgcHVz
aFN0YXRlKCkgYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IGFmZTY3Yjc5ZTNhMWMzMWFkNTQ0Njc0MjhiZjc0ODhmNjE5ZTZj
YzYuLjQ2ZDQxYzBkNmRjYzU5ODdiZTBlZGU1YjE0MmI1OTEzNmQxOTBmZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
LSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKQEAgLTQ1LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApAQCAtMTMwLDcgKzEzMCw4IEBAIHZvaWQg
SWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKIHsKICAgICAvLyBGSVhNRTogV2Uga2ljayBv
ZmYgdGhlIGljb24gbG9hZGVyIHdoZW4gdGhlIGZyYW1lIGlzIGRvbmUgcmVjZWl2aW5nIGl0cyBt
YWluIHJlc291cmNlLgogICAgIC8vIEJ1dCB3ZSBzaG91bGQgaW5zdGVhZCBkbyBpdCB3aGVuIHdl
J3JlIGRvbmUgcGFyc2luZyB0aGUgaGVhZCBlbGVtZW50LgotICAgIGlmICghbV9mcmFtZS0+bG9h
ZGVyKCkuaXNMb2FkaW5nTWFpbkZyYW1lKCkpCisKKyAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaWNvbkRhdGFiYXNlKCkuaXNFbmFi
bGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDJhZmYzM2E1YzQ2ODJmNWY1MjVlM2MyZDNkYjIyMWZiM2M2NWYxYmMuLmNjMjNkZDI0Njlh
MDZiMDcxZmZhNDZjYjU4Y2UwNjFlNTVkMTI5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0xMTYsMTAgKzExNiw4IEBAIHZvaWQgQXV0b3Nj
cm9sbENvbnRyb2xsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdE
ZXN0cm95ZWQpCiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAgICAvLyBJZiB3ZSdyZSBu
b3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBhcmUgbm90IGRvaW5nIGEg
cGFuU2Nyb2xsIGFueSBtb3JlLgotICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gZ2V0TWFpbkZy
YW1lKCZmcmFtZSkpIHsKLSAgICAgICAgaWYgKCZmcmFtZSAhPSBtYWluRnJhbWUpCi0gICAgICAg
ICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRpZFBhblNjcm9sbFN0b3AoKTsKLSAgICB9
CisgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBmcmFtZS5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5kaWRQYW5TY3JvbGxTdG9wKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGFhOTNmNzUy
YmY2Mzc4ZGI2N2U1YzQyY2E0OTQzYTFmYmJjMDk5ZjUuLmE2M2MwNzMzODFiZWZhZTNlNjExNmJl
ZTZiYWE5NTc5OTA5M2JkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKQEAgLTkyMiw3ICs5MjIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgICAg
ICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUgIT0gJmZyYW1lLT5wYWdlKCktPm1haW5G
cmFtZSgpKQorICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpICYmICFmcmFtZS0+aXNN
YWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuRnJhbWVJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDUwMzM4MDE2NjIyMWIxYzZkZjViMzg4MDFiOWEwY2Yw
MDg2N2E5M2MuLjhjMjUwNjc3OTU5M2EzNDVjMDgxNzRjOWU2NmE2MzMwMDcyODQ0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTIxNSwxMCArMjE1LDkgQEAgc3RhdGljIGJvb2wg
YWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKERPTVdpbmRvdyogd2luZG93KQogICAgIEZyYW1l
KiBmcmFtZSA9IHdpbmRvdy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdl
KQorICAgIGlmICghZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKGZyYW1lKTsKKyAgICByZXR1cm4gZnJhbWUtPmlz
TWFpbkZyYW1lKCk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdCZWZv
cmVVbmxvYWRFdmVudHMoKQpAQCAtOTA2LDcgKzkwNSw3IEBAIHZvaWQgRE9NV2luZG93Ojpmb2N1
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIH0KIAogICAgIC8vIElmIHdl
J3JlIGEgdG9wIGxldmVsIHdpbmRvdywgYnJpbmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQuCi0g
ICAgaWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUobV9mcmFtZSkgJiYgYWxsb3dGb2N1cykKKyAg
ICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBhbGxvd0ZvY3VzKQogICAgICAgICBwYWdl
LT5jaHJvbWUoKS5mb2N1cygpOwogCiAgICAgaWYgKCFtX2ZyYW1lKQpAQCAtOTMyLDcgKzkzMSw3
IEBAIHZvaWQgRE9NV2luZG93OjpibHVyKCkKICAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS53
aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJh
bWUgIT0gJnBhZ2UtPm1haW5GcmFtZSgpKQorICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJhbWUo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+Y2hyb21lKCkudW5mb2N1cygpOwpAQCAt
OTQ3LDcgKzk0Niw3IEBAIHZvaWQgRE9NV2luZG93OjpjbG9zZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1fZnJhbWUgIT0gJnBhZ2UtPm1haW5GcmFtZSgpKQorICAgIGlmICghbV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNvbnRleHQpIHsKQEAgLTE0NTIs
MTAgKzE0NTEsOSBAQCBib29sIERPTVdpbmRvdzo6YWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0
cnkoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KG1fZnJhbWUgIT0gJnBhZ2UtPm1haW5GcmFtZSgpKQorICAgIGlmICghbV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFByZXZlbnQgd2ViIGNvbnRl
bnQgZnJvbSB0cmlja2luZyB0aGUgdXNlciBpbnRvIGluaXRpYXRpbmcgYSBkcmFnLgogICAgIGlm
IChtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS5tb3VzZVByZXNzZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCA3ZjMwMGE1MGZmMmEyMjgwZTc5N2M3NDEyNjYzZjM0M2Fj
NTVjYzU5Li5kM2Y4YjM4MWM2Njk2ZjExYjE5NzIxMzU2NWI2MWQ3NDI0NjE5Y2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDI5LDE1ICsxMDI5LDEzIEBAIEhpdFRl
c3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIEhpdFRlCiB7CiAgICAgLy8gV2UgYWx3YXlzIHNlbmQgaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgdG8gdGhlIG1haW4gZnJhbWUgaWYgd2UgaGF2ZSBvbmUsCiAgICAgLy8gb3RoZXJ3
aXNlIHdlIG1pZ2h0IGhpdCBhcmVhcyB0aGF0IGFyZSBvYnNjdXJlZCBieSBoaWdoZXIgZnJhbWVz
LgotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgRnJhbWUm
IG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwotICAgICAgICBpZiAoJm1fZnJhbWUgIT0g
Jm1haW5GcmFtZSkgewotICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1l
LnZpZXcoKTsKLSAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWluRnJhbWUudmll
dygpOwotICAgICAgICAgICAgaWYgKGZyYW1lVmlldyAmJiBtYWluVmlldykgewotICAgICAgICAg
ICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250
ZW50cyhmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocG9pbnQp
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRU
ZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgaGl0VHlwZSwgcGFkZGluZyk7Ci0gICAg
ICAgICAgICB9CisgICAgaWYgKCFtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgRnJh
bWUmIG1haW5GcmFtZSA9IG1fZnJhbWUubWFpbkZyYW1lKCk7CisgICAgICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcg
PSBtYWluRnJhbWUudmlldygpOworICAgICAgICBpZiAoZnJhbWVWaWV3ICYmIG1haW5WaWV3KSB7
CisgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmll
d1RvQ29udGVudHMoZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50
KHBvaW50KSkpOworICAgICAgICAgICAgcmV0dXJuIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5o
aXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgaGl0VHlwZSwgcGFkZGluZyk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEyODAsMTEgKzEyNzgsMTEgQEAgT3B0aW9uYWxDdXJzb3Ig
RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBi
b29sIHNoaWYKICAgICBpZiAobV9yZXNpemVMYXllciAmJiBtX3Jlc2l6ZUxheWVyLT5pblJlc2l6
ZU1vZGUoKSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdlOwogCi0gICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpOwotICAgIGlmICghcGFnZSkKKyAgICBpZiAoIW1fZnJhbWUucGFn
ZSgpKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7CisKICNpZiBFTkFCTEUoUEFOX1ND
Uk9MTElORykKLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkucGFuU2Ny
b2xsSW5Qcm9ncmVzcygpKQorICAgIGlmIChtX2ZyYW1lLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdl
OwogI2VuZGlmCiAKQEAgLTE1NTksNyArMTU1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIC8vIFdlIHN0b3JlIHdoZXRoZXIgcGFuIHNj
cm9sbGluZyBpcyBpbiBwcm9ncmVzcyBiZWZvcmUgY2FsbGluZyBzdG9wQXV0b3Njcm9sbFRpbWVy
KCkKICAgICAvLyBiZWNhdXNlIGl0IHdpbGwgc2V0IG1fYXV0b3Njcm9sbFR5cGUgdG8gTm9BdXRv
c2Nyb2xsIG9uIHJldHVybi4KLSAgICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IG1fZnJh
bWUucGFnZSgpICYmIG1fZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5w
YW5TY3JvbGxJblByb2dyZXNzKCk7CisgICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBt
X2ZyYW1lLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKTsK
ICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVz
cykgewogICAgICAgICAvLyBXZSBpbnZhbGlkYXRlIHRoZSBjbGljayB3aGVuIGV4aXRpbmcgcGFu
IHNjcm9sbGluZyBzbyB0aGF0IHdlIGRvbid0IGluYWR2ZXJ0ZW50bHkgbmF2aWdhdGUKQEAgLTMy
NjAsMTUgKzMyNTgsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRl
TWF5SGF2ZUNoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgewotICAgICAgICAgICAg
Ly8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGlsZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dyZXNz
IHRoZW4gd2Ugd2FudCB0byBzdG9wCi0gICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgCi0gICAgICAgICAgICAgICAgc3RvcEF1dG9z
Y3JvbGxUaW1lcigpOworICAgIGlmIChtX2ZyYW1lLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigp
LnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICAvLyBJZiBhIGtleSBpcyBwcmVzc2Vk
IHdoaWxlIHRoZSBwYW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AK
KyAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5
RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pIAorICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogCi0gICAgICAgICAgICAv
LyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBzd2FsbG93IHRoZSBrZXkgZXZlbnQK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIC8vIElmIHdlIHdl
cmUgaW4gcGFuc2Nyb2xsIG1vZGUsIHdlIHN3YWxsb3cgdGhlIGtleSBldmVudAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAxZGRh
YjUzZTA4ZTBkNTU3OWY1ZmQ3ZTc3NjlmOWRlMjY0MTBkZGUzLi5mNGFiNjBjOTRmMzgwZjU5OGM2
MjZjN2MzZjBjYTQzNzc1ZjdmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTUyLDcgKzE1
Miw4IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50VGV4dFpvb21GYWN0b3IoRnJhbWUqIGZy
YW1lKQogfQogCiBGcmFtZTo6RnJhbWUoUGFnZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50JiBmcmFtZUxvYWRlckNsaWVudCkKLSAg
ICA6IG1fcGFnZSgmcGFnZSkKKyAgICA6IG1fbWFpbkZyYW1lKG93bmVyRWxlbWVudCA/IHBhZ2Uu
bWFpbkZyYW1lKCkgOiBzdGF0aWNfY2FzdDxNYWluRnJhbWUmPigqdGhpcykpCisgICAgLCBtX3Bh
Z2UoJnBhZ2UpCiAgICAgLCBtX3NldHRpbmdzKCZwYWdlLnNldHRpbmdzKCkpCiAgICAgLCBtX3Ry
ZWVOb2RlKHRoaXMsIHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVtZW50KSkKICAgICAs
IG1fbG9hZGVyKCp0aGlzLCBmcmFtZUxvYWRlckNsaWVudCkKQEAgLTE4OCw2ICsxODksNyBAQCBG
cmFtZTo6RnJhbWUoUGFnZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIEZyYW1lTG9hZGVyQ2xpZW50JgogICAgICAgICBzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJs
ZWQoc2V0dGluZ3MoKS50aWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoKSk7CiAjZW5kaWYKICAgICB9
IGVsc2UgeworICAgICAgICBtX21haW5GcmFtZS5zZWxmT25seVJlZigpOwogICAgICAgICBwYWdl
LmluY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKICAgICAgICAgb3duZXJFbGVtZW50LT5zZXRDb250
ZW50RnJhbWUodGhpcyk7CiAgICAgfQpAQCAtMjI1LDYgKzIyNyw5IEBAIEZyYW1lOjp+RnJhbWUo
KQogICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIHN0b3Ag
PSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJz
LmJlZ2luKCk7IGl0ICE9IHN0b3A7ICsraXQpCiAgICAgICAgICgqaXQpLT5mcmFtZURlc3Ryb3ll
ZCgpOworCisgICAgaWYgKCFpc01haW5GcmFtZSgpKQorICAgICAgICBtX21haW5GcmFtZS5zZWxm
T25seURlcmVmKCk7CiB9CiAKIHZvaWQgRnJhbWU6OmFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTY0NSw3ICs2NTAsNyBAQCB2b2lk
IEZyYW1lOjpkaXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICAgICAgaWYgKG1fcGFnZSkKICAg
ICAgICAgICAgIG1fcGFnZS0+ZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpOwogICAgIH0KLSAgICBt
X293bmVyRWxlbWVudCA9IDA7CisgICAgbV9vd25lckVsZW1lbnQgPSBudWxscHRyOwogfQogCiBT
dHJpbmcgRnJhbWU6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5n
JiBzdHIpIGNvbnN0CkBAIC03MTMsNyArNzE4LDcgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhj
b25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IK
ICAgICBBU1NFUlQodGhpcyk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKLSAgICBib29sIGlzTWFp
bkZyYW1lID0gbV9wYWdlLT5mcmFtZUlzTWFpbkZyYW1lKHRoaXMpOworICAgIGJvb2wgaXNNYWlu
RnJhbWUgPSB0aGlzLT5pc01haW5GcmFtZSgpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIHZp
ZXcoKSkKICAgICAgICAgdmlldygpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKQEAgLTg4Niw3
ICs4OTEsNyBAQCB2b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsb2F0IHBh
Z2Vab29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogICAgICAgICAgICAgdmlldy0+bGF5
b3V0KCk7CiAgICAgfQogCi0gICAgaWYgKHBhZ2UtPmZyYW1lSXNNYWluRnJhbWUodGhpcykpCisg
ICAgaWYgKGlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JG
dWxsU3R5bGVSZWNhbGMocGFnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAyYmExYTlhZmEy
MTI4Njc4ZTZhNjA5MzY5ZTA0ZDMzZGMyYzUyOTQ3Li41YWI3OTViYmY0ZjQ1MzI2YjBiZDM2MzY2
NGVjZTcwY2IxNjc4MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02NCw2ICs2NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xh
c3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBN
YWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBSYW5nZTsKICAgICBjbGFzcyBS
ZWd1bGFyRXhwcmVzc2lvbjsKQEAgLTEwOSw2ICsxMTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgZGV0YWNoRnJvbVBhZ2UoKTsKICAgICAgICAgdm9pZCBkaXNjb25uZWN0
T3duZXJFbGVtZW50KCk7CiAKKyAgICAgICAgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSBjb25zdDsK
KyAgICAgICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OworCiAgICAgICAgIFBhZ2UqIHBhZ2Uo
KSBjb25zdDsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoKSBj
b25zdDsKIApAQCAtMjA1LDYgKzIwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+IG1fZGVzdHJ1Y3Rpb25PYnNlcnZl
cnM7CiAKKyAgICAgICAgTWFpbkZyYW1lJiBtX21haW5GcmFtZTsKICAgICAgICAgUGFnZSogbV9w
YWdlOwogICAgICAgICBjb25zdCBSZWZQdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgICAg
IG11dGFibGUgRnJhbWVUcmVlIG1fdHJlZU5vZGU7CkBAIC0zMzYsNiArMzQxLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuICptX2V2ZW50SGFuZGxlcjsKICAgICB9CiAK
KyAgICBpbmxpbmUgTWFpbkZyYW1lJiBGcmFtZTo6bWFpbkZyYW1lKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21haW5GcmFtZTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCA2
NDMwMjI5N2Q5Yzk1MWNjMGQ5NjBhMWYxMjg4ODEwNjkwOGQyZDNhLi5kYmU4OGEzNTgyZWQ2YmY4
MWIxOTRhM2FmYzQ3ZDVhMjE0ZGRkYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBA
IC0yNzcsMzcgKzI3NywzNSBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKICAgICBpZiAobmFtZSA9PSAiX3BhcmVudCIpCiAgICAgICAgIHJl
dHVybiBwYXJlbnQoKSA/IHBhcmVudCgpIDogbV90aGlzRnJhbWU7CiAKLSAgICAvLyBTaW5jZSAi
X2JsYW5rIiBzaG91bGQgbmV2ZXIgYmUgYW55IGZyYW1lJ3MgbmFtZSwgdGhlIGZvbGxvd2luZyBq
dXN0IGFtb3VudHMgdG8gYW4gb3B0aW1pemF0aW9uLgorICAgIC8vIFNpbmNlICJfYmxhbmsiIHNo
b3VsZCBuZXZlciBiZSBhbnkgZnJhbWUncyBuYW1lLCB0aGUgZm9sbG93aW5nIGlzIG9ubHkgYW4g
b3B0aW1pemF0aW9uLgogICAgIGlmIChuYW1lID09ICJfYmxhbmsiKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIFNlYXJjaCBzdWJ0cmVlIHN0YXJ0aW5nIHdpdGggdGhpcyBmcmFtZSBmaXJz
dC4KLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX3RoaXNGcmFtZSkpCisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX3RoaXNGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQobV90aGlzRnJhbWUpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLnVuaXF1ZU5h
bWUoKSA9PSBuYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgIH0KIAotICAgIC8v
IFNlYXJjaCB0aGUgZW50aXJlIHRyZWUgZm9yIHRoaXMgcGFnZSBuZXh0LgotICAgIFBhZ2UqIHBh
Z2UgPSBtX3RoaXNGcmFtZS0+cGFnZSgpOwotCi0gICAgLy8gVGhlIGZyYW1lIGNvdWxkIGhhdmUg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLCBzbyBjaGVjayBpdC4KLSAgICBpZiAoIXBhZ2Up
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisg
ICAgLy8gVGhlbiB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX3RoaXNGcmFtZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
ID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgfQogCiAgICAgLy8gU2Vh
cmNoIHRoZSBlbnRpcmUgdHJlZSBvZiBlYWNoIG9mIHRoZSBvdGhlciBwYWdlcyBpbiB0aGlzIG5h
bWVzcGFjZS4KICAgICAvLyBGSVhNRTogSXMgcmFuZG9tIG9yZGVyIE9LPworICAgIFBhZ2UqIHBh
Z2UgPSBtX3RoaXNGcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
IDA7CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZS0+Z3JvdXAoKS5wYWdl
cygpOwotICAgIEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQo
KTsKLSAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byBpdCA9IHBhZ2VzLmJlZ2lu
KCksIGVuZCA9IHBhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUGFnZSog
b3RoZXJQYWdlID0gKml0OwotICAgICAgICBpZiAob3RoZXJQYWdlICE9IHBhZ2UpIHsKLSAgICAg
ICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm90aGVyUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFtZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAob3RoZXJQYWdl
ID09IHBhZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT50cmVlKCkudW5pcXVl
TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0zNjcsNyArMzY1LDcgQEAgRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VO
ZXh0V2l0aFdyYXAoYm9vbCB3cmFwKSBjb25zdAogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAg
ICAgaWYgKHdyYXApCi0gICAgICAgIHJldHVybiAmbV90aGlzRnJhbWUtPnBhZ2UoKS0+bWFpbkZy
YW1lKCk7CisgICAgICAgIHJldHVybiAmbV90aGlzRnJhbWUtPm1haW5GcmFtZSgpOwogCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzlkZTE3NTViMzI3
MjM2NGQwZGNhNTJhMDRmMTY1NTBlMTc5MzRjNi4uYzc0N2IwZTNlZDFkMDc4MmRlMmFhMGNkZjFk
MDZiMzQ5YTlhNTIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lJiBmcmFtZSkKIHsKICAgICBpbml0KCk7
CiAKLSAgICBpZiAoaXNNYWluRnJhbWVWaWV3KCkpIHsKKyAgICBpZiAoZnJhbWUuaXNNYWluRnJh
bWUoKSkgewogICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2V0VmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5KFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkKTsKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNl
dEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkKTsKICAg
ICB9CkBAIC00MTAsMTEgKzQxMCw2IEBAIHZvaWQgRnJhbWVWaWV3OjpjbGVhcigpCiAgICAgc2V0
U2Nyb2xsYmFyc1N1cHByZXNzZWQodHJ1ZSk7CiB9CiAKLWJvb2wgRnJhbWVWaWV3Ojppc01haW5G
cmFtZVZpZXcoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpLnBhZ2UoKSAmJiBmcmFtZSgp
LnBhZ2UoKS0+ZnJhbWVJc01haW5GcmFtZSgmZnJhbWUoKSk7Ci19Ci0KIGJvb2wgRnJhbWVWaWV3
OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ZpcnN0TGF5b3V0OwpA
QCAtNDQ4LDcgKzQ0Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYgbmV3UmVjdCkKICAgICAvLyBBdXRvc2l6ZWQgZm9udCBzaXplcyBkZXBlbmQgb24gdGhl
IHdpZHRoIG9mIHRoZSB2aWV3aW5nIGFyZWEuCiAgICAgaWYgKG5ld1JlY3Qud2lkdGgoKSAhPSBv
bGRSZWN0LndpZHRoKCkpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwot
ICAgICAgICBpZiAoaXNNYWluRnJhbWVWaWV3KCkgJiYgcGFnZS0+c2V0dGluZ3MoKS50ZXh0QXV0
b3NpemluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpICYm
IHBhZ2UtPnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICAgICAgICAgIGZyYW1lKCkuZG9j
dW1lbnQoKS0+dGV4dEF1dG9zaXplcigpLT5yZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CiAgICAg
ICAgIH0KQEAgLTUzOCw3ICs1MzMsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQ2FuSGF2ZVNj
cm9sbGJhcnMoKQogCiBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gRnJhbWVWaWV3OjpjcmVhdGVTY3Jv
bGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKCFmcmFt
ZSgpLnNldHRpbmdzKCkuYWxsb3dDdXN0b21TY3JvbGxiYXJJbk1haW5GcmFtZSgpICYmIGlzTWFp
bkZyYW1lVmlldygpKQorICAgIGlmICghZnJhbWUoKS5zZXR0aW5ncygpLmFsbG93Q3VzdG9tU2Ny
b2xsYmFySW5NYWluRnJhbWUoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIob3JpZW50YXRpb24pOwogCiAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxiYXIgZHluYW1pY2FsbHkgYXMgZG9j
dW1lbnRzIGNoYW5nZSAob3IgYXMgZG9jIGVsZW1lbnRzIGFuZCBib2RpZXMgZ2V0IGRpc2NvdmVy
ZWQgdGhhdCBoYXZlIGN1c3RvbSBzdHlsZXMpLgpAQCAtNjE0LDcgKzYwOSw3IEBAIHZvaWQgRnJh
bWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJh
ck1vZGUmIGhNb2RlLCBTCiAgICAgLy8gdGhlcmUgaXMgYSBmcmFtZVNjYWxlRmFjdG9yIHRoYXQg
aXMgZ3JlYXRlciB0aGFuIG9uZSBvbiB0aGUgbWFpbiBmcmFtZS4gQWxzbyBkaXNyZWdhcmQgaGlk
ZGVuIGlmIHRoZXJlIGlzIGEKICAgICAvLyBoZWFkZXIgb3IgZm9vdGVyLgogCi0gICAgYm9vbCBv
dmVycmlkZUhpZGRlbiA9IGlzTWFpbkZyYW1lVmlldygpICYmICgoZnJhbWUoKS5mcmFtZVNjYWxl
RmFjdG9yKCkgPiAxKSB8fCBoZWFkZXJIZWlnaHQoKSB8fCBmb290ZXJIZWlnaHQoKSk7CisgICAg
Ym9vbCBvdmVycmlkZUhpZGRlbiA9IGZyYW1lKCkuaXNNYWluRnJhbWUoKSAmJiAoKGZyYW1lKCku
ZnJhbWVTY2FsZUZhY3RvcigpID4gMSkgfHwgaGVhZGVySGVpZ2h0KCkgfHwgZm9vdGVySGVpZ2h0
KCkpOwogCiAgICAgRU92ZXJmbG93IG92ZXJmbG93WCA9IG8tPnN0eWxlKCktPm92ZXJmbG93WCgp
OwogICAgIEVPdmVyZmxvdyBvdmVyZmxvd1kgPSBvLT5zdHlsZSgpLT5vdmVyZmxvd1koKTsKQEAg
LTkyMCw3ICs5MTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5
bmNocm9uaXphdGlvbigpCiB2b2lkIEZyYW1lVmlldzo6c2V0SGVhZGVySGVpZ2h0KGludCBoZWFk
ZXJIZWlnaHQpCiB7CiAgICAgaWYgKGZyYW1lKCkucGFnZSgpKQotICAgICAgICBBU1NFUlQoaXNN
YWluRnJhbWVWaWV3KCkpOworICAgICAgICBBU1NFUlQoZnJhbWUoKS5pc01haW5GcmFtZSgpKTsK
ICAgICBtX2hlYWRlckhlaWdodCA9IGhlYWRlckhlaWdodDsKIAogICAgIGlmIChSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpKQpAQCAtOTMwLDcgKzkyNSw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpzZXRIZWFkZXJIZWlnaHQoaW50IGhlYWRlckhlaWdodCkKIHZvaWQgRnJh
bWVWaWV3OjpzZXRGb290ZXJIZWlnaHQoaW50IGZvb3RlckhlaWdodCkKIHsKICAgICBpZiAoZnJh
bWUoKS5wYWdlKCkpCi0gICAgICAgIEFTU0VSVChpc01haW5GcmFtZVZpZXcoKSk7CisgICAgICAg
IEFTU0VSVChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpOwogICAgIG1fZm9vdGVySGVpZ2h0ID0gZm9v
dGVySGVpZ2h0OwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5k
ZXJWaWV3KCkpCkBAIC0xNTk2LDcgKzE1OTEsNyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6Om1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgbWluaW11bVBvc2l0aW9u
KFNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGlmIChpc01haW5G
cmFtZVZpZXcoKSAmJiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9PSBQaW5Ub0JvdHRvbSkKKyAg
ICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpICYmIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID09
IFBpblRvQm90dG9tKQogICAgICAgICBtaW5pbXVtUG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCkpOwogICAgIAogICAgIHJldHVybiBtaW5pbXVtUG9zaXRpb247CkBAIC0x
NjA4LDcgKzE2MDMsNyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlv
bigpIGNvbnN0CiAKICAgICBtYXhpbXVtT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKIAot
ICAgIGlmIChpc01haW5GcmFtZVZpZXcoKSAmJiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9PSBQ
aW5Ub1RvcCkKKyAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpICYmIG1fc2Nyb2xsUGlubmlu
Z0JlaGF2aW9yID09IFBpblRvVG9wKQogICAgICAgICBtYXhpbXVtT2Zmc2V0LnNldFkobWluaW11
bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKICAgICAKICAgICByZXR1cm4gbWF4aW11bU9mZnNldDsK
QEAgLTE5OTQsMTEgKzE5ODksMTIgQEAgdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRGaXhlZEVsZW1l
bnRzQWZ0ZXJTY3JvbGxpbmcoKQogYm9vbCBGcmFtZVZpZXc6OnNob3VsZFVwZGF0ZUZpeGVkRWxl
bWVudHNBZnRlclNjcm9sbGluZygpCiB7CiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykK
KyAgICAvLyBJZiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBpcyB1cGRhdGluZyB0aGUgZml4ZWQgZWxl
bWVudHMsIHRoZW4gdGhlIEZyYW1lVmlldyBzaG91bGQgbm90IHVwZGF0ZSB0aGVtIGFzIHdlbGwu
CisKICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIElmIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGlzIHVw
ZGF0aW5nIHRoZSBmaXhlZCBlbGVtZW50cywgdGhlbiB0aGUgRnJhbWVWaWV3IHNob3VsZCBub3Qg
dXBkYXRlIHRoZW0gYXMgd2VsbC4KICAgICBpZiAoJnBhZ2UtPm1haW5GcmFtZSgpICE9ICZmcmFt
ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMjE4Niw5ICsyMTgyLDggQEAgdm9pZCBG
cmFtZVZpZXc6OmFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkKIAogdm9pZCBGcmFtZVZpZXc6OmJl
Z2luRGVmZXJyZWRSZXBhaW50cygpCiB7Ci0gICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgp
OwotICAgIGlmICgmcGFnZS0+bWFpbkZyYW1lKCkgIT0gJmZyYW1lKCkpIHsKLSAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lKCkudmlldygpLT5iZWdpbkRlZmVycmVkUmVwYWludHMoKTsKKyAgICBpZiAo
IWZyYW1lKCkuaXNNYWluRnJhbWUoKSkgeworICAgICAgICBmcmFtZSgpLm1haW5GcmFtZSgpLnZp
ZXcoKS0+YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIxOTcsOSArMjE5Miw4IEBAIHZvaWQgRnJhbWVWaWV3OjpiZWdpbkRlZmVycmVkUmVwYWlu
dHMoKQogCiB2b2lkIEZyYW1lVmlldzo6ZW5kRGVmZXJyZWRSZXBhaW50cygpCiB7Ci0gICAgUGFn
ZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwotICAgIGlmICgmcGFnZS0+bWFpbkZyYW1lKCkgIT0g
JmZyYW1lKCkpIHsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5lbmREZWZlcnJl
ZFJlcGFpbnRzKCk7CisgICAgaWYgKCFmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAg
ZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCktPmVuZERlZmVycmVkUmVwYWludHMoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjc0Miw3ICsyNzM2LDcgQEAgdm9pZCBGcmFtZVZpZXc6
OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAgICAgZnJhbWUoKS5sb2FkZXIoKS5k
aWRGaXJzdExheW91dCgpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3RlZE1pbGVzdG9uZXMgJiBE
aWRGaXJzdExheW91dCkKICAgICAgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlk
Rmlyc3RMYXlvdXQ7Ci0gICAgICAgICAgICBpZiAoaXNNYWluRnJhbWVWaWV3KCkpCisgICAgICAg
ICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPnN0
YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKICAgICAgICAgfQogICAgICAg
ICB1cGRhdGVJc1Zpc3VhbGx5Tm9uRW1wdHkoKTsKQEAgLTI3NTUsNyArMjc0OSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChtaWxlc3RvbmVzQWNoaWV2ZWQgJiYgcGFnZSAmJiBwYWdlLT5mcmFtZUlzTWFpbkZy
YW1lKCZmcmFtZSgpKSkKKyAgICBpZiAobWlsZXN0b25lc0FjaGlldmVkICYmIGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKICAgICAgICAgZnJhbWUoKS5sb2FkZXIoKS5kaWRMYXlvdXQobWlsZXN0b25l
c0FjaGlldmVkKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQpAQCAtMjgxOCw3ICsy
ODEyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKCkKICAgICBp
ZiAoIXNob3VsZFNlbmRSZXNpemVFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBp
c01haW5GcmFtZSA9IGlzTWFpbkZyYW1lVmlldygpOworICAgIGJvb2wgaXNNYWluRnJhbWUgPSBm
cmFtZSgpLmlzTWFpbkZyYW1lKCk7CiAgICAgYm9vbCBjYW5TZW5kUmVzaXplRXZlbnRTeW5jaHJv
bm91c2x5ID0gaXNNYWluRnJhbWUgJiYgIWlzSW5MYXlvdXQoKTsKIAogICAgIC8vIElmIHdlIHJl
c2l6ZWQgZHVyaW5nIGxheW91dCwgcXVldWUgdXAgYSByZXNpemUgZXZlbnQgZm9yIGxhdGVyLCBv
dGhlcndpc2UgZmlyZSBpdCByaWdodCBhd2F5LgpAQCAtMjk5NCw3ICsyOTg4LDcgQEAgY29uc3Qg
UGFnaW5hdGlvbiYgRnJhbWVWaWV3OjpwYWdpbmF0aW9uKCkgY29uc3QKICAgICBpZiAobV9wYWdp
bmF0aW9uICE9IFBhZ2luYXRpb24oKSkKICAgICAgICAgcmV0dXJuIG1fcGFnaW5hdGlvbjsKIAot
ICAgIGlmIChpc01haW5GcmFtZVZpZXcoKSkKKyAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgp
KQogICAgICAgICByZXR1cm4gZnJhbWUoKS5wYWdlKCktPnBhZ2luYXRpb24oKTsKIAogICAgIHJl
dHVybiBtX3BhZ2luYXRpb247CkBAIC0zMDgzLDcgKzMwNzcsNyBAQCBJbnRSZWN0IEZyYW1lVmll
dzo6d2luZG93UmVzaXplclJlY3QoKSBjb25zdAogCiBmbG9hdCBGcmFtZVZpZXc6OnZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIGlmICghaXNNYWluRnJhbWVWaWV3KCkg
fHwgIWZyYW1lKCkuc2V0dGluZ3MoKS5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigp
KQorICAgIGlmICghZnJhbWUoKS5pc01haW5GcmFtZSgpIHx8ICFmcmFtZSgpLnNldHRpbmdzKCku
YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAgICAgICAgcmV0dXJuIDE7CiAK
ICAgICByZXR1cm4gZnJhbWUoKS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwpAQCAtMzA5MSw3
ICszMDg1LDcgQEAgZmxvYXQgRnJhbWVWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkg
Y29uc3QKIAogdm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25z
dCBJbnRSZWN0JiBzY3JvbGxlclRodW1iKQogewotICAgIGlmICghaXNNYWluRnJhbWVWaWV3KCkp
CisgICAgaWYgKCFmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ub3RpZnlTY3JvbGxlclRodW1iSXNW
aXNpYmxlSW5SZWN0KHNjcm9sbGVyVGh1bWIpOwpAQCAtMzE2Myw3ICszMTU3LDcgQEAgYm9vbCBG
cmFtZVZpZXc6OnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QKIAogdm9pZCBG
cmFtZVZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VV
cGRhdGUpCiB7Ci0gICAgaWYgKCFpc01haW5GcmFtZVZpZXcoKSkKKyAgICBpZiAoIWZyYW1lKCku
aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UobmV3U3R5
bGUpOwpAQCAtMzI2OSw3ICszMjYzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmUKICAgICB9
CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKLSAgICAgICAgaWYgKGlzTWFpbkZyYW1lVmll
dygpKQorICAgICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzI4MCw3ICszMjc0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmUKIAogdm9pZCBG
cmFtZVZpZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21T
Y3JvbGxiYXIoKSAmJiBpc01haW5GcmFtZVZpZXcoKSkgeworICAgIGlmIChiYXItPmlzQ3VzdG9t
U2Nyb2xsYmFyKCkgJiYgZnJhbWUoKS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIEludFJlY3Qg
dG9GaWxsID0gYmFyLT5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9GaWxsLmludGVyc2VjdChyZWN0
KTsKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9y
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtMzYyMSw3ICszNjE1LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGhvcmkKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNNYWluRnJhbWVWaWV3KCkgJiYgZnJhbWUoKS5w
YWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnBhaW50Q3VzdG9tT3ZlcmhhbmdBcmVhKGNvbnRleHQs
IGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBkaXJ0eVJlY3Qp
KQorICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkgJiYgZnJhbWUoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLnBhaW50Q3VzdG9tT3ZlcmhhbmdBcmVhKGNvbnRleHQsIGhvcml6b250YWxP
dmVyaGFuZ0FyZWEsIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBkaXJ0eVJlY3QpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMoY29udGV4dCwgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGRpcnR5UmVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBjZmM5ZjM2N2UzYjY1OWE5NjBjOWE5NTcxODE5NWVk
YzhkMWM1OTUyLi44NmM1OGNkZjk3ZjIzNTM1MzA5MjcwMzg4YWIyYjA3ZDlkYTYxZjUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQzNCw4ICs0MzQsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRBZGRXaWRnZXRUb1JlbmRlclRyZWUoV2lkZ2V0Jik7CiAgICAgdm9pZCB3aWxsUmVtb3Zl
V2lkZ2V0RnJvbVJlbmRlclRyZWUoV2lkZ2V0Jik7CiAKLSAgICBib29sIGlzTWFpbkZyYW1lVmll
dygpIGNvbnN0OwotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRz
RmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RU
b1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuY3BwCmluZGV4IDZhMzdlZWVhZWM5MjUzZGMw
N2Y3NDU0MzlhZGM5ZGZhODE4OTkxMjMuLjA1NGEwNjI1YzRhMTc3N2FjM2FmMzI1ZWEwODQ2MzNm
OWE0Nzg0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTWFpbkZyYW1lOjpNYWluRnJhbWUoUGFnZSYg
cGFnZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICA6IEZyYW1lKHBhZ2UsIG51bGxw
dHIsIGNsaWVudCkKKyAgICAsIG1fc2VsZk9ubHlSZWZDb3VudCgwKQogewogfQogCkBAIC0zOSw0
ICs0MCwzMCBAQCBSZWZQdHI8TWFpbkZyYW1lPiBNYWluRnJhbWU6OmNyZWF0ZShQYWdlJiBwYWdl
LCBGcmFtZUxvYWRlckNsaWVudCYgY2xpZW50KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWFp
bkZyYW1lKHBhZ2UsIGNsaWVudCkpOwogfQogCit2b2lkIE1haW5GcmFtZTo6c2VsZk9ubHlSZWYo
KQoreworICAgIGlmIChtX3NlbGZPbmx5UmVmQ291bnQrKykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmVmKCk7Cit9CisKK3ZvaWQgTWFpbkZyYW1lOjpzZWxmT25seURlcmVmKCkKK3sKKyAgICBB
U1NFUlQobV9zZWxmT25seVJlZkNvdW50KTsKKyAgICBpZiAoLS1tX3NlbGZPbmx5UmVmQ291bnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoYXNPbmVSZWYoKSkKKyAgICAgICAgZHJvcENo
aWxkcmVuKCk7CisKKyAgICBkZXJlZigpOworfQorCit2b2lkIE1haW5GcmFtZTo6ZHJvcENoaWxk
cmVuKCkKK3sKKyAgICB3aGlsZSAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLmZpcnN0Q2hpbGQoKSkK
KyAgICAgICAgdHJlZSgpLnJlbW92ZUNoaWxkKGNoaWxkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFp
bkZyYW1lLmgKaW5kZXggZmUyYmYyZjhhMDk3MTNhOGQyODU1YjQ3MWNhZDlkZTM5NTVkNDZlYi4u
OTk4ZWViN2U3YzI3ZDdhMWI1YjVjY2MwOWNiZDU3YTE3ZDAyMmI1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01h
aW5GcmFtZS5oCkBAIC0zNSwxMCArMzUsMjIgQEAgY2xhc3MgTWFpbkZyYW1lIEZJTkFMIDogcHVi
bGljIEZyYW1lIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE1haW5GcmFtZT4gY3JlYXRl
KFBhZ2UmLCBGcmFtZUxvYWRlckNsaWVudCYpOwogCisgICAgdm9pZCBzZWxmT25seVJlZigpOwor
ICAgIHZvaWQgc2VsZk9ubHlEZXJlZigpOworCiBwcml2YXRlOgogICAgIE1haW5GcmFtZShQYWdl
JiwgRnJhbWVMb2FkZXJDbGllbnQmKTsKKworICAgIHZvaWQgZHJvcENoaWxkcmVuKCk7CisKKyAg
ICB1bnNpZ25lZCBtX3NlbGZPbmx5UmVmQ291bnQ7CiB9OwogCitpbmxpbmUgYm9vbCBGcmFtZTo6
aXNNYWluRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09ICZtX21haW5GcmFtZTsK
K30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGJlNjU1OTU0ZmMyNTFlNGE1
NjBjOWVmMmI4OGVjMzk4N2ZjMTEzMGUuLjc4OGIyZDg2NDFhZDQ4Nzk5YmNkZjliNWJkNmQxNGI4
MzhmMThhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjM5LDExICsyMzksNiBAQCBQYWdlOjp+
UGFnZSgpCiAgICAgbV9wYWdlVGhyb3R0bGVyLmNsZWFyKCk7CiB9CiAKLWJvb2wgUGFnZTo6ZnJh
bWVJc01haW5GcmFtZShjb25zdCBGcmFtZSogZnJhbWUpCi17Ci0gICAgcmV0dXJuIGZyYW1lID09
IG1fbWFpbkZyYW1lLmdldCgpOwotfQotCiBBcmVuYVNpemUgUGFnZTo6cmVuZGVyVHJlZVNpemUo
KSBjb25zdAogewogICAgIEFyZW5hU2l6ZSB0b3RhbCgwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
YjAwMGRmNDkxOWJiOTE5NmU0NmZjNDdjMjE4ZjY2M2VhZTRlN2U0NC4uNzAwOTRmNmZkYzJmYmNl
MzU3NmM4NWQ4OTEzODM5ODZkMzFmODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE2Miw5ICsxNjIs
OCBAQCBwdWJsaWM6CiAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2VkaXRvckNsaWVudDsgfQogICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAotICAgIE1haW5GcmFtZSYgbWFpbkZy
YW1lKCkgeyByZXR1cm4gKm1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgTWFpbkZyYW1lJiBtYWlu
RnJhbWUoKSBjb25zdCB7IHJldHVybiAqbV9tYWluRnJhbWU7IH0KLSAgICBib29sIGZyYW1lSXNN
YWluRnJhbWUoY29uc3QgRnJhbWUqKTsKKyAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgQVNT
RVJUKG1fbWFpbkZyYW1lKTsgcmV0dXJuICptX21haW5GcmFtZTsgfQorICAgIGNvbnN0IE1haW5G
cmFtZSYgbWFpbkZyYW1lKCkgY29uc3QgeyBBU1NFUlQobV9tYWluRnJhbWUpOyByZXR1cm4gKm1f
bWFpbkZyYW1lOyB9CiAKICAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRPcGVuZWRCeURPTSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGFhMTE4ZjljNWExZTEzZjBmZjg1MDlm
NTg2YzM4MjQ2OGI3MTU2OWMuLjNkNmExNzU3ODZlY2YxZjhiNGFjODQ0YmMxODEwNGNlMTE2ZGMw
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1l
VmlldwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgLy8gV2UgY3VycmVudGx5IG9ubHkgaGFu
ZGxlIHRoZSBtYWluIGZyYW1lLgotICAgIGlmICgmZnJhbWVWaWV3LT5mcmFtZSgpICE9ICZtX3Bh
Z2UtPm1haW5GcmFtZSgpKQorICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpLmlzTWFpbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFdlIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnQgY29tcG9zaXRlZCBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2OGI5YjkyOTdmZjdmYzQwYjIyMGYzNjFiNzZlN2Zj
MmNkOGI3ZjhmLi42MDYzYWY0ZTYyMWE2OWI2ZDc2NmZmODdhMzM5YmViZTRlZmU3YmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCisj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNs
dWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKQEAgLTEy
MSw3ICsxMjIsNyBAQCBSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5k
ZXJMYXllciogbGF5ZXIpCiAgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdl
KCk7CiAKICAgICBpZiAobGF5ZXItPmlzUm9vdExheWVyKCkgJiYgcGFnZSkgewotICAgICAgICBp
ZiAocGFnZS0+ZnJhbWVJc01haW5GcmFtZSgmcmVuZGVyZXIoKS5mcmFtZSgpKSkKKyAgICAgICAg
aWYgKHJlbmRlcmVyKCkuZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgbV9pc01h
aW5GcmFtZVJlbmRlclZpZXdMYXllciA9IHRydWU7CiAKICAgICAgICAgbV91c2luZ1RpbGVkQ2Fj
aGVMYXllciA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNob3VsZFVzZVRpbGVkQmFja2luZ0Zv
ckZyYW1lVmlldyhyZW5kZXJlcigpLmZyYW1lKCkudmlldygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggZGJjYmE1NzNmNTRjYjcwMmY5YzIzMDVh
YzczNDdmNDdjNTc1NDNmNy4uNmZjMGFjZDEzOWFiNzM4Mjk2OGJiOTk2ZTU3YTliMDY3MTY5MDFj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklucHV0SGFuZGxlci5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiUE5HSW1hZ2VFbmNvZGVyLmgiCkBAIC01NCw5ICs1NSw3IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTY29wZVBvaW50ZXIuaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25IYW5kbGVyLmgiCi0jaWYgRU5BQkxFKEJMQUNLQkVSUllfQ1JFREVOVElBTF9QRVJTSVNU
KQogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jZW5kaWYKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50SGFuZGxl
ci5oIgpAQCAtOTcxLDcgKzk3MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogZG9jTG9hCiAKICAgICAv
LyBUYXJnZXRUeXBlIGZvciBzdWJyZXNvdXJjZSBsb2FkcyBzaG91bGQgaGF2ZSBiZWVuIHNldCBp
biBDYWNoZWRSZXNvdXJjZTo6bG9hZCgpLgogICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQpCi0g
ICAgICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShkb2NMb2FkZXItPmZyYW1lTG9hZGVyKCktPmlz
TG9hZGluZ01haW5GcmFtZSgpID8gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc01haW5GcmFtZSA6
IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJmcmFtZSk7CisgICAgICAgIHJlcXVlc3Quc2V0
VGFyZ2V0VHlwZShkb2NMb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkuaXNNYWluRnJhbWUo
KSA/IFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNNYWluRnJhbWUgOiBSZXNvdXJjZVJlcXVlc3Q6
OlRhcmdldElzU3ViZnJhbWUpOwogCiAgICAgLy8gQW55IHByb2Nlc3Npbmcgd2hpY2ggaXMgZG9u
ZSBmb3IgYWxsIGxvYWRzIChib3RoIG1haW4gYW5kIHN1YnJlc291cmNlKSBzaG91bGQgZ28gaGVy
ZS4KICAgICBOZXR3b3JrUmVxdWVzdCBwbGF0Zm9ybVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAK
aW5kZXggNzc3YjIzMDEyNDM0MTQ2NjFkN2Y5ODRmYjk0Yjc5ZjU1ZTJmNmE3ZC4uZTUxMjU4OTFj
MTk5MDM0OGEyOWI1ZDdjOTg5OTA1MzM5YzY3NmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
VFBTdGF0dXNDb2Rlcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgpAQCAtMTgzLDcgKzE4NCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAgYm9vbCBpc01haW5GcmFtZVJlcXVlc3QgPSBmYWxz
ZTsKICAgICBpZiAobG9hZGVyKSB7CiAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0gICAgICAgICAgICBpc01haW5GcmFt
ZVJlcXVlc3QgPSAobG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCkgJiYgZnJhbWVMb2FkZXItPmlzTG9hZGluZ01haW5GcmFtZSgpKTsKKyAgICAgICAgICAg
IGlzTWFpbkZyYW1lUmVxdWVzdCA9IChsb2FkZXIgPT0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZUxvYWRlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKTsK
ICAgICB9CiAKICAgICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyAwLCBm
aXJzdFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIGlkZW50aWZpZXIsIG1fZnJhbWUs
IGlzTWFpbkZyYW1lUmVxdWVzdCB9OwpAQCAtMjM2LDcgKzIzNyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpCiAgICAgYm9vbCBpc01haW5GcmFtZVJlcXVlc3QgPSBmYWxzZTsKICAgICBpZiAo
bG9hZGVyKSB7CiAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBs
b2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0gICAgICAgICAgICBpc01haW5GcmFtZVJlcXVlc3QgPSAo
bG9hZGVyID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgJiYgZnJh
bWVMb2FkZXItPmlzTG9hZGluZ01haW5GcmFtZSgpKTsKKyAgICAgICAgICAgIGlzTWFpbkZyYW1l
UmVxdWVzdCA9IChsb2FkZXIgPT0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKSAmJiBmcmFtZUxvYWRlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKTsKICAgICB9CiAKICAg
ICBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwuZGF0YSgpLCBmaXJz
dFBhcnR5LmRhdGEoKSwgaHR0cE1ldGhvZC5kYXRhKCksIGlkZW50aWZpZXIsIG1fZnJhbWUsIGlz
TWFpbkZyYW1lUmVxdWVzdCB9OwpAQCAtOTkyLDcgKzk5Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0g
ICAgY29uc3QgYm9vbCBpc01haW5GcmFtZVJlcXVlc3QgPSBmcmFtZUxvYWRlciAmJiAobG9hZGVy
ID09IGZyYW1lTG9hZGVyLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpICYmIGZyYW1lTG9h
ZGVyLT5pc0xvYWRpbmdNYWluRnJhbWUoKTsKKyAgICBjb25zdCBib29sIGlzTWFpbkZyYW1lUmVx
dWVzdCA9IGZyYW1lTG9hZGVyICYmIChsb2FkZXIgPT0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoKSkgJiYgZnJhbWVMb2FkZXItPmZyYW1lKCkuaXNNYWluRnJhbWUoKTsK
ICAgICBjb25zdCBDU3RyaW5nJiB1cmxGb3JIaXN0b3J5ID0gbG9hZGVyLT51cmxGb3JIaXN0b3J5
KCkuc3RyaW5nKCkudXRmOCgpOwogICAgIGNvbnN0IENTdHJpbmcmIHRpdGxlID0gbG9hZGVyLT50
aXRsZSgpLnN0cmluZygpLnV0ZjgoKTsKICAgICBjb25zdCBDU3RyaW5nJiBmaXJzdFBhcnR5ID0g
bG9hZGVyLT5yZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKS51dGY4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKaW5kZXggMWIzYTUyNDI5NzcxNjQ5YzgxYjQyOGMxMzdlNTIzMzA4
MmIwNjY2Mi4uOTE5YWZhNGNiYTgzNzc0ZjcxZTg2YTM2NjI3ZjYyODU5MDhhOWU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJD
RShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNFLCAidXJpIiwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwKSk7CiAKICAgICBpZiAobG9hZGVyID09IGxv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpCi0gICAgICAg
ICYmIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpIHsKKyAgICAg
ICAgJiYgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKICAg
ICAgICAgd2Via2l0X3dlYl92aWV3X2FkZF9tYWluX3Jlc291cmNlKGdldFZpZXdGcm9tRnJhbWUo
bV9mcmFtZSksIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCksIHdlYlJlc291cmNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYWZhYmYyMDRiNDBhMGFmZmUxY2E5
YWU2ZGMyYTE3NzYzYTY4ZDM4Mi4uNDYwNjZkM2Y3YmI1YjY4MTU1OGMzMDcwY2Y1YTFkNzE2MTAw
MGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTg3LDcgKzg3LDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRXZlbnRIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Gb3JtU3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVM
b2FkZXJTdGF0ZU1hY2hpbmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5o
PgpAQCAtMTA3LDYgKzEwNiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KQEAgLTEwNjMsMTAgKzEwNjMsNyBAQCBib29s
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKTsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKLSAgICBCT09MIGZvck1haW5GcmFtZSA9IHBhZ2UgJiYgcGFnZS0+ZnJhbWVJc01haW5GcmFt
ZShmcmFtZSk7Ci0gICAgcmV0dXJuIFtXZWJWaWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSBmb3JNYWluRnJhbWU6Zm9yTWFpbkZyYW1lXTsK
KyAgICByZXR1cm4gW1dlYlZpZXcgX2NhbkhhbmRsZVJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpIGZvck1haW5GcmFtZTpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5p
c01haW5GcmFtZSgpXTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CkBAIC0xMjY1LDcgKzEyNjIsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkKICAgICAvLyBJZiB3ZSBvd24gdGhlIHZpZXcsIGRlbGV0ZSB0aGUgb2xkIG9uZSAtIG90
aGVyd2lzZSB0aGUgcmVuZGVyIG1fZnJhbWUgd2lsbCB0YWtlIGNhcmUgb2YgZGVsZXRpbmcgdGhl
IHZpZXcuCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSk7CiAg
ICAgUGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpOwotICAgIGJvb2wgaXNNYWluRnJhbWUg
PSBwYWdlLT5mcmFtZUlzTWFpbkZyYW1lKGNvcmVGcmFtZSk7CisgICAgYm9vbCBpc01haW5GcmFt
ZSA9IGNvcmVGcmFtZS0+aXNNYWluRnJhbWUoKTsKICAgICBpZiAoaXNNYWluRnJhbWUgJiYgY29y
ZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT5zZXRQYXJlbnRWaXNp
YmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDJiNWY2NWM5ODdjOGY3YjIzYjZiMDhjM2I4
N2ZmZjczMmIwMWNlNmIuLjZjZTBmM2EyN2EzNWYzMGE5YjliOTZhN2RlYzgyMmI4YmQ1MTVkZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0yODIsNyAr
MjgyLDcgQEAgLSAodm9pZClfaW5zdGFsbAogCiAgICAgLy8gSWYgdGhpcyBpc24ndCB0aGUgbWFp
biBmcmFtZSwgaXQgbXVzdCBoYXZlIGFuIG93bmVyIGVsZW1lbnQgc2V0LCBvciBpdAogICAgIC8v
IHdvbid0IGV2ZXIgZ2V0IGluc3RhbGxlZCBpbiB0aGUgdmlldyBoaWVyYXJjaHkuCi0gICAgQVNT
RVJUKGZyYW1lLT5wYWdlKCktPmZyYW1lSXNNYWluRnJhbWUoZnJhbWUpIHx8IGZyYW1lLT5vd25l
ckVsZW1lbnQoKSk7CisgICAgQVNTRVJUKGZyYW1lLT5pc01haW5GcmFtZSgpIHx8IGZyYW1lLT5v
d25lckVsZW1lbnQoKSk7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA3MjA5Mjlm
YzRlNzhhNDE4Y2FhZjhjZDM4NDE2N2Q5NzExZTEwNDBlLi5hMTVmYjgzNjVjMGE3YzNkMjkwYTcy
ZmQwNTkzZTAwMmU4OWEwYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KQEAgLTcwNiw3ICs3MDYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjp1cGRhdGVEZWJ1Z0luZm9MYXllcihib29sIHNob3dMYXllcikKIAogYm9vbCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVW
aWV3KGNvbnN0IEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIHJldHVybiBmcmFtZVZpZXcg
JiYgZnJhbWVWaWV3LT5pc01haW5GcmFtZVZpZXcoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3ICYm
IGZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>
<flag name="review"
          id="235182"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>