<?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>190389</bug_id>
          
          <creation_ts>2018-10-08 20:40:12 -0700</creation_ts>
          <short_desc>Have DOMWindow get its frame from its document</short_desc>
          <delta_ts>2018-10-09 10:16:29 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467325</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 20:40:12 -0700</bug_when>
    <thetext>Have DOMWindow get its frame from its document instead of having its own m_frame which can potentially be out-of-sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467326</commentid>
    <comment_count>1</comment_count>
      <attachid>351852</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-08 20:41:32 -0700</bug_when>
    <thetext>Created attachment 351852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467434</commentid>
    <comment_count>2</comment_count>
      <attachid>351852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-10-09 10:02:51 -0700</bug_when>
    <thetext>Comment on attachment 351852
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467436</commentid>
    <comment_count>3</comment_count>
      <attachid>351852</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-09 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 351852
Patch

Rejecting attachment 351852 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 351852, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/9504755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467442</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-09 10:15:27 -0700</bug_when>
    <thetext>Committed r236965: &lt;https://trac.webkit.org/changeset/236965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467443</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-09 10:16:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/45129703&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351852</attachid>
            <date>2018-10-08 20:41:32 -0700</date>
            <delta_ts>2018-10-09 10:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190389-20181008204131.patch</filename>
            <type>text/plain</type>
            <size>39702</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JmYTg5YzNkMjU3ZDFj
Y2U1OWQ1YWNjZWExN2FhNjcxNmMwYTBiNC4uYmQyZDc2MWU3YWY4N2FmMjgzM2Y2YTA3ODM1ZWRm
OTA4NWU0ZTU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE4LTEwLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBET01XaW5kb3cgZ2V0
IGl0cyBmcmFtZSBmcm9tIGl0cyBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMzg5CisKKyAgICAgICAgSGF2ZSBET01XaW5kb3cgZ2V0
IGl0cyBmcmFtZSBmcm9tIGl0cyBkb2N1bWVudCBpbnN0ZWFkIG9mIGhhdmluZyBpdHMgb3duIG1f
ZnJhbWUgd2hpY2ggY2FuIHBvdGVudGlhbGx5CisgICAgICAgIGJlIG91dC1vZi1zeW5jLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpm
cmFtZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2lsbERldGFjaFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0dGFjaFRvQ2FjaGVkRnJhbWUpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxsb3dQb3BVcCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmRpZFNlY3VyZVRyYW5zaXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OmZyYW1lRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2lsbERl
dGFjaERvY3VtZW50RnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVj
b25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OmNvbGxlY3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6Om1hdGNoaW5nRWxlbWVudEluRmxhdFRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OmNvbnNvbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojp3ZWJraXROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdl
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZyYW1lRWxlbWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6Ymx1cik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cHJpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxl
cnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjb25maXJtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6cHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6
ZmluZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om91dGVySGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6b3V0ZXJXaWR0aCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlubmVySGVpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5uZXJXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnNjcmVlblggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzY3JlZW5ZIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbFkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2V0TmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldFN0YXR1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnNldERlZmF1bHRTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpzZWxmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6b3BlbmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzb3duT3BlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0
TWF0Y2hlZENTU1J1bGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGV2
aWNlUGl4ZWxSYXRpbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9s
bEJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsVG8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9t
ZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om1vdmVCeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om1vdmVUbyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnJlc2l6ZUJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6cmVzaXplVG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpj
bGVhclRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc1NhbWVTZWN1cml0
eU9yaWdpbkFzTWFpbkZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6
ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6ZnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2lsbERldGFj
aFBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkZXRhY2hGcm9t
RnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphdHRhY2hUb0Zy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorCiAyMDE4LTEwLTA4
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaFRyYWNlcjog
YmFja2JvYXJkZCBhdCBSZWN1cnNpb24gOjogUXVhcnR6Q29yZTogQ0E6OlJlbmRlcjo6VXBkYXRl
cjo6cHJlcGFyZV9zdWJsYXllcjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDc1MmM4NTBj
M2ViOWY2NWNjMDFmMWNiMDRkMDA1MmRhMGE2M2I0MWUuLjhhOGFmMGI1Y2Y4NDFhNzY1MDlkZTc4
NzQ5NGQ2NDllYjlmZmE2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjMzMiwxNyAr
MjMzMiwyNyBAQCB2b2lkIERvY3VtZW50OjpmcmFtZURlc3Ryb3llZCgpCiB7CiAgICAgLy8gZGV0
YWNoRnJvbUZyYW1lKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIEZyYW1l
LgogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2ZyYW1lKTsKKworICAgIGlmIChhdXRvKiB3aW5kb3cg
PSBkb21XaW5kb3coKSkKKyAgICAgICAgd2luZG93LT5mcmFtZURlc3Ryb3llZCgpOworCiAgICAg
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ryb3llZCgpOwogfQogCit2b2lkIERv
Y3VtZW50Ojp3aWxsRGV0YWNoUGFnZSgpCit7CisgICAgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
Ojp3aWxsRGV0YWNoUGFnZSgpOworCisgICAgaWYgKGRvbVdpbmRvdygpICYmIGZyYW1lKCkpCisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoKmZy
YW1lKCksIGRvbVdpbmRvdygpKTsKK30KKwogdm9pZCBEb2N1bWVudDo6YXR0YWNoVG9DYWNoZWRG
cmFtZShDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KGNhY2hlZEZyYW1lLmRvY3VtZW50KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGNhY2hlZEZyYW1l
LnZpZXcoKSk7CiAgICAgQVNTRVJUKG1fcGFnZUNhY2hlU3RhdGUgPT0gRG9jdW1lbnQ6OkluUGFn
ZUNhY2hlKTsKICAgICBvYnNlcnZlRnJhbWUoJmNhY2hlZEZyYW1lLnZpZXcoKS0+ZnJhbWUoKSk7
Ci0gICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICB3aW5kb3ctPmF0
dGFjaFRvRnJhbWUoY2FjaGVkRnJhbWUudmlldygpLT5mcmFtZSgpKTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6ZGV0YWNoRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM2YjE1ZDc3N2NhYzJkYzE3NjQyN2MzMjQ3NGQxMjY1
NGM1OWNjN2EuLmFhMzk4YzdhYzVkNWJhODkzYzZiODA5ZWZmNDhlMTZkN2FlYjk5NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xNTI1LDYgKzE1MjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2hvdWxkSW5oZXJpdENvbnRlbnRTZWN1cml0eVBvbGljeUZyb21Pd25lcigpIGNvbnN0OwogCiAg
ICAgdm9pZCB1cGRhdGVUaXRsZUVsZW1lbnQoRWxlbWVudCYgY2hhbmdpbmdUaXRsZUVsZW1lbnQp
OworICAgIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lRGVzdHJv
eWVkKCkgZmluYWw7CiAKICAgICB2b2lkIGNvbW1vblRlYXJkb3duKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKaW5kZXggYWI1ZTk5N2I5MDcxMjQ2NDEzZWRjN2Q0YmRmNzM0NDc1Y2MyZDM2
Mi4uMzE2NmUzZWM2OTY4MTJmNzg0YTZmNWUwYmQwNjQ5OTdiYzZhYWQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcApAQCAtMzc1LDcgKzM3NSw4IEBAIGJvb2wgRE9NV2luZG93OjphbGxv
d1BvcFVwKEZyYW1lJiBmaXJzdEZyYW1lKQogCiBib29sIERPTVdpbmRvdzo6YWxsb3dQb3BVcCgp
CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUgJiYgYWxsb3dQb3BVcCgqbV9mcmFtZSk7CisgICAgYXV0
byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSAmJiBhbGxvd1BvcFVw
KCpmcmFtZSk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coY29uc3Qg
RnJhbWUmIGZyYW1lKQpAQCAtNDA1LDcgKzQwNiw2IEBAIHZvaWQgRE9NV2luZG93OjpzZXRDYW5T
aG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93KQogRE9NV2luZG93OjpET01XaW5kb3co
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogQWJzdHJhY3RET01XaW5kb3coR2xvYmFsV2luZG93
SWRlbnRpZmllciB7IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlm
aWVyPFdpbmRvd0lkZW50aWZpZXJUeXBlPigpIH0pCiAgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcigmZG9jdW1lbnQpCi0gICAgLCBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1l
bnQuZnJhbWUoKSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7CiAgICAgYWRkTGFuZ3VhZ2VDaGFu
Z2VPYnNlcnZlcih0aGlzLCAmbGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNrKTsKQEAgLTQxNCw3ICs0
MTQsNiBAQCBET01XaW5kb3c6OkRPTVdpbmRvdyhEb2N1bWVudCYgZG9jdW1lbnQpCiB2b2lkIERP
TVdpbmRvdzo6ZGlkU2VjdXJlVHJhbnNpdGlvblRvKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBvYnNlcnZlQ29udGV4dCgmZG9jdW1lbnQpOwotICAgIG9ic2VydmVGcmFtZShkb2N1bWVudC5m
cmFtZSgpKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkKQEAgLTQ3NiwxNyArNDc1LDEw
IEBAIHZvaWQgRE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCgpCiAgICAgUmVmPERPTVdpbmRvdz4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICB3aWxsRGVzdHJveURvY3VtZW50SW5GcmFtZSgp
OwotICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKICAgICBy
ZXNldERPTVdpbmRvd1Byb3BlcnRpZXMoKTsKICAgICBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFt
ZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyh0aGlzKTsKIH0KIAotdm9pZCBET01XaW5kb3c6
OndpbGxEZXRhY2hQYWdlKCkKLXsKLSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCgqbV9mcmFtZSwgdGhpcyk7Ci19
Ci0KIHZvaWQgRE9NV2luZG93Ojp3aWxsRGVzdHJveUNhY2hlZEZyYW1lKCkKIHsKICAgICAvLyBJ
dCBpcyBuZWNlc3NhcnkgdG8gY29weSBtX3Byb3BlcnRpZXMgdG8gYSBzZXBhcmF0ZSB2ZWN0b3Ig
YmVjYXVzZSB0aGUgRE9NV2luZG93UHJvcGVydGllcyBtYXkKQEAgLTUxNSw4ICs1MDcsNiBAQCB2
b2lkIERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyYW1lKCkKIAogICAgIGlmICht
X3BlcmZvcm1hbmNlKQogICAgICAgICBtX3BlcmZvcm1hbmNlLT5jbGVhclJlc291cmNlVGltaW5n
cygpOwotCi0gICAgZGV0YWNoRnJvbUZyYW1lKCk7CiB9CiAKICNpZiBFTkFCTEUoR0FNRVBBRCkK
QEAgLTU4MSw3ICs1NzEsNyBAQCB2b2lkIERPTVdpbmRvdzo6cmVjb25uZWN0RE9NV2luZG93UHJv
cGVydGllcygpCiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNvcHkgbV9wcm9wZXJ0aWVzIHRv
IGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2UgdGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgbWF5CiAg
ICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGZyb20gdGhlIERPTVdpbmRvdyBhcyBhIHJlc3Vs
dCBvZiB0aGUgY2FsbCB0byByZWNvbm5lY3RGcm9tUGFnZUNhY2hlLgogICAgIGZvciAoYXV0byYg
cHJvcGVydHkgOiBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVzKSkKLSAgICAgICAgcHJvcGVydHkt
PnJlY29ubmVjdEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihtX2ZyYW1lKTsKKyAgICAgICAg
cHJvcGVydHktPnJlY29ubmVjdEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihmcmFtZSgpKTsK
IH0KIAogdm9pZCBET01XaW5kb3c6OnJlc2V0RE9NV2luZG93UHJvcGVydGllcygpCkBAIC02MTAs
NyArNjAwLDggQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0RE9NV2luZG93UHJvcGVydGllcygpCiAK
IGJvb2wgRE9NV2luZG93Ojppc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09
IHRoaXM7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgPT0gdGhpczsKIH0KIAogQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5JiBET01XaW5kb3c6OmVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3RyeSgp
CkBAIC02MzQsNyArNjI1LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBz
ZWxlY3RvclF1ZXJ5SW5GcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmkKIAogRXhjZXB0aW9u
T3I8UmVmPE5vZGVMaXN0Pj4gRE9NV2luZG93Ojpjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxh
dFRyZWUoTm9kZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzKQogewotICAgIGF1dG8g
cXVlcnlPckV4Y2VwdGlvbiA9IHNlbGVjdG9yUXVlcnlJbkZyYW1lKG1fZnJhbWUsIHNlbGVjdG9y
cyk7CisgICAgYXV0byBxdWVyeU9yRXhjZXB0aW9uID0gc2VsZWN0b3JRdWVyeUluRnJhbWUoZnJh
bWUoKSwgc2VsZWN0b3JzKTsKICAgICBpZiAocXVlcnlPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIHF1ZXJ5T3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwog
CkBAIC02NTQsNyArNjQ1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPE5vZGVMaXN0Pj4gRE9NV2luZG93
Ojpjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUoTm9kZSYgc2MKIAogRXhjZXB0aW9u
T3I8UmVmUHRyPEVsZW1lbnQ+PiBET01XaW5kb3c6Om1hdGNoaW5nRWxlbWVudEluRmxhdFRyZWUo
Tm9kZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzKQogewotICAgIGF1dG8gcXVlcnlP
ckV4Y2VwdGlvbiA9IHNlbGVjdG9yUXVlcnlJbkZyYW1lKG1fZnJhbWUsIHNlbGVjdG9ycyk7Cisg
ICAgYXV0byBxdWVyeU9yRXhjZXB0aW9uID0gc2VsZWN0b3JRdWVyeUluRnJhbWUoZnJhbWUoKSwg
c2VsZWN0b3JzKTsKICAgICBpZiAocXVlcnlPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIHF1ZXJ5T3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC02
NzUsMTAgKzY2NiwxMSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RWxlbWVudD4+IERPTVdpbmRvdzo6
bWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJlZShOb2RlJiBzY29wZSwgYwogCiBpbnQgRE9NV2luZG93
OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBtX2ZyYW1lLT5vcmllbnRhdGlvbigpOworICAgIHJldHVybiBmcmFtZS0+
b3JpZW50YXRpb24oKTsKIH0KIAogI2VuZGlmCkBAIC03NjksNyArNzYxLDggQEAgUGFnZUNvbnNv
bGVDbGllbnQqIERPTVdpbmRvdzo6Y29uc29sZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0N1cnJl
bnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIG1fZnJhbWUtPnBhZ2UoKSA/ICZtX2ZyYW1lLT5wYWdlKCktPmNvbnNvbGUoKSA6IG51bGxw
dHI7CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZS0+
cGFnZSgpID8gJmZyYW1lLT5wYWdlKCktPmNvbnNvbGUoKSA6IG51bGxwdHI7CiB9CiAKIERPTUFw
cGxpY2F0aW9uQ2FjaGUqIERPTVdpbmRvdzo6YXBwbGljYXRpb25DYWNoZSgpCkBAIC04MzIsMTAg
KzgyNSwxMSBAQCBWaXN1YWxWaWV3cG9ydCogRE9NV2luZG93Ojp2aXN1YWxWaWV3cG9ydCgpCiAK
IGJvb2wgRE9NV2luZG93OjpzaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGZy
YW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTg1NCw3ICs4NDgsNyBAQCBXZWJLaXROYW1lc3BhY2UqIERPTVdpbmRvdzo6d2Via2l0TmFtZXNw
YWNlKCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGF1dG8qIHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fd2Via2l0TmFtZXNwYWNlKQpAQCAtOTcxLDcgKzk2
NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGluY3VtCiAgICAgYXV0byogdGltZXIgPSBuZXcgUG9z
dE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBXVEZN
b3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNr
VHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRlKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCpmcmFtZSgpLCAq
dGltZXIsIHN0YXRlKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC05ODEsNiArOTc1LDcgQEAg
dm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyJiB0
aW1lcikKICAgICBpZiAoIWRvY3VtZW50KCkgfHwgIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CiAgICAgaWYgKGF1dG8qIGludGVuZGVkVGFyZ2V0T3JpZ2luID0gdGltZXIudGFyZ2V0T3JpZ2lu
KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdpbiBub3cgc2luY2UgdGhlIHRhcmdl
dCBkb2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB0aW1lciB3YXMgc2NoZWR1bGVk
LgogICAgICAgICBpZiAoIWludGVuZGVkVGFyZ2V0T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9y
dChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewpAQCAtOTkyLDE2ICs5ODcsMTYgQEAg
dm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyJiB0
aW1lcikKICAgICAgICAgICAgICAgICAgICAgcGFnZUNvbnNvbGUtPmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxQ
b3N0TWVzc2FnZSgqbV9mcmFtZSwgdGltZXIpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGYWlsUG9zdE1lc3NhZ2UoKmZyYW1lLCB0aW1lcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEaXNwYXRjaFBvc3RNZXNzYWdlKCptX2ZyYW1lLCB0aW1lcik7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hQb3N0TWVzc2FnZSgqZnJhbWUsIHRpbWVy
KTsKIAogICAgIGRpc3BhdGNoRXZlbnQodGltZXIuZXZlbnQoKmRvY3VtZW50KCkpKTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZSgqbV9mcmFt
ZSwgdGltZXIpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0
TWVzc2FnZSgqZnJhbWUsIHRpbWVyKTsKIH0KIAogRE9NU2VsZWN0aW9uKiBET01XaW5kb3c6Omdl
dFNlbGVjdGlvbigpCkBAIC0xMDE1LDEwICsxMDEwLDExIEBAIERPTVNlbGVjdGlvbiogRE9NV2lu
ZG93OjpnZXRTZWxlY3Rpb24oKQogCiBFbGVtZW50KiBET01XaW5kb3c6OmZyYW1lRWxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUtPm93bmVyRWxl
bWVudCgpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6Zm9jdXMoRE9NV2luZG93JiBpbmN1bWJlbnRX
aW5kb3cpCkBAIC0xMDI5LDQ1ICsxMDI1LDQ2IEBAIHZvaWQgRE9NV2luZG93Ojpmb2N1cyhET01X
aW5kb3cmIGluY3VtYmVudFdpbmRvdykKIAogdm9pZCBET01XaW5kb3c6OmZvY3VzKGJvb2wgYWxs
b3dGb2N1cykKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgaWYgKCFmcmFtZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIFBhZ2Uq
IHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhbGxvd0ZvY3VzID0gYWxsb3dGb2N1cyB8fCBXaW5kb3dGb2N1c0FsbG93ZWRJbmRp
Y2F0b3I6OndpbmRvd0ZvY3VzQWxsb3dlZCgpIHx8ICFtX2ZyYW1lLT5zZXR0aW5ncygpLndpbmRv
d0ZvY3VzUmVzdHJpY3RlZCgpOworICAgIGFsbG93Rm9jdXMgPSBhbGxvd0ZvY3VzIHx8IFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvcjo6d2luZG93Rm9jdXNBbGxvd2VkKCkgfHwgIWZyYW1lKCkt
PnNldHRpbmdzKCkud2luZG93Rm9jdXNSZXN0cmljdGVkKCk7CiAKICAgICAvLyBJZiB3ZSdyZSBh
IHRvcCBsZXZlbCB3aW5kb3csIGJyaW5nIHRoZSB3aW5kb3cgdG8gdGhlIGZyb250LgotICAgIGlm
IChtX2ZyYW1lLT5pc01haW5GcmFtZSgpICYmIGFsbG93Rm9jdXMpCisgICAgaWYgKGZyYW1lKCkt
PmlzTWFpbkZyYW1lKCkgJiYgYWxsb3dGb2N1cykKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuZm9j
dXMoKTsKIAotICAgIGlmICghbV9mcmFtZSkKKyAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIENsZWFyIHRoZSBjdXJyZW50IGZyYW1lJ3MgZm9jdXNlZCBub2RlIGlm
IGEgbmV3IGZyYW1lIGlzIGFib3V0IHRvIGJlIGZvY3VzZWQuCiAgICAgRnJhbWUqIGZvY3VzZWRG
cmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpOwotICAgIGlmIChm
b2N1c2VkRnJhbWUgJiYgZm9jdXNlZEZyYW1lICE9IG1fZnJhbWUpCisgICAgaWYgKGZvY3VzZWRG
cmFtZSAmJiBmb2N1c2VkRnJhbWUgIT0gZnJhbWUoKSkKICAgICAgICAgZm9jdXNlZEZyYW1lLT5k
b2N1bWVudCgpLT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKIAotICAgIC8vIHNldEZvY3Vz
ZWRFbGVtZW50IG1heSBjbGVhciBtX2ZyYW1lLCBzbyByZWNoZWNrIGJlZm9yZSB1c2luZyBpdC4K
LSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZm9jdXNE
b2N1bWVudFZpZXcoKTsKKyAgICAvLyBzZXRGb2N1c2VkRWxlbWVudCBtYXkgY2xlYXIgZnJhbWUo
KSwgc28gcmVjaGVjayBiZWZvcmUgdXNpbmcgaXQuCisgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhp
cy0+ZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmZvY3VzRG9jdW1lbnRW
aWV3KCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpibHVyKCkKIHsKLSAgICBpZiAoIW1fZnJhbWUp
CisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgUGFn
ZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS53aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKSkK
KyAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkud2luZG93Rm9jdXNSZXN0cmljdGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAo
IWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBwYWdlLT5jaHJv
bWUoKS51bmZvY3VzKCk7CkBAIC0xMDc1LDIxICsxMDcyLDIyIEBAIHZvaWQgRE9NV2luZG93Ojpi
bHVyKCkKIAogdm9pZCBET01XaW5kb3c6OmNsb3NlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAg
ICBpZiAoIWRvY3VtZW50LmNhbk5hdmlnYXRlKG1fZnJhbWUpKQorICAgIGlmICghZG9jdW1lbnQu
Y2FuTmF2aWdhdGUoZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBjbG9zZSgpOwogfQog
CiB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoKQogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRv
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoIWZyYW1lLT5pc01haW5GcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIShwYWdlLT5vcGVuZWRCeURPTSgpIHx8IHBh
Z2UtPmJhY2tGb3J3YXJkKCkuY291bnQoKSA8PSAxKSkgewpAQCAtMTA5Nyw3ICsxMDk1LDcgQEAg
dm9pZCBET01XaW5kb3c6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9mcmFtZS0+bG9hZGVyKCkuc2hvdWxkQ2xvc2UoKSkKKyAgICBpZiAoIWZyYW1lLT5sb2Fk
ZXIoKS5zaG91bGRDbG9zZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBwYWdlLT5zZXRJc0Ns
b3NpbmcoKTsKQEAgLTExMDYsMTAgKzExMDQsMTEgQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKCkK
IAogdm9pZCBET01XaW5kb3c6OnByaW50KCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0
byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTEx
MTgsMjcgKzExMTcsMjkgQEAgdm9pZCBET01XaW5kb3c6OnByaW50KCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5pc0xvYWRpbmcoKSkgeworICAgIGlmIChmcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+aXNMb2FkaW5nKCkpIHsKICAgICAgICAgbV9zaG91bGRQcmludFdoZW5GaW5p
c2hlZExvYWRpbmcgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fc2hvdWxk
UHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nID0gZmFsc2U7Ci0gICAgcGFnZS0+Y2hyb21lKCkucHJp
bnQoKm1fZnJhbWUpOworICAgIHBhZ2UtPmNocm9tZSgpLnByaW50KCpmcmFtZSk7CiB9CiAKIHZv
aWQgRE9NV2luZG93OjpzdG9wKCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFdlIG11c3QgY2hlY2sgd2hldGhlciB0aGUgbG9hZCBpcyBjb21wbGV0ZSBhc3luY2hy
b25vdXNseSwgYmVjYXVzZSB3ZSBtaWdodCBzdGlsbCBiZSBwYXJzaW5nCiAgICAgLy8gdGhlIGRv
Y3VtZW50IHVudGlsIHRoZSBjYWxsc3RhY2sgdW53aW5kcy4KLSAgICBtX2ZyYW1lLT5sb2FkZXIo
KS5zdG9wRm9yVXNlckNhbmNlbCh0cnVlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkuc3RvcEZvclVz
ZXJDYW5jZWwodHJ1ZSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9j
dW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKQEAgLTExNDYsNyArMTE0Nyw3
IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMTU1LDE3ICsxMTU2LDE4IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
IHBhZ2UtPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiAj
ZW5kaWYKIAotICAgIHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFTY3JpcHRBbGVydCgqbV9mcmFtZSwg
bWVzc2FnZSk7CisgICAgcGFnZS0+Y2hyb21lKCkucnVuSmF2YVNjcmlwdEFsZXJ0KCpmcmFtZSwg
bWVzc2FnZSk7CiB9CiAKIGJvb2wgRE9NV2luZG93Ojpjb25maXJtKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBp
ZiAoZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKQEAgLTExNzMsNyAr
MTE3NSw3IEBAIGJvb2wgRE9NV2luZG93Ojpjb25maXJtKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExODIsMTcgKzExODQsMTggQEAgYm9vbCBE
T01XaW5kb3c6OmNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBwYWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS5yZXF1ZXN0UG9pbnRlclVubG9jaygpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCkucnVuSmF2YVNjcmlwdENvbmZpcm0oKm1fZnJhbWUsIG1lc3NhZ2UpOworICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS5ydW5KYXZhU2NyaXB0Q29uZmlybSgqZnJhbWUsIG1lc3NhZ2UpOwog
fQogCiBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94TW9kYWxz
KSkgewpAQCAtMTIwMCw3ICsxMjAzLDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6cHJvbXB0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xMjA5LDEzICsxMjEyLDEzIEBAIFN0cmluZyBET01X
aW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIGZyYW1lLT5kb2N1bWVudCgp
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBw
YWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS5yZXF1ZXN0UG9pbnRlclVubG9jaygpOwogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgcmV0dXJuVmFsdWU7Ci0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLnJ1
bkphdmFTY3JpcHRQcm9tcHQoKm1fZnJhbWUsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgcmV0dXJu
VmFsdWUpKQorICAgIGlmIChwYWdlLT5jaHJvbWUoKS5ydW5KYXZhU2NyaXB0UHJvbXB0KCpmcmFt
ZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCByZXR1cm5WYWx1ZSkpCiAgICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTEyMzQsNyArMTIzNyw3IEBA
IGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGNhc2VTZW5z
aXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIG9wdGlvbnMuYWRkKENhc2VJbnNlbnNp
dGl2ZSk7CiAgICAgaWYgKHdyYXApCiAgICAgICAgIG9wdGlvbnMuYWRkKFdyYXBBcm91bmQpOwot
ICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucyk7
CisgICAgcmV0dXJuIGZyYW1lKCktPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25z
KTsKIH0KIAogYm9vbCBET01XaW5kb3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CkBAIC0x
MjQ3LDEwICsxMjUwLDExIEBAIGludCBET01XaW5kb3c6Om91dGVySGVpZ2h0KCkgY29uc3QKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIDA7CiAjZWxzZQotICAgIGlmICghbV9mcmFtZSkK
KyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKQEAgLTEyNjMsMTAgKzEyNjcsMTEgQEAgaW50IERPTVdpbmRvdzo6b3V0ZXJXaWR0aCgp
IGNvbnN0CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHJldHVybiAwOwogI2Vsc2UKLSAgICBpZiAo
IW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xMjc2LDE0ICsxMjgxLDE1IEBAIGludCBET01XaW5kb3c6Om91
dGVyV2lkdGgoKSBjb25zdAogCiBpbnQgRE9NV2luZG93Ojppbm5lckhlaWdodCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZvcmNlIGVub3VnaCBs
YXlvdXQgaW4gdGhlIHBhcmVudCBkb2N1bWVudCB0byBlbnN1cmUgdGhhdCB0aGUgRnJhbWVWaWV3
IGhhcyBiZWVuIHJlc2l6ZWQuCiAgICAgaWYgKGF1dG8qIGZyYW1lRWxlbWVudCA9IHRoaXMtPmZy
YW1lRWxlbWVudCgpKQogICAgICAgICBmcmFtZUVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKCpmcmFtZUVsZW1lbnQsIEhlaWdodERpbWVuc2lvbnND
aGVjayk7CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiAwOwogCkBAIC0xMjkyLDE0ICsxMjk4LDE1IEBAIGludCBET01XaW5kb3c6OmlubmVySGVp
Z2h0KCkgY29uc3QKIAogaW50IERPTVdpbmRvdzo6aW5uZXJXaWR0aCgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZvcmNlIGVub3VnaCBsYXlvdXQg
aW4gdGhlIHBhcmVudCBkb2N1bWVudCB0byBlbnN1cmUgdGhhdCB0aGUgRnJhbWVWaWV3IGhhcyBi
ZWVuIHJlc2l6ZWQuCiAgICAgaWYgKGF1dG8qIGZyYW1lRWxlbWVudCA9IHRoaXMtPmZyYW1lRWxl
bWVudCgpKQogICAgICAgICBmcmFtZUVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWZE
aW1lbnNpb25zT3V0T2ZEYXRlKCpmcmFtZUVsZW1lbnQsIFdpZHRoRGltZW5zaW9uc0NoZWNrKTsK
IAotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcq
IHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTEzMDgsMTAgKzEzMTUsMTEgQEAgaW50IERPTVdpbmRvdzo6aW5uZXJXaWR0aCgpIGNv
bnN0CiAKIGludCBET01XaW5kb3c6OnNjcmVlblgoKSBjb25zdAogewotICAgIGlmICghbV9mcmFt
ZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTEzMjAsMTAgKzEzMjgsMTEgQEAgaW50IERPTVdpbmRvdzo6c2NyZWVuWCgp
IGNvbnN0CiAKIGludCBET01XaW5kb3c6OnNjcmVlblkoKSBjb25zdAogewotICAgIGlmICghbV9m
cmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwor
ICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKQEAgLTEzMzIsMTAgKzEzNDEsMTEgQEAgaW50IERPTVdpbmRvdzo6c2NyZWVu
WSgpIGNvbnN0CiAKIGludCBET01XaW5kb3c6OnNjcm9sbFgoKSBjb25zdAogewotICAgIGlmICgh
bV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMzQzLDE3ICsxMzUzLDE4IEBAIGludCBET01X
aW5kb3c6OnNjcm9sbFgoKSBjb25zdAogICAgIGlmICghc2Nyb2xsWCkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRv
Q1NTVW5pdHModmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpLngoKSk7CiB9CiAKIGludCBE
T01XaW5kb3c6OnNjcm9sbFkoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRv
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgRnJhbWVW
aWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC0xMzYxLDE0ICsxMzcyLDE0IEBAIGludCBET01XaW5kb3c6OnNjcm9sbFkoKSBj
b25zdAogICAgIGlmICghc2Nyb2xsWSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKICAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+Y29u
dGVudHNTY3JvbGxQb3NpdGlvbigpLnkoKSk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpjbG9zZWQo
KSBjb25zdAogewotICAgIHJldHVybiAhbV9mcmFtZTsKKyAgICByZXR1cm4gIWZyYW1lKCk7CiB9
CiAKIHVuc2lnbmVkIERPTVdpbmRvdzo6bGVuZ3RoKCkgY29uc3QKQEAgLTEzNzYsNzkgKzEzODcs
NzUgQEAgdW5zaWduZWQgRE9NV2luZG93OjpsZW5ndGgoKSBjb25zdAogICAgIGlmICghaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1fZnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCk7CisgICAgcmV0dXJuIGZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCk7CiB9CiAKIFN0cmluZyBET01XaW5kb3c6Om5hbWUo
KSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
cmV0dXJuIG1fZnJhbWUtPnRyZWUoKS5uYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLT50cmVlKCku
bmFtZSgpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJhbWUtPnRyZWUo
KS5zZXROYW1lKHN0cmluZyk7CisgICAgZnJhbWUtPnRyZWUoKS5zZXROYW1lKHN0cmluZyk7CiB9
CiAKIHZvaWQgRE9NV2luZG93OjpzZXRTdGF0dXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIAogewog
ICAgIG1fc3RhdHVzID0gc3RyaW5nOwogCi0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOyAvLyBDbGllbnQgY2FsbHMgc2hvdWxkbid0IGJlIG1hZGUg
d2hlbiB0aGUgZnJhbWUgaXMgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgotICAgIHBhZ2UtPmNocm9t
ZSgpLnNldFN0YXR1c2JhclRleHQoKm1fZnJhbWUsIG1fc3RhdHVzKTsKLX0KLQotdm9pZCBET01X
aW5kb3c6OmRldGFjaEZyb21GcmFtZSgpCi17Ci0gICAgb2JzZXJ2ZUZyYW1lKG51bGxwdHIpOwor
ICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3Qg
YmUgbWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCisgICAgcGFn
ZS0+Y2hyb21lKCkuc2V0U3RhdHVzYmFyVGV4dCgqZnJhbWUsIG1fc3RhdHVzKTsKIH0KIAotdm9p
ZCBET01XaW5kb3c6OmF0dGFjaFRvRnJhbWUoRnJhbWUmIGZyYW1lKQotewotICAgIG9ic2VydmVG
cmFtZSgmZnJhbWUpOwotfQotICAgIAogdm9pZCBET01XaW5kb3c6OnNldERlZmF1bHRTdGF0dXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIAogewogICAgIG1fZGVmYXVsdFN0YXR1cyA9IHN0cmluZzsK
IAotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsg
Ly8gQ2xpZW50IGNhbGxzIHNob3VsZG4ndCBiZSBtYWRlIHdoZW4gdGhlIGZyYW1lIGlzIGluIGlu
Y29uc2lzdGVudCBzdGF0ZS4KLSAgICBwYWdlLT5jaHJvbWUoKS5zZXRTdGF0dXNiYXJUZXh0KCpt
X2ZyYW1lLCBtX2RlZmF1bHRTdGF0dXMpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7
IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUgbWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBp
bmNvbnNpc3RlbnQgc3RhdGUuCisgICAgcGFnZS0+Y2hyb21lKCkuc2V0U3RhdHVzYmFyVGV4dCgq
ZnJhbWUsIG1fZGVmYXVsdFN0YXR1cyk7CiB9CiAKIFdpbmRvd1Byb3h5KiBET01XaW5kb3c6OnNl
bGYoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuICZmcmFtZS0+d2lu
ZG93UHJveHkoKTsKIH0KIAogV2luZG93UHJveHkqIERPTVdpbmRvdzo6b3BlbmVyKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogb3Bl
bmVyRnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS5vcGVuZXIoKTsKKyAgICBhdXRvKiBvcGVuZXJG
cmFtZSA9IGZyYW1lLT5sb2FkZXIoKS5vcGVuZXIoKTsKICAgICBpZiAoIW9wZW5lckZyYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ1NywzMSArMTQ2NCwzMyBAQCBXaW5kb3dQ
cm94eSogRE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAogCiB2b2lkIERPTVdpbmRvdzo6ZGlzb3du
T3BlbmVyKCkKIHsKLSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCku
c2V0T3BlbmVyKG51bGxwdHIpOworICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkp
CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIobnVsbHB0cik7CiB9CiAKIFdpbmRv
d1Byb3h5KiBET01XaW5kb3c6OnBhcmVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIHBhcmVudEZyYW1lID0gbV9mcmFtZS0+dHJl
ZSgpLnBhcmVudCgpOworICAgIGF1dG8qIHBhcmVudEZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJl
bnQoKTsKICAgICBpZiAocGFyZW50RnJhbWUpCiAgICAgICAgIHJldHVybiAmcGFyZW50RnJhbWUt
PndpbmRvd1Byb3h5KCk7CiAKLSAgICByZXR1cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5KCk7Cisg
ICAgcmV0dXJuICZmcmFtZS0+d2luZG93UHJveHkoKTsKIH0KIAogV2luZG93UHJveHkqIERPTVdp
bmRvdzo6dG9wKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAgYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCisgICAgaWYgKCFmcmFtZS0+cGFnZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAmbV9mcmFtZS0+dHJlZSgpLnRv
cCgpLndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuICZmcmFtZS0+dHJlZSgpLnRvcCgpLndpbmRv
d1Byb3h5KCk7CiB9CiAKIFN0cmluZyBET01XaW5kb3c6Om9yaWdpbigpIGNvbnN0CkBAIC0xNTE5
LDcgKzE1MjgsOCBAQCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENT
U1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZwogICAgIGlmIChwc2V1ZG9UeXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VW5rbm93biAmJiAhcHNldWRvRWxlbWVudC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+c3R5bGVTY29wZSgpLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOworICAgIGF1dG8qIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLmZs
dXNoUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBTdHls
ZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlczsKICAgICBpZiAoIWF1dGhvck9ubHkpCkBAIC0xNTI3
LDExICsxNTM3LDExIEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVk
Q1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAKICAgICBQc2V1ZG9JZCBw
c2V1ZG9JZCA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChwc2V1ZG9UeXBlKTsKIAotICAgIGF1dG8g
bWF0Y2hlZFJ1bGVzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLnJlc29sdmVy
KCkucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIHJ1bGVzVG9J
bmNsdWRlKTsKKyAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNjb3BlKCkucmVzb2x2ZXIoKS5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBw
c2V1ZG9JZCwgcnVsZXNUb0luY2x1ZGUpOwogICAgIGlmIChtYXRjaGVkUnVsZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9
IG1fZnJhbWUtPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVz
RGlzYWJsZWQoKTsKKyAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW4gPSBmcmFtZS0+c2V0dGluZ3Mo
KS5jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCgpOwogCiAgICAg
UmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKQEAgLTE1Nzgs
MTAgKzE1ODgsMTEgQEAgUmVmUHRyPFdlYktpdFBvaW50PiBET01XaW5kb3c6OndlYmtpdENvbnZl
cnRQb2ludEZyb21QYWdlVG9Ob2RlKE5vZGUqIG5vZGUsIGNvbnMKIAogZG91YmxlIERPTVdpbmRv
dzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQorICAgIGF1
dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gMC4wOwogCi0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwLjA7
CiAKQEAgLTE2MDAsNyArMTYxMSw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBT
Y3JvbGxUb09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiAKICAgICBkb2N1bWVudCgpLT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSgpLT52aWV3KCk7
CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKQEAgLTE2MjAsNyArMTYzMSw3IEBA
IHZvaWQgRE9NV2luZG93OjpzY3JvbGxUbyhjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMs
IFNjcm9sbENsYW1waW5nKSBjb25zdAogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBt
X2ZyYW1lLT52aWV3KCk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGZyYW1lKCktPnZp
ZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYzOSwxNCArMTY1
MCwxNSBAQCB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBv
cHRpb25zLCBTY3JvbGxDbGFtcGluZykgY29uc3QKIAogYm9vbCBET01XaW5kb3c6OmFsbG93ZWRU
b0NoYW5nZVdpbmRvd0dlb21ldHJ5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUpCisgICAg
YXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkKKyAgICBpZiAoIWZyYW1lLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCisgICAgaWYgKCFmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIC8vIFByZXZlbnQgd2ViIGNvbnRlbnQgZnJvbSB0cmlja2luZyB0aGUgdXNlciBp
bnRvIGluaXRpYXRpbmcgYSBkcmFnLgotICAgIGlmIChtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS5t
b3VzZVByZXNzZWQoKSkKKyAgICBpZiAoZnJhbWUtPmV2ZW50SGFuZGxlcigpLm1vdXNlUHJlc3Nl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjU2
LDcgKzE2NjgsNyBAQCB2b2lkIERPTVdpbmRvdzo6bW92ZUJ5KGZsb2F0IHgsIGZsb2F0IHkpIGNv
bnN0CiAgICAgaWYgKCFhbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGF1dG8qIHBh
Z2UgPSBmcmFtZSgpLT5wYWdlKCk7CiAgICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCku
d2luZG93UmVjdCgpOwogICAgIEZsb2F0UmVjdCB1cGRhdGUgPSBmcjsKICAgICB1cGRhdGUubW92
ZSh4LCB5KTsKQEAgLTE2NjgsNyArMTY4MCw3IEBAIHZvaWQgRE9NV2luZG93Ojptb3ZlVG8oZmxv
YXQgeCwgZmxvYXQgeSkgY29uc3QKICAgICBpZiAoIWFsbG93ZWRUb0NoYW5nZVdpbmRvd0dlb21l
dHJ5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgYXV0byogcGFnZSA9IGZyYW1lKCktPnBhZ2UoKTsKICAgICBGbG9hdFJlY3QgZnIg
PSBwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRSZWN0IHNyID0gc2NyZWVu
QXZhaWxhYmxlUmVjdChwYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOwogICAgIGZyLnNldExvY2F0
aW9uKHNyLmxvY2F0aW9uKCkpOwpAQCAtMTY4Miw3ICsxNjk0LDcgQEAgdm9pZCBET01XaW5kb3c6
OnJlc2l6ZUJ5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgaWYgKCFhbGxvd2VkVG9DaGFu
Z2VXaW5kb3dHZW9tZXRyeSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCk7CiAgICAg
RmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwogICAgIEZsb2F0U2l6
ZSBkZXN0ID0gZnIuc2l6ZSgpICsgRmxvYXRTaXplKHgsIHkpOwogICAgIEZsb2F0UmVjdCB1cGRh
dGUoZnIubG9jYXRpb24oKSwgZGVzdCk7CkBAIC0xNjk0LDcgKzE3MDYsNyBAQCB2b2lkIERPTVdp
bmRvdzo6cmVzaXplVG8oZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgY29uc3QKICAgICBpZiAo
IWFsbG93ZWRUb0NoYW5nZVdpbmRvd0dlb21ldHJ5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkt
PnBhZ2UoKTsKICAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7
CiAgICAgRmxvYXRTaXplIGRlc3QgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgRmxv
YXRSZWN0IHVwZGF0ZShmci5sb2NhdGlvbigpLCBkZXN0KTsKQEAgLTE3MjEsMTYgKzE3MzMsMTYg
QEAgRXhjZXB0aW9uT3I8aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2MKIHZvaWQgRE9NV2luZG93OjpjbGVhclRpbWVvdXQo
aW50IHRpbWVvdXRJZCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKG1fZnJhbWUpIHsK
LSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBp
ZiAoYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAodGltZW91dElkID4gMCAmJiBk
b2N1bWVudCkgewogICAgICAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gZG9jdW1lbnQtPmZpbmRU
aW1lb3V0KHRpbWVvdXRJZCk7CiAgICAgICAgICAgICBpZiAodGltZXIgJiYgV2ViVGhyZWFkQ29u
dGFpbnNPYnNlcnZlZENvbnRlbnRNb2RpZmllcih0aW1lcikpIHsKICAgICAgICAgICAgICAgICBX
ZWJUaHJlYWRSZW1vdmVPYnNlcnZlZENvbnRlbnRNb2RpZmllcih0aW1lcik7CiAKICAgICAgICAg
ICAgICAgICBpZiAoIVdlYlRocmVhZENvdW50T2ZPYnNlcnZlZENvbnRlbnRNb2RpZmllcnMoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm9ic2VydmVk
Q29udGVudENoYW5nZSgqbV9mcmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLm9ic2VydmVkQ29udGVudENoYW5nZSgqZnJhbWUpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTgzMywxMyArMTg0NSwxNCBAQCBz
dGF0aWMgdm9pZCBkaWRBZGRTdG9yYWdlRXZlbnRMaXN0ZW5lcihET01XaW5kb3cmIHdpbmRvdykK
IAogYm9vbCBET01XaW5kb3c6OmlzU2FtZVNlY3VyaXR5T3JpZ2luQXNNYWluRnJhbWUoKSBjb25z
dAogewotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8ICFkb2N1bWVudCgp
KQorICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+cGFnZSgpIHx8ICFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRG9jdW1lbnQqIG1haW5GcmFtZURvY3Vt
ZW50ID0gbV9mcmFtZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogbWFp
bkZyYW1lRG9jdW1lbnQgPSBmcmFtZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKIAogICAgIGlm
IChtYWluRnJhbWVEb2N1bWVudCAmJiBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkFj
Y2VzcyhtYWluRnJhbWVEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMjEzMiw3ICsyMTQ1LDcgQEAgdm9pZCBET01XaW5kb3c6OmZpbmlzaGVkTG9h
ZGluZygpCiB7CiAgICAgaWYgKG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nKSB7CiAg
ICAgICAgIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nID0gZmFsc2U7Ci0gICAgICAg
IGlmIChtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1l
bnRFcnJvcigpLmlzTnVsbCgpKQorICAgICAgICBpZiAoZnJhbWUoKS0+bG9hZGVyKCkuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKSkKICAgICAgICAg
ICAgIHByaW50KCk7CiAgICAgfQogfQpAQCAtMjE0Niw3ICsyMTU5LDggQEAgdm9pZCBET01XaW5k
b3c6OnNldExvY2F0aW9uKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0
V2luZG93LCBjb24KICAgICBpZiAoIWFjdGl2ZURvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWFjdGl2ZURvY3VtZW50LT5jYW5OYXZpZ2F0ZShtX2ZyYW1lKSkKKyAgICBhdXRv
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2
aWdhdGUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZmlyc3RGcmFtZSA9
IGZpcnN0V2luZG93LmZyYW1lKCk7CkBAIC0yMTYzLDcgKzIxNzcsNyBAQCB2b2lkIERPTVdpbmRv
dzo6c2V0TG9jYXRpb24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RX
aW5kb3csIGNvbgogICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHdlIGFyZSBw
cm9jZXNzaW5nIGEgdXNlciBnZXN0dXJlLgogICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0g
KGxvY2tpbmcgIT0gTG9ja0hpc3RvcnlCYXNlZE9uR2VzdHVyZVN0YXRlIHx8ICFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpID8gTG9ja0hpc3Rvcnk6OlllcyA6
IExvY2tIaXN0b3J5OjpObzsKICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2Fy
ZExpc3QgPSAobG9ja2luZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUpID8gTG9j
a0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgbV9m
cmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoKmFjdGl2
ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwKKyAgICBmcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoKmFjdGl2ZURvY3Vt
ZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwKICAgICAgICAgLy8gRklYTUU6
IFdoYXQgaWYgYWN0aXZlRG9jdW1lbnQoKS0+ZnJhbWUoKSBpcyAwPwogICAgICAgICBjb21wbGV0
ZWRVUkwsIGFjdGl2ZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCksCiAgICAgICAgIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKQEAgLTIzMzcs
MTAgKzIzNTEsMTEgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRE9NV2luZG93
OjpvcGVuKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW4KICAgICB9CiAjZW5kaWYKIAor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZpcnN0V2luZG93LmFs
bG93UG9wVXAoKSkgewogICAgICAgICAvLyBCZWNhdXNlIEZyYW1lVHJlZTo6ZmluZEZyYW1lRm9y
TmF2aWdhdGlvbigpIHJldHVybnMgdHJ1ZSBmb3IgZW1wdHkgc3RyaW5ncywgd2UgbXVzdCBjaGVj
ayBmb3IgZW1wdHkgZnJhbWUgbmFtZXMuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWxsZWdpdGlt
YXRlIHdpbmRvdy5vcGVuKCkgY2FsbHMgd2l0aCBubyBuYW1lIHdpbGwgcGFzcyByaWdodCB0aHJv
dWdoIHRoZSBwb3B1cCBibG9ja2VyLgotICAgICAgICBpZiAoZnJhbWVOYW1lLmlzRW1wdHkoKSB8
fCAhbV9mcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUsIGFj
dGl2ZURvY3VtZW50KSkKKyAgICAgICAgaWYgKGZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgIWZyYW1l
LT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSwgYWN0aXZlRG9jdW1l
bnQpKQogICAgICAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07
CiAgICAgfQogCkBAIC0yMzQ4LDEyICsyMzYzLDEyIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5k
b3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
CiAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHdlIHNjaGVkdWxlIGEgbG9jYXRpb24gY2hhbmdlIHJp
Z2h0IG5vdyBhbmQgcmV0dXJuIGVhcmx5LgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG51bGxw
dHI7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZnJhbWVOYW1lLCAiX3RvcCIpKQot
ICAgICAgICB0YXJnZXRGcmFtZSA9ICZtX2ZyYW1lLT50cmVlKCkudG9wKCk7CisgICAgICAgIHRh
cmdldEZyYW1lID0gJmZyYW1lLT50cmVlKCkudG9wKCk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShmcmFtZU5hbWUsICJfcGFyZW50IikpIHsKLSAgICAgICAgaWYgKEZyYW1l
KiBwYXJlbnQgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkpCisgICAgICAgIGlmIChGcmFtZSog
cGFyZW50ID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKICAgICAgICAgICAgIHRhcmdldEZyYW1l
ID0gcGFyZW50OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YXJnZXRGcmFtZSA9IG1fZnJh
bWU7CisgICAgICAgICAgICB0YXJnZXRGcmFtZSA9IGZyYW1lOwogICAgIH0KICAgICBpZiAodGFy
Z2V0RnJhbWUpIHsKICAgICAgICAgaWYgKCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUodGFy
Z2V0RnJhbWUpKQpAQCAtMjM3NSw3ICsyMzkwLDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRv
d1Byb3h5Pj4gRE9NV2luZG93OjpvcGVuKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW4K
ICAgICAgICAgcmV0dXJuICZ0YXJnZXRGcmFtZS0+d2luZG93UHJveHkoKTsKICAgICB9CiAKLSAg
ICBhdXRvIG5ld0ZyYW1lT3JFeGNlcHRpb24gPSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBmcmFt
ZU5hbWUsIHBhcnNlV2luZG93RmVhdHVyZXMod2luZG93RmVhdHVyZXNTdHJpbmcpLCBhY3RpdmVX
aW5kb3csICpmaXJzdEZyYW1lLCAqbV9mcmFtZSk7CisgICAgYXV0byBuZXdGcmFtZU9yRXhjZXB0
aW9uID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZnJhbWVOYW1lLCBwYXJzZVdpbmRvd0ZlYXR1
cmVzKHdpbmRvd0ZlYXR1cmVzU3RyaW5nKSwgYWN0aXZlV2luZG93LCAqZmlyc3RGcmFtZSwgKmZy
YW1lKTsKICAgICBpZiAobmV3RnJhbWVPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIG5ld0ZyYW1lT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC0y
MzkzLDcgKzI0MDgsOCBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgIGlmICghZmlyc3RG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKKyAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgYXV0byogcGFnZSA9IGZy
YW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0MDIs
MTAgKzI0MTgsMTAgQEAgdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWEKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmICghY2FuU2hvd01vZGFsRGlhbG9nKCptX2ZyYW1lKSB8fCAhZmlyc3RX
aW5kb3cuYWxsb3dQb3BVcCgpKQorICAgIGlmICghY2FuU2hvd01vZGFsRGlhbG9nKCpmcmFtZSkg
fHwgIWZpcnN0V2luZG93LmFsbG93UG9wVXAoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBkaWFsb2dGcmFtZU9yRXhjZXB0aW9uID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZW1wdHlB
dG9tKCksIHBhcnNlRGlhbG9nRmVhdHVyZXMoZGlhbG9nRmVhdHVyZXNTdHJpbmcsIHNjcmVlbkF2
YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKSksIGFjdGl2ZVdpbmRvdywgKmZpcnN0RnJhbWUs
ICptX2ZyYW1lLCBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOworICAgIGF1dG8gZGlhbG9nRnJhbWVP
ckV4Y2VwdGlvbiA9IGNyZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGVtcHR5QXRvbSgpLCBwYXJzZURp
YWxvZ0ZlYXR1cmVzKGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KGZy
YW1lLT52aWV3KCkpKSwgYWN0aXZlV2luZG93LCAqZmlyc3RGcmFtZSwgKmZyYW1lLCBwcmVwYXJl
RGlhbG9nRnVuY3Rpb24pOwogICAgIGlmIChkaWFsb2dGcmFtZU9yRXhjZXB0aW9uLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPEZyYW1lPiBkaWFsb2dGcmFtZSA9
IGRpYWxvZ0ZyYW1lT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CkBAIC0yNDI2LDQg
KzI0NDIsMTAgQEAgdm9pZCBET01XaW5kb3c6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOwogfQogCitG
cmFtZSogRE9NV2luZG93OjpmcmFtZSgpIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0
aGlzLT5kb2N1bWVudCgpOworICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgp
IDogbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKaW5kZXggN2FlODkxNWZjMzFmMDkzYTliOWJkZTg1MTM1YjE2YjcyYzE3NjJhMy4uNDFl
NTk4OTk3ODUzYzBjMTlmYTIyYmM1MzhkYWFiODY2MDBlOGI3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCkBAIC04OCwxMyArODgsMTEgQEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogZW51bSBT
ZXRMb2NhdGlvbkxvY2tpbmcgeyBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUsIExvY2tI
aXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0IH07CiBlbnVtIGNsYXNzIEluY2x1ZGVUYXJnZXRPcmln
aW4geyBObywgWWVzIH07CiAKLS8vIEZJWE1FOiBET01XaW5kb3cgc2hvdWxkbid0IHN1YmNsYXNz
IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBhbmQgaW5zdGVhZCBzaG91bGQgZ2V0IHRvIEZyYW1l
IHZpYSBpdHMgRG9jdW1lbnQuCiAvLyBGSVhNRTogUmVuYW1lIERPTVdpbmRvdyB0byBMb2NhbFdp
bmRvdyBhbmQgQWJzdHJhY3RET01XaW5kb3cgdG8gRE9NV2luZG93LgogY2xhc3MgRE9NV2luZG93
IGZpbmFsCiAgICAgOiBwdWJsaWMgQWJzdHJhY3RET01XaW5kb3cKICAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxET01XaW5kb3c+CiAgICAgLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIKLSAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1Ymxp
YyBCYXNlNjRVdGlsaXRpZXMKICAgICAsIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxET01XaW5kb3c+
IHsKIHB1YmxpYzoKQEAgLTExNyw2ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAgICAgdm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNw
ZW5zaW9uKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5h
bDsKKwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcm
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHBlbmRpbmdVbmxvYWRFdmVudExpc3Rl
bmVycygpIGNvbnN0OwpAQCAtMjAxLDggKzIwMSw2IEBAIHB1YmxpYzoKICAgICBXaW5kb3dQcm94
eSogcGFyZW50KCkgY29uc3Q7CiAgICAgV2luZG93UHJveHkqIHRvcCgpIGNvbnN0OwogCi0gICAg
RnJhbWUqIGZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyOjpmcmFtZSgpOyB9Ci0KICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKICAgICAvLyBE
T00gTGV2ZWwgMiBBYnN0cmFjdFZpZXcgSW50ZXJmYWNlCkBAIC0zMzMsMTIgKzMzMSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJhbWUoKTsKICAgICB2b2lk
IHdpbGxEZXN0cm95Q2FjaGVkRnJhbWUoKTsKIAotICAgIHZvaWQgYXR0YWNoVG9GcmFtZShGcmFt
ZSYpOwotICAgIHZvaWQgZGV0YWNoRnJvbUZyYW1lKCk7Ci0KICAgICB2b2lkIGVuYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCk7CiAgICAgdm9pZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKIAor
ICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01X
aW5kb3coRG9jdW1lbnQmKTsKIApAQCAtMzUwLDkgKzM0Nyw2IEBAIHByaXZhdGU6CiAgICAgUGFn
ZSogcGFnZSgpOwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnkoKSBjb25z
dDsKIAotICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHdpbGxEZXRh
Y2hQYWdlKCkgZmluYWw7Ci0KICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4g
Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7
CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAK
</data>
<flag name="review"
          id="369182"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="369207"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>