<?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>217995</bug_id>
          
          <creation_ts>2020-10-20 15:41:05 -0700</creation_ts>
          <short_desc>Share more code between WorkerGlobalScope and WorkletGlobalScope</short_desc>
          <delta_ts>2020-10-21 14:16:38 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217980</dependson>
          <blocked>217724</blocked>
    
    <blocked>217058</blocked>
    
    <blocked>218051</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699971</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 15:41:05 -0700</bug_when>
    <thetext>Share more code between WorkerGlobalScope and WorkletGlobalScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700022</commentid>
    <comment_count>1</comment_count>
      <attachid>411941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-20 17:11:12 -0700</bug_when>
    <thetext>Created attachment 411941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700376</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 13:56:49 -0700</bug_when>
    <thetext>Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700379</commentid>
    <comment_count>3</comment_count>
      <attachid>411941</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-21 14:01:15 -0700</bug_when>
    <thetext>Comment on attachment 411941
Patch

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

&gt; Source/WebCore/workers/WorkerOrWorkletGlobalScope.h:57
&gt; +    virtual void prepareForDestruction();

protected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700380</commentid>
    <comment_count>4</comment_count>
      <attachid>411941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 14:05:01 -0700</bug_when>
    <thetext>Comment on attachment 411941
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioWorkletThread.cpp:90
&gt; +            workletGlobalScope.prepareForDestruction();

See here.

&gt;&gt; Source/WebCore/workers/WorkerOrWorkletGlobalScope.h:57
&gt;&gt; +    virtual void prepareForDestruction();
&gt; 
&gt; protected?

No, I don&apos;t think we can because it is called from WorkerThread / AudioWorkletThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700385</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-21 14:15:54 -0700</bug_when>
    <thetext>Committed r268822: &lt;https://trac.webkit.org/changeset/268822&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411941.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700386</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-21 14:16:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/70544800&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411941</attachid>
            <date>2020-10-20 17:11:12 -0700</date>
            <delta_ts>2020-10-21 14:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217995-20201020171111.patch</filename>
            <type>text/plain</type>
            <size>38081</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0OGViY2FjMzE3OGM0
M2E2MjJiNTNjMGQzMjdmM2E0NTY1NmY0Ny4uN2JlODQwMmFmNDNmMzg5YWQ0MzhiMWUwNWM2OTgw
MzYzN2E1NDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgbW9yZSBjb2RlIGJl
dHdlZW4gV29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxTY29wZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgbW9yZSBjb2RlIGJl
dHdlZW4gV29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxTY29wZSBieQorICAgICAg
ICBtb3Zpbmcgc2hhcmVkIGxvZ2ljIHRvIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3ApOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6V29y
a2VyRXZlbnRMb29wKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlckdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlckdsb2JhbFNjb3BlOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojp3cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp1
bndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnRo
cmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmV2ZW50TG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6aXNDb250
ZXh0VGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOjpwb3N0VGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6
OmlzQ2xvc2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTo6d29ya2VyT3JXb3JrbGV0VGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjptYXJrQXNDbG9zaW5nKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6
OnN0b3ApOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMjAtMTAt
MjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyIGFuZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciBpbnRvIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2Nj
OTIzNGU3MWUyNGZjODBjMzlmZTg1ZmVhNmEyMDhlMGM2OTU2MS4uOTM1OGJhMjQ4ZDk3MmFjMzVj
NjMwNjE3MGFjMDg4ODJlNWMxNzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE0Mywy
NyArMTQzLDExIEBAIFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOjpjcmVhdGVQcm9jZXNzb3IoY29uc3QgU3RyCiAgICAgcmV0dXJuICZqc1Byb2Nl
c3Nvci53cmFwcGVkKCk7CiB9CiAKLXZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBh
cmVGb3JUZXJtaW5hdGlvbigpCit2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24oKQogewotICAgIGlmIChhdXRvKiBkZWZhdWx0VGFza0dyb3VwID0gdGhp
cy0+ZGVmYXVsdFRhc2tHcm91cCgpKQotICAgICAgICBkZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5k
RGlzY2FyZEFsbFRhc2tzKCk7Ci0gICAgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKLQogICAgIG1f
cHJvY2Vzc29yQ29uc3RydWN0b3JNYXAuY2xlYXIoKTsKIAotICAgIC8vIEV2ZW50IGxpc3RlbmVy
cyB3b3VsZCBrZWVwIERPTVdyYXBwZXJXb3JsZCBvYmplY3RzIGFsaXZlIGZvciB0b28gbG9uZy4g
QWxzbywgdGhleSBoYXZlIHJlZmVyZW5jZXMgdG8gSlMgb2JqZWN0cywKLSAgICAvLyB3aGljaCBi
ZWNvbWUgZGFuZ2xpbmcgb25jZSBIZWFwIGlzIGRlc3Ryb3llZC4KLSAgICByZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpOwotCi0gICAgLy8gTWljcm90YXNrUXVldWUgYW5kIFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXIgcmVmZXJlbmNlIEhlYXAuCi0gICAgaWYgKGF1dG8qIGV2ZW50TG9vcCA9IHRoaXMt
PmV4aXN0aW5nRXZlbnRMb29wKCkpCi0gICAgICAgIGV2ZW50TG9vcC0+Y2xlYXJNaWNyb3Rhc2tR
dWV1ZSgpOwotICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKLX0KLQotdm9pZCBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cG9zdFRhc2soVGFzayYmIHRhc2spCi17Ci0gICAgdGhy
ZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworICAgIFdvcmtsZXRHbG9i
YWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPiBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZTo6dGFrZVBlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaAppbmRleCAzZTYxNzVkMWFlNDM5ZWY4YzI2ZDM2ZmE4NWQ0NDhhMmM0NTliOTY4Li4yNDU2
ZjYxYTAxMjM1YWYwODYwZTU3ZjMyNGI2ZDE2MTBlMmQ5MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5o
CkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZVJhdGUgPiAwLjAgPyBtX2N1cnJlbnRGcmFtZSAvIHN0YXRpY19j
YXN0PGRvdWJsZT4obV9zYW1wbGVSYXRlKSA6IDAuMDsgfQogCiAgICAgQXVkaW9Xb3JrbGV0VGhy
ZWFkJiB0aHJlYWQoKSBjb25zdDsKLSAgICB2b2lkIHByZXBhcmVGb3JUZXJtaW5hdGlvbigpOwot
Ci0gICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRl
c3RydWN0aW9uKCkgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YT4gdGFrZVBlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmNwcAppbmRleCBhMDY4ZGNkMDQ0ZDBmYTMyNjcxNmVmZTA3N2JjOGNk
M2Q4NDJmOGZmLi44MTU2MTQwY2UzNWJmNjU5YjllNWUzMDQ1MGI4ZTUxMjVlZGYzNTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRU
aHJlYWQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzdG9w
KCkKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0ICkgewogICAgICAgICAgICAgYXV0byYgd29ya2xldEdsb2JhbFNjb3BlID0gZG93
bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpOwogCi0gICAgICAgICAgICB3
b3JrbGV0R2xvYmFsU2NvcGUucHJlcGFyZUZvclRlcm1pbmF0aW9uKCk7CisgICAgICAgICAgICB3
b3JrbGV0R2xvYmFsU2NvcGUucHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CiAKICAgICAgICAgICAg
IC8vIFN0aWNrIGEgc2h1dGRvd24gY29tbWFuZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28g
dGhhdCB3ZSBkZWFsCiAgICAgICAgICAgICAvLyB3aXRoIGFsbCB0aGUgY2xlYW51cCB0YXNrcyB0
aGUgZGF0YWJhc2VzIHBvc3QgZmlyc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2
ZW50TG9vcC5jcHAKaW5kZXggYTRlN2RmZmY4MjliYzc5Nzc0MzgwMmZmMjBmMWY0NTg2ZDM1NDM1
NS4uMTdmM2NhZWZmMmRiY2NmMTkwZmYxYjU3YzdjNjMxNTkzYmQzNTU4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcApAQCAtMjcsMjIgKzI3LDE2IEBACiAj
aW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAKICNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCi0j
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxXb3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3Jl
YXRlKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQorUmVmPFdvcmtlckV2ZW50TG9vcD4gV29y
a2VyRXZlbnRMb29wOjpjcmVhdGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyRXZlbnRMb29wKGNvbnRleHQpKTsK
IH0KIAotUmVmPFdvcmtlckV2ZW50TG9vcD4gV29ya2VyRXZlbnRMb29wOjpjcmVhdGUoV29ya2xl
dEdsb2JhbFNjb3BlJiBjb250ZXh0KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtl
ckV2ZW50TG9vcChjb250ZXh0KSk7Ci19Ci0KLVdvcmtlckV2ZW50TG9vcDo6V29ya2VyRXZlbnRM
b29wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitXb3JrZXJFdmVudExvb3A6Oldv
cmtlckV2ZW50TG9vcChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgKaW5kZXggMWNkMGVjYjZhMmYzMGU2NjgzN2VkZjcz
ZjdiNDJjMTkyODQ5MDY0NC4uZGY3MGI5ZWUyY2Q3ODkzY2Q2MDZjYTlhZWVmNGVmYWMzN2M1OTM4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oCkBAIC0zMCwxNCAr
MzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKLWNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOwogCiBjbGFzcyBXb3JrZXJFdmVudExvb3AgZmluYWwgOiBwdWJsaWMgRXZlbnRMb29w
LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICAvLyBF
eHBsaWNpdGx5IHRha2UgV29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxTY29wZSBm
b3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4KLSAgICBzdGF0aWMgUmVmPFdvcmtlckV2ZW50TG9v
cD4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7Ci0gICAgc3RhdGljIFJlZjxXb3JrZXJFdmVu
dExvb3A+IGNyZWF0ZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyAgICBzdGF0aWMgUmVmPFdvcmtl
ckV2ZW50TG9vcD4gY3JlYXRlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAKICAgICB2
aXJ0dWFsIH5Xb3JrZXJFdmVudExvb3AoKTsKIApAQCAtNDUsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhck1pY3JvdGFza1F1ZXVlKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
V29ya2VyRXZlbnRMb29wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBleHBsaWNpdCBX
b3JrZXJFdmVudExvb3AoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVUb1J1bigpIGZpbmFsOwogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDI0
MGVjOTMwNDIxOGU2N2VkNTc1NzZkMjI5YWE4NWE2YzQyYmMzYWEuLjU3YjlmNzIzN2ZmN2YxNjZh
NWJiYzRhNjIzYWIyMWVjMTVhMTY0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgotI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCkBAIC02MiwxMCArNjEs
MTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXb3JrZXJHbG9iYWxTY29wZSk7CiAKIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5
LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBtX3VybChwYXJhbXMuc2Ny
aXB0VVJMKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTTo6Y3JlYXRl
KCksICZ0aHJlYWQpCisgICAgLCBtX3VybChwYXJhbXMuc2NyaXB0VVJMKQogICAgICwgbV9pZGVu
dGlmaWVyKHBhcmFtcy5pZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQocGFyYW1zLnVzZXJB
Z2VudCkKLSAgICAsIG1fdGhyZWFkKHRocmVhZCkKICAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxl
cihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1f
aXNPbmxpbmUocGFyYW1zLmlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kocGFyYW1zLnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSkKQEAgLTEwNiw1MiArMTA1LDI5IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+
V29ya2VyR2xvYmFsU2NvcGUoKQogICAgIHRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCku
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKTsKIH0KIAotRXZlbnRMb29wVGFza0dyb3VwJiBX
b3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKCkKLXsKLSAgICBBU1NFUlQoaXNDb250ZXh0VGhy
ZWFkKCkpOwotICAgIGlmIChVTkxJS0VMWSghbV9kZWZhdWx0VGFza0dyb3VwKSkgewotICAgICAg
ICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0aGlzKTsKLSAgICAgICAg
bV9kZWZhdWx0VGFza0dyb3VwID0gbWFrZVVuaXF1ZTxFdmVudExvb3BUYXNrR3JvdXA+KCptX2V2
ZW50TG9vcCk7Ci0gICAgICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKQotICAg
ICAgICAgICAgbV9kZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7Ci0g
ICAgfQotICAgIHJldHVybiAqbV9kZWZhdWx0VGFza0dyb3VwOwotfQotCiBTdHJpbmcgV29ya2Vy
R2xvYmFsU2NvcGU6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgYXV0byogc2VjdXJpdHlPcmlnaW4g
PSB0aGlzLT5zZWN1cml0eU9yaWdpbigpOwogICAgIHJldHVybiBzZWN1cml0eU9yaWdpbiA/IHNl
Y3VyaXR5T3JpZ2luLT50b1N0cmluZygpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKK3ZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiB7CisgICAgV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAgICAgc3RvcEluZGV4ZWREYXRhYmFzZSgpOwogI2VuZGlmCiAKLSAgICBpZiAo
bV9kZWZhdWx0VGFza0dyb3VwKQotICAgICAgICBtX2RlZmF1bHRUYXNrR3JvdXAtPnN0b3BBbmRE
aXNjYXJkQWxsVGFza3MoKTsKLSAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwotCiAgICAgaWYg
KG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLT5jbGVhclBlbmRpbmdSZXF1ZXN0cygpOwogCiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT53b3JrZXJUZXJtaW5hdGluZygpOwotCi0gICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtl
ZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5
IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLAotICAgIC8vIHdoaWNoIGJlY29tZSBkYW5n
bGluZyBvbmNlIEhlYXAgaXMgZGVzdHJveWVkLgotICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJz
KCk7Ci0KLSAgICAvLyBNaWNyb3Rhc2tRdWV1ZSBhbmQgUmVqZWN0ZWRQcm9taXNlVHJhY2tlciBy
ZWZlcmVuY2UgSGVhcC4KLSAgICBpZiAobV9ldmVudExvb3ApCi0gICAgICAgIG1fZXZlbnRMb29w
LT5jbGVhck1pY3JvdGFza1F1ZXVlKCk7Ci0gICAgcmVtb3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tl
cigpOwogfQogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpyZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpCiB7Ci0gICAgRXZlbnRUYXJnZXQ6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAg
ICAgbV9wZXJmb3JtYW5jZS0+cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICBtX3BlcmZv
cm1hbmNlLT5yZW1vdmVBbGxPYnNlcnZlcnMoKTsKIH0KQEAgLTE4NCwxNiArMTYwLDYgQEAgU3Ry
aW5nIFdvcmtlckdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICBy
ZXR1cm4gbV91c2VyQWdlbnQ7CiB9CiAKLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmRpc2FibGVF
dmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIHNjcmlwdCgpLT5kaXNhYmxl
RXZhbChlcnJvck1lc3NhZ2UpOwotfQotCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkaXNhYmxl
V2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgc2NyaXB0KCkt
PmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwotfQotCiBTb2NrZXRQcm92aWRlciog
V29ya2VyR2xvYmFsU2NvcGU6OnNvY2tldFByb3ZpZGVyKCkKIHsKICAgICByZXR1cm4gbV9zb2Nr
ZXRQcm92aWRlci5nZXQoKTsKQEAgLTIyMiw3ICsxODgsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNj
b3BlOjpzdXNwZW5kKCkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJT
KQogICAgIGlmIChtX2Nvbm5lY3Rpb25Qcm94eSkKLSAgICAgICAgbV9jb25uZWN0aW9uUHJveHkt
PnNldENvbnRleHRTdXNwZW5kZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJ1ZSk7Cisg
ICAgICAgIG1fY29ubmVjdGlvblByb3h5LT5zZXRDb250ZXh0U3VzcGVuZGVkKCp0aGlzLCB0cnVl
KTsKICNlbmRpZgogfQogCkBAIC0yMzAsNyArMTk2LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6cmVzdW1lKCkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKQog
ICAgIGlmIChtX2Nvbm5lY3Rpb25Qcm94eSkKLSAgICAgICAgbV9jb25uZWN0aW9uUHJveHktPnNl
dENvbnRleHRTdXNwZW5kZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZmFsc2UpOworICAg
ICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+c2V0Q29udGV4dFN1c3BlbmRlZCgqdGhpcywgZmFsc2Up
OwogI2VuZGlmCiB9CiAKQEAgLTI0NSwxMyArMjExLDEzIEBAIFdvcmtlckxvY2F0aW9uJiBXb3Jr
ZXJHbG9iYWxTY29wZTo6bG9jYXRpb24oKSBjb25zdAogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3Bl
OjpjbG9zZSgpCiB7Ci0gICAgaWYgKG1fY2xvc2luZykKKyAgICBpZiAoaXNDbG9zaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIExldCBjdXJyZW50IHNjcmlwdCBydW4gdG8gY29tcGxl
dGlvbiBidXQgcHJldmVudCBmdXR1cmUgc2NyaXB0IGV2YWx1YXRpb25zLgogICAgIC8vIEFmdGVy
IG1fY2xvc2luZyBpcyBzZXQsIGFsbCB0aGUgdGFza3MgaW4gdGhlIHF1ZXVlIGNvbnRpbnVlIHRv
IGJlIGZldGNoZWQgYnV0IG9ubHkKICAgICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09
dHJ1ZSB3aWxsIGJlIGV4ZWN1dGVkLgotICAgIG1fY2xvc2luZyA9IHRydWU7CisgICAgbWFya0Fz
Q2xvc2luZygpOwogICAgIHBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6
Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSk7CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKQEAgLTI3NCwxMSArMjQw
LDYgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0SXNPbmxpbmUoYm9vbCBpc09ubGluZSkK
ICAgICAgICAgbV9uYXZpZ2F0b3ItPnNldElzT25saW5lKGlzT25saW5lKTsKIH0KIAotdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soVGFzayYmIHRhc2spCi17Ci0gICAgdGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCiBFeGNlcHRpb25PcjxpbnQ+
IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRl
LCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgLy8g
RklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0
IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KQEAgLTQwNiwxNiArMzY3LDYgQEAg
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCi1ib29sIFdv
cmtlckdsb2JhbFNjb3BlOjppc0NvbnRleHRUaHJlYWQoKSBjb25zdAotewotICAgIHJldHVybiB0
aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Ci19Ci0KLWJvb2wgV29ya2Vy
R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAotewotICAgIHJldHVy
biBzY3JpcHQoKS0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKLX0KLQogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQogCiBjbGFzcyBDcnlwdG9CdWZmZXJDb250YWluZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q3J5cHRvQnVmZmVyQ29udGFpbmVyPiB7CkBAIC00NDMsNyArMzk0LDcgQEAg
Ym9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgVmVjdG9yPHVpbnQ4X3QKICAgICBhdXRvIHJlc3VsdENvbnRhaW5lciA9IENyeXB0
b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gZG9uZUNvbnRhaW5lciA9IENy
eXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gd3JhcHBlZEtleUNvbnRh
aW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgbV90aHJlYWQud29y
a2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIsIGtleSwg
d3JhcHBlZEtleUNvbnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5nUHJveHkg
PSBtYWtlUmVmKGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJM
b2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICB0
aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRh
aW5lciwga2V5LCB3cmFwcGVkS2V5Q29udGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNz
YWdpbmdQcm94eSA9IG1ha2VSZWYoZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KHRocmVh
ZCgpLndvcmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewogICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC53cmFwQ3J5
cHRvS2V5KGtleSwgd3JhcHBlZEtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKICAgICAgICAgZG9u
ZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKICAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJv
eHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW10oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewpAQCAtNDUzLDcgKzQwNCw3IEBAIGJvb2wgV29y
a2VyR2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IFZlY3Rvcjx1aW50OF90CiAKICAgICBhdXRvIHdhaXRSZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNz
YWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFkb25lQ29udGFpbmVyLT5ib29sZWFuKCkgJiYgd2Fp
dFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQotICAgICAgICB3YWl0UmVzdWx0ID0g
bV90aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKKyAgICAgICAgd2FpdFJlc3VsdCA9IHRocmVhZCgpLnJ1bkxvb3AoKS5ydW5Jbk1v
ZGUodGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAKICAgICBpZiAoZG9uZUNv
bnRhaW5lci0+Ym9vbGVhbigpKQogICAgICAgICB3cmFwcGVkS2V5LnN3YXAod3JhcHBlZEtleUNv
bnRhaW5lci0+YnVmZmVyKCkpOwpAQCAtNDY2LDcgKzQxNyw3IEBAIGJvb2wgV29ya2VyR2xvYmFs
U2NvcGU6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXks
IFZlY3RvCiAgICAgYXV0byByZXN1bHRDb250YWluZXIgPSBDcnlwdG9Cb29sZWFuQ29udGFpbmVy
OjpjcmVhdGUoKTsKICAgICBhdXRvIGRvbmVDb250YWluZXIgPSBDcnlwdG9Cb29sZWFuQ29udGFp
bmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRh
aW5lcjo6Y3JlYXRlKCk7Ci0gICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFz
a1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIsIHdyYXBwZWRLZXksIGtleUNvbnRhaW5lciwgZG9u
ZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtlUmVmKGRvd25jYXN0PFdvcmtl
ck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICB0aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94
eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwgd3JhcHBlZEtleSwga2V5Q29u
dGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93
bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KHRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkp
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1bHRDb250
YWluZXItPnNldEJvb2xlYW4oY29udGV4dC51bndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSwga2V5
Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRCb29sZWFu
KHRydWUpOwogICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CkBAIC00NzYsNyArNDI3LDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFw
Q3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG8KIAogICAg
IGF1dG8gd2FpdFJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKICAgICB3aGls
ZSAoIWRvbmVDb250YWluZXItPmJvb2xlYW4oKSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCi0gICAgICAgIHdhaXRSZXN1bHQgPSBtX3RocmVhZC5ydW5Mb29wKCkucnVu
SW5Nb2RlKHRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB3YWl0
UmVzdWx0ID0gdGhyZWFkKCkucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKIAogICAgIGlmIChkb25lQ29udGFpbmVyLT5ib29sZWFuKCkpCiAg
ICAgICAgIGtleS5zd2FwKGtleUNvbnRhaW5lci0+YnVmZmVyKCkpOwpAQCAtNTQyLDQgKzQ5Myw5
IEBAIFJlZmVycmVyUG9saWN5IFdvcmtlckdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7CiB9CiAKK1dvcmtlclRocmVhZCYgV29y
a2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICpzdGF0aWNfY2Fz
dDxXb3JrZXJUaHJlYWQqPih3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAppbmRleCBlNDhjZmI4NWUxYmUwNWM5ZmJlOGI1YjEyMGJjN2ZiNzk4MDRlNzI5Li4yZjVhOTFj
MjY2ZWRkN2Y2MDViYjU2YzgzYjJjOTliZmQ2ZjFlMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJC
YXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCi0j
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5o
IgpAQCAtNDYsMTAgKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTVmFsdWVQ
b29sOwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwogY2xhc3Mg
Q3J5cHRvOwotY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgUGVyZm9ybWFuY2U7CiBj
bGFzcyBTY2hlZHVsZWRBY3Rpb247Ci1jbGFzcyBXb3JrZXJFdmVudExvb3A7CiBjbGFzcyBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgV29ya2VyTG9jYXRpb247CiBjbGFzcyBXb3Jr
ZXJOYXZpZ2F0b3I7CkBAIC02MCw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xh
c3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdvcmtlckdsb2JhbFNjb3BlPiwgcHVibGljIFN1cHBsZW1lbnRhYmxl
PFdvcmtlckdsb2JhbFNjb3BlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBCYXNlNjRVdGlsaXRpZXMsIHB1YmxpYyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSB7
CitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxXb3JrZXJH
bG9iYWxTY29wZT4sIHB1YmxpYyBCYXNlNjRVdGlsaXRpZXMsIHB1YmxpYyBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXb3JrZXJHbG9iYWxT
Y29wZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGUoKTsKQEAgLTY4
LDggKzY1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
RXZlbnRMb29wVGFza0dyb3VwJiBldmVudExvb3AoKSBmaW5hbDsKLQogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICBTdHJpbmcgb3JpZ2luKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CkBAIC04OCwxMiArODMsMTAgQEAgcHVibGljOgogCiAgICAgV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2luc3BlY3RvckNvbnRyb2xsZXI7IH0KIAotICAgIFdvcmtlclRocmVhZCYgdGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJlYWQ7IH0KKyAgICBXb3JrZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0
OwogCiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5
OwogCi0gICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsOyAvLyBFeGVjdXRlcyB0aGUgdGFz
ayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgotCiAgICAgV29ya2VyR2xvYmFs
U2NvcGUmIHNlbGYoKSB7IHJldHVybiAqdGhpczsgfQogICAgIFdvcmtlckxvY2F0aW9uJiBsb2Nh
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTEwOCwxNyArMTAxLDExIEBAIHB1
YmxpYzoKICAgICBFeGNlcHRpb25PcjxpbnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVh
ckludGVydmFsKGludCB0aW1lb3V0SWQpOwogCi0gICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgV29ya2VyTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
bmF2aWdhdG9yLmdldCgpOyB9CiAgICAgV29ya2VyTG9jYXRpb24qIG9wdGlvbmFsTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLmdldCgpOyB9CiAKLSAgICB1c2luZyBSZWZDb3Vu
dGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KLSAgICBib29sIGlzQ2xv
c2luZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2xvc2luZzsgfQotCiAgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4m
JikgZmluYWw7CiAKICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KQEAgLTEyNiw3ICsxMTMsNyBAQCBwdWJsaWM6
CiAgICAgQ3J5cHRvJiBjcnlwdG8oKTsKICAgICBQZXJmb3JtYW5jZSYgcGVyZm9ybWFuY2UoKSBj
b25zdDsKIAotICAgIHZvaWQgcHJlcGFyZUZvclRlcm1pbmF0aW9uKCk7CisgICAgdm9pZCBwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKSBmaW5hbDsKIApAQCAtMTQ3LDEyICsxMzQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJl
ZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJl
ZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KLQotICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KICAgICB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29uc29s
ZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYpIGZpbmFsOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGFu
ZCBhZGRDb25zb2xlTWVzc2FnZSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuCkBAIC0xNjEsMTkg
KzE0MiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgYm9vbCBpc1dvcmtlckdsb2JhbFNjb3Bl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFdvcmtlclRocmVhZCogd29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fdGhyZWFkOyB9CiAKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOyB9CiAg
ICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6
Tm8pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7Ci0gICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkg
ZmluYWw7Ci0gICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50VGFyZ2V0KCkgZmluYWw7
CiAgICAgU3RyaW5nIHJlc291cmNlUmVxdWVzdElkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIo
KSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3k7IH0KLSAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIGJvb2wgd3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVk
S2V5KSBmaW5hbDsKQEAgLTE5MSwxNyArMTY3LDEyIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBS
ZWZQdHI8V29ya2VyTG9jYXRpb24+IG1fbG9jYXRpb247CiAgICAgbXV0YWJsZSBSZWZQdHI8V29y
a2VyTmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKIAotICAgIFdvcmtlclRocmVhZCYgbV90aHJlYWQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1f
c2NyaXB0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBt
X2luc3BlY3RvckNvbnRyb2xsZXI7CiAKLSAgICBib29sIG1fY2xvc2luZyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzT25saW5lOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3k7CiAKLSAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50
TG9vcDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFza0dyb3VwPiBtX2RlZmF1bHRU
YXNrR3JvdXA7Ci0KICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGQ1YThkNTk4NThhOWYyZTcx
NmI3NjE2MDgzY2VkZDAzZWUwYzliNzQuLjQ4OGE0OTg4MTQzMWFhNjI2YTFiMjU1YmY0MjE2Yzlk
ODM4MzZhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0yNiwxOCArMjYsMzcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogCisjaW5jbHVk
ZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKCkKLSAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOworCitXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPEpTQzo6Vk0+JiYgdm0sIFdvcmtlck9yV29y
a2xldFRocmVhZCogdGhyZWFkKQorICAgIDogbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyPihXVEZNb3ZlKHZtKSwgdGhpcykpCisgICAgLCBtX3RocmVh
ZCh0aHJlYWQpCiB7CiB9CiAKLVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiB2bSkKLSAgICA6IG1fc2NyaXB0KG1ha2VV
bmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRoaXMp
KQorV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSgpID0gZGVmYXVsdDsKKwordm9pZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFy
ZUZvckRlc3RydWN0aW9uKCkKIHsKKyAgICBpZiAobV9kZWZhdWx0VGFza0dyb3VwKQorICAgICAg
ICBtX2RlZmF1bHRUYXNrR3JvdXAtPnN0b3BBbmREaXNjYXJkQWxsVGFza3MoKTsKKworICAgIHN0
b3BBY3RpdmVET01PYmplY3RzKCk7CisKKyAgICAvLyBFdmVudCBsaXN0ZW5lcnMgd291bGQga2Vl
cCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxvbmcuIEFsc28sIHRoZXkg
aGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCisgICAgLy8gd2hpY2ggYmVjb21lIGRhbmds
aW5nIG9uY2UgSGVhcCBpcyBkZXN0cm95ZWQuCisgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMo
KTsKKworICAgIC8vIE1pY3JvdGFza1F1ZXVlIGFuZCBSZWplY3RlZFByb21pc2VUcmFja2VyIHJl
ZmVyZW5jZSBIZWFwLgorICAgIGlmIChtX2V2ZW50TG9vcCkKKyAgICAgICAgbV9ldmVudExvb3At
PmNsZWFyTWljcm90YXNrUXVldWUoKTsKKyAgICByZW1vdmVSZWplY3RlZFByb21pc2VUcmFja2Vy
KCk7CiB9CiAKIHZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmNsZWFyU2NyaXB0KCkK
QEAgLTQ1LDQgKzY0LDQzIEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmNsZWFy
U2NyaXB0KCkKICAgICBtX3NjcmlwdCA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
eworICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJv
ck1lc3NhZ2UpOworfQorCitib29sIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhl
Y3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fc2NyaXB0IHx8IG1fc2Ny
aXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworfQorCitFdmVudExvb3BUYXNrR3JvdXAmIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpldmVudExvb3AoKQoreworICAgIEFTU0VSVChpc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFtX2RlZmF1bHRUYXNrR3JvdXApKSB7
CisgICAgICAgIG1fZXZlbnRMb29wID0gV29ya2VyRXZlbnRMb29wOjpjcmVhdGUoKnRoaXMpOwor
ICAgICAgICBtX2RlZmF1bHRUYXNrR3JvdXAgPSBtYWtlVW5pcXVlPEV2ZW50TG9vcFRhc2tHcm91
cD4oKm1fZXZlbnRMb29wKTsKKyAgICAgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVk
KCkpCisgICAgICAgICAgICBtX2RlZmF1bHRUYXNrR3JvdXAtPnN0b3BBbmREaXNjYXJkQWxsVGFz
a3MoKTsKKyAgICB9CisgICAgcmV0dXJuICptX2RlZmF1bHRUYXNrR3JvdXA7Cit9CisKK2Jvb2wg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCgpIGNvbnN0Cit7Cisg
ICAgYXV0byogdGhyZWFkID0gd29ya2VyT3JXb3JrbGV0VGhyZWFkKCk7CisgICAgcmV0dXJuIHRo
cmVhZCA/IHRocmVhZC0+dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIDogaXNNYWluVGhy
ZWFkKCk7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OnBvc3RUYXNrKFRh
c2smJiB0YXNrKQoreworICAgIEFTU0VSVCh3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSk7CisgICAg
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2sp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IGU3OWViY2Y5YzVlZTI1
OTk2ZWJkY2FmYWYwM2RlYzZlYzUxZmIyYmIuLmMwYjFjZjkxMjg1NTkzNjU0NWExM2QyZTQ1MDRh
Yjk3NmY5YzNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI1LDMyICsyNSw2NiBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50TG9vcFRhc2tHcm91
cDsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcDsKIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ7CiAKLWNsYXNzIFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeworY2xh
c3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogcHVibGljOgotICAgIHZpcnR1YWwgfldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zaW5nKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmts
ZXRUaHJlYWQoKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2xvc2luZzsgfQorICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogd29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQ7IH0KIAogICAgIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0Lmdl
dCgpOyB9CiAgICAgdm9pZCBjbGVhclNjcmlwdCgpOwogCiAgICAgdW5zaWduZWQgbG9uZyBjcmVh
dGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0KIAor
ICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgRXZlbnRMb29wVGFza0dyb3VwJiBl
dmVudExvb3AoKSBmaW5hbDsKKyAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
b24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKworICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKKwogcHJvdGVjdGVkOgotICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoUmVmPEpTQzo6Vk0+JiYpOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFJlZjxK
U0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsKKworICAgIC8vIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuCisgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgZmlu
YWw7CisKKyAgICB2b2lkIG1hcmtBc0Nsb3NpbmcoKSB7IG1faXNDbG9zaW5nID0gdHJ1ZTsgfQog
CiBwcml2YXRlOgorICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgdm9pZCBkaXNh
YmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBkaXNh
YmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOworICAgIHZv
aWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lk
IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAg
Ly8gRXZlbnRUYXJnZXQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigp
OyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4gbV9zY3JpcHQ7CisgICAgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiBtX3RocmVhZDsKKyAgICBS
ZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRMb29wVGFza0dyb3VwPiBtX2RlZmF1bHRUYXNrR3JvdXA7CiAgICAgdW5zaWduZWQgbG9u
ZyBtX3VuaXF1ZUlkZW50aWZpZXIgeyAxIH07CisgICAgYm9vbCBtX2lzQ2xvc2luZyB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKaW5kZXggMWNlZmNiZGMwM2RmYWQ3OTIwYjVhNmM2MjRlODA4M2IzMGE1
YWQ2Yy4uOTliODgzZmUzMjM2NjcxMTY0MWYyOGViZjZjYzQwZGNiMDg0MWVmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkOjpzdG9wKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHN0b3BwZWRDYWxsYmFj
aykKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0ICkgewogICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogCi0gICAgICAg
ICAgICB3b3JrZXJHbG9iYWxTY29wZS5wcmVwYXJlRm9yVGVybWluYXRpb24oKTsKKyAgICAgICAg
ICAgIHdvcmtlckdsb2JhbFNjb3BlLnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwogCiAgICAgICAg
ICAgICAvLyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUs
IHNvIHRoYXQgd2UgZGVhbAogICAgICAgICAgICAgLy8gd2l0aCBhbGwgdGhlIGNsZWFudXAgdGFz
a3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMGRiNTE5NWJhOWZlNGRiYjZlNWVkMDJiODZl
NjBjZDJmMmFmZThhMS4uNjk4YmI1YzQ5MWM1YjUzZGRlMGNjZTk0NzJkMDg0MzFiNGJiOWRkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBA
IC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVk
ZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKQEAgLTQ5LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2Nv
cGUpOwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldv
cmtsZXRUaHJlYWQmIHRocmVhZCwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Ci0gICAgOiBtX3RocmVhZCgmdGhyZWFkKQorICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoSlNDOjpWTTo6Y3JlYXRlKCksICZ0aHJlYWQpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAgLCBtX3VybChwYXJhbWV0ZXJzLndpbmRvd1VS
TCkKICAgICAsIG1fanNSdW50aW1lRmxhZ3MocGFyYW1ldGVycy5qc1J1bnRpbWVGbGFncykKQEAg
LTYyLDcgKzYxLDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29y
a2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQsIGNvbnN0IFdvcmsKIH0KIAogV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpW
TT4mJiB2bSwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShXVEZNb3ZlKHZtKSkKKyAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFdURk1vdmUodm0pLCBudWxscHRyKQogICAgICwgbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1
bWVudCkpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkp
CiAgICAgLCBtX3VybChjb2RlLnVybCgpKQpAQCAtODgsMTcgKzg3LDEyIEBAIFdvcmtsZXRHbG9i
YWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogewotICAgIGlmICghc2NyaXB0KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAobV9kZWZhdWx0VGFza0dyb3VwKQotICAgICAgICBtX2RlZmF1bHRU
YXNrR3JvdXAtPnN0b3BBbmREaXNjYXJkQWxsVGFza3MoKTsKLSAgICBzdG9wQWN0aXZlRE9NT2Jq
ZWN0cygpOwotICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7Ci0gICAgaWYgKG1fZXZlbnRM
b29wKQotICAgICAgICBtX2V2ZW50TG9vcC0+Y2xlYXJNaWNyb3Rhc2tRdWV1ZSgpOwotICAgIHJl
bW92ZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKLSAgICBzY3JpcHQoKS0+dm0oKS5ub3RpZnlO
ZWVkVGVybWluYXRpb24oKTsKLSAgICBjbGVhclNjcmlwdCgpOworICAgIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKKworICAgIGlmIChzY3JpcHQo
KSkgeworICAgICAgICBzY3JpcHQoKS0+dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKKyAg
ICAgICAgY2xlYXJTY3JpcHQoKTsKKyAgICB9CiB9CiAKIGF1dG8gV29ya2xldEdsb2JhbFNjb3Bl
OjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc1NldCYK
QEAgLTEwNywxNyArMTAxLDYgQEAgYXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRH
bG9iYWxTY29wZXNTZXQoKSAtPiBXb3JrbGV0R2xvYmFsU2NvcGVzU2V0JgogICAgIHJldHVybiBz
Y29wZXM7CiB9CiAKLUV2ZW50TG9vcFRhc2tHcm91cCYgV29ya2xldEdsb2JhbFNjb3BlOjpldmVu
dExvb3AoKQotewotICAgIGlmIChVTkxJS0VMWSghbV9kZWZhdWx0VGFza0dyb3VwKSkgewotICAg
ICAgICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0aGlzKTsKLSAgICAg
ICAgbV9kZWZhdWx0VGFza0dyb3VwID0gbWFrZVVuaXF1ZTxFdmVudExvb3BUYXNrR3JvdXA+KCpt
X2V2ZW50TG9vcCk7Ci0gICAgICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKQot
ICAgICAgICAgICAgbV9kZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7
Ci0gICAgfQotICAgIHJldHVybiAqbV9kZWZhdWx0VGFza0dyb3VwOwotfQotCiBTdHJpbmcgV29y
a2xldEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2RvY3VtZW50KQpAQCAtMTMxLDIxICsxMTQsNiBAQCB2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZXZhbHVhdGUoKQogICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoKm1fY29kZSk7CiB9
CiAKLWJvb2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gIXNjcmlwdCgpIHx8IHNjcmlwdCgpLT5pc0V4ZWN1dGlvbkZvcmJp
ZGRlbigpOwotfQotCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgc2NyaXB0KCktPmRpc2FibGVFdmFsKGVycm9y
TWVzc2FnZSk7Ci19Ci0KLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1i
bHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgc2NyaXB0KCktPmRpc2FibGVX
ZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwotfQotCiBVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRm9yY2VVVEY4KSBjb25zdAogewogICAgIGlm
ICh1cmwuaXNOdWxsKCkpCkBAIC0yNTcsMTEgKzIyNSw0IEBAIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyJiBXb3JrbGV0R2xvYmFsU2NvcGU6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkK
ICAgICByZXR1cm4gKm1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CiB9CiAKLWJvb2wgV29y
a2xldEdsb2JhbFNjb3BlOjppc0NvbnRleHRUaHJlYWQoKSBjb25zdAotewotICAgIGlmIChtX3Ro
cmVhZCkKLSAgICAgICAgcmV0dXJuIG1fdGhyZWFkLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCk7Ci0gICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmlu
ZGV4IDUzNWUzNmVlM2JiMGUwMDhiYTMyZGZlNzc5NzQwNjEyYjBiZGNhZjMuLjM1NGYwMzRkNjM5
YzBhZWRkNWJhZGRkNjAxMDViMTI4ZTEyYmU5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yNywxMiArMjcsMTAgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIgpA
QCAtNDcsOSArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50TG9v
cFRhc2tHcm91cDsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwotY2xhc3MgV29y
a2VyRXZlbnRMb29wOwogY2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CiBj
bGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7CiAKQEAgLTU4LDcgKzU0LDcgQEAgc3RydWN0IFdvcmts
ZXRQYXJhbWV0ZXJzOwogZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7IH07
CiB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxX
b3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CiAKLWNsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IHB1YmxpYyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgeworY2xhc3MgV29ya2xldEdsb2JhbFNj
b3BlIDogcHVibGljIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBwdWJsaWMgV29ya2VyU2Ny
aXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdvcmtsZXRHbG9i
YWxTY29wZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3BlKCk7CkBA
IC03NSwzNSArNzEsMjMgQEAgcHVibGljOgogCiAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXImIG1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CiAKLSAgICBFdmVudExvb3BUYXNrR3Jv
dXAmIGV2ZW50TG9vcCgpIGZpbmFsOwotCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3VybDsgfQogCiAgICAgdm9pZCBldmFsdWF0ZSgpOwogCiAgICAgUmVmZXJy
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5hbDsKIAotICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKLQotICAgIFdvcmtlck9y
V29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV90aHJlYWQuZ2V0KCk7IH0KLQogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCi0gICAgYm9v
bCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgZmluYWw7CiAgICAgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9
CiAKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CiAKLSAgICAvLyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBib29s
IGlzQ2xvc2luZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9Ci0KLSAgICBi
b29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNTZWN1cmVDb250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEpTQzo6UnVudGltZUZs
YWdzIGpzUnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9qc1J1bnRpbWVGbGFnczsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgIHZvaWQgcHJl
cGFyZUZvckRlc3RydWN0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZldGNoQW5kSW52b2tl
U2NyaXB0KGNvbnN0IFVSTCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOwogCkBAIC0xMTMsMjYgKzk3LDEz
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JX
b3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKICAgICBXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0U291cmNlQ29kZSYmKTsK
LSAgICBXb3JrbGV0R2xvYmFsU2NvcGUoY29uc3QgV29ya2xldEdsb2JhbFNjb3BlJikgPSBkZWxl
dGU7Ci0gICAgV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYmKSA9IGRlbGV0
ZTsKLQotICAgIFdvcmtlckV2ZW50TG9vcCogZXhpc3RpbmdFdmVudExvb3AoKSBjb25zdCB7IHJl
dHVybiBtX2V2ZW50TG9vcC5nZXQoKTsgfQotICAgIEV2ZW50TG9vcFRhc2tHcm91cCogZGVmYXVs
dFRhc2tHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRhc2tHcm91cC5nZXQoKTsgfQog
CiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHkoKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHBvc3RU
YXNrKFRhc2smJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgdm9p
ZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQg
ZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KLSAgICB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7IH0KKyAgICAvLyBFdmVudFRhcmdldC4KICAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFdvcmtsZXRHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQog
CiAgICAgYm9vbCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KQEAgLTE1Myw4ICsxMjQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgVVJMIGNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0IGZp
bmFsOwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWw7Ci0gICAg
dm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGRpc2FibGVX
ZWJBc3NlbWJseShjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAogICAgIHN0cnVjdCBTY3JpcHRGZXRj
aEpvYiB7CiAgICAgICAgIFVSTCBtb2R1bGVVUkw7CkBAIC0xNjYsMTMgKzEzNSw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFNjcmlwdEZldGNoSm9iJiYs
IE9wdGlvbmFsPEV4Y2VwdGlvbj4pOwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVu
dDsKLSAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0VGhyZWFkPiBtX3RocmVhZDsKIAogICAgIFJl
ZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAKLSAgICBSZWZQdHI8V29ya2VyRXZlbnRM
b29wPiBtX2V2ZW50TG9vcDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFza0dyb3Vw
PiBtX2RlZmF1bHRUYXNrR3JvdXA7Ci0KICAgICBVUkwgbV91cmw7CiAgICAgSlNDOjpSdW50aW1l
RmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKICAgICBPcHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBt
X2NvZGU7CkBAIC0xODIsOCArMTQ3LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V29ya2VyU2Ny
aXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKICAgICBEZXF1ZTxTY3JpcHRGZXRjaEpvYj4gbV9z
Y3JpcHRGZXRjaEpvYnM7CiAgICAgSGFzaFNldDxVUkw+IG1fZXZhbHVhdGVkTW9kdWxlczsKLQot
ICAgIGJvb2wgbV9pc0Nsb3NpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>