<?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>121028</bug_id>
          
          <creation_ts>2013-09-09 03:29:10 -0700</creation_ts>
          <short_desc>Hide Document::renderer()</short_desc>
          <delta_ts>2013-09-09 09:49:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926639</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-09 03:29:10 -0700</bug_when>
    <thetext>Use Document::renderView() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926640</commentid>
    <comment_count>1</comment_count>
      <attachid>211024</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-09 03:31:46 -0700</bug_when>
    <thetext>Created attachment 211024
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926641</commentid>
    <comment_count>2</comment_count>
      <attachid>211024</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-09 03:33:30 -0700</bug_when>
    <thetext>Comment on attachment 211024
patch

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

A+, good patch, would review again!

&gt; Source/WebCore/dom/Document.h:-546
&gt; -    // FIXME: Remove this, callers that have a Document* should call renderView().
&gt; -    // Shadow the implementations on Node to provide faster access for documents.
&gt; -    RenderView* renderer() const { return m_renderView; }

Thanks for fixing my FIXME! :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926642</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-09 03:36:52 -0700</bug_when>
    <thetext>https://trac.webkit.org/r155344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926746</commentid>
    <comment_count>4</comment_count>
      <attachid>211024</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-09 09:49:20 -0700</bug_when>
    <thetext>Comment on attachment 211024
patch

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

&gt; Source/WebCore/dom/Document.h:1187
&gt; +    RenderObject* renderer() const WTF_DELETED_FUNCTION;

In cases like this I often just make the return type void.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211024</attachid>
            <date>2013-09-09 03:31:46 -0700</date>
            <delta_ts>2013-09-09 09:49:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>hide-document-renderer.patch</filename>
            <type>text/plain</type>
            <size>28586</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTM0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDEzLTA5LTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBIaWRlIERvY3VtZW50OjpyZW5k
ZXJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjEwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgbGVzcyBnZW5lcmljIERvY3VtZW50OjpyZW5kZXJWaWV3KCkgaW5zdGVhZC4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQWNjZXNz
aWJpbGl0eU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
d2ViQXJlYU9iamVjdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJh
Y2tzKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldE5hbWVkRmxvd3MpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmV4aXN0aW5n
QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhPYmplY3RDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFsbHlPcmRlcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c3R5bGVSZXNvbHZlckNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpkb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2
ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OnJlbW92
ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbSk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5
SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZW1vdmVkRnJv
bSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRl
RnJvbUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxCZWdpbik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpk
b0xheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBh
Z2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6c3Bv
b2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6cGFpbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRy
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVUcmVlKToKKyAgICAgICAg
KiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnVw
ZGF0ZVBhbik6CisKIDIwMTMtMDktMDkgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtET000XSBIYXZlIFByb2Nlc3NpbmdJbnN0cnVjdGlv
biBpbmhlcml0IENoYXJhY3RlckRhdGEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzI3LDcgKzcyNyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2MK
ICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2JqZWN0KCk7CiAKICAgICBpZiAo
IW9iamVjdCAmJiBkb2N1bWVudCkKLSAgICAgICAgb2JqZWN0ID0gZ2V0KGRvY3VtZW50LT5yZW5k
ZXJlcigpKTsKKyAgICAgICAgb2JqZWN0ID0gZ2V0KGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwog
CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNp
b24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQWMKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFtZSgp
LmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jIHx8ICFkb2MtPnJlbmRlcmVyKCkpCisgICAg
ICAgIGlmICghZG9jIHx8ICFkb2MtPnJlbmRlclZpZXcoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgICAgIG9iamVjdCA9IG9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShkb2MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDE1NTMwMikKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNjcm9sbAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBEb2N1bWVu
dCogZG9jID0gdG9GcmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOwot
ICAgIGlmICghZG9jIHx8ICFkb2MtPnJlbmRlcmVyKCkpCisgICAgaWYgKCFkb2MgfHwgIWRvYy0+
cmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKGRvYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIENT
U0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2
ZXJJZkV4aXN0cygpKQogICAgICAgICBzdHlsZVJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSgpOwotICAgIGlmIChtX2RvY3VtZW50LT5pblBhZ2VDYWNoZSgpIHx8ICFt
X2RvY3VtZW50LT5yZW5kZXJlcigpKQorICAgIGlmIChtX2RvY3VtZW50LT5pblBhZ2VDYWNoZSgp
IHx8ICFtX2RvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Rv
Y3VtZW50LT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxNTUzMDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsOCBA
QCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50JiBkCiB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQogewogICAgIG1fcnVs
ZVNldHMuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoZmlyc3ROZXcsIHN0eWxlU2hlZXRzLCBtX21l
ZGl1bS5nZXQoKSwgbV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBkb2N1bWVudCgpLmlzVmlld1Nv
dXJjZSgpLCB0aGlzKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5yZW5kZXJlcigpICYmIGRvY3VtZW50
KCkucmVuZGVyZXIoKS0+c3R5bGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5yZW5kZXJlcigpLT5z
dHlsZSgpLT5mb250KCkudXBkYXRlKGZvbnRTZWxlY3RvcigpKTsKKyAgICBpZiAoZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnN0eWxlKCkpCisgICAg
ICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5zdHlsZSgpLT5mb250KCkudXBkYXRlKGZvbnRT
ZWxlY3RvcigpKTsKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgdmll
d3BvcnRTdHlsZVJlc29sdmVyKCktPnJlc29sdmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQzLDcgKzU0Myw3IEBAIHN0YXRpYyBib29sIGlzQXR0cmli
dXRlT25BbGxPd25lcnMoY29uc3QKIAogRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiB7Ci0gICAgQVNT
RVJUKCFyZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoIXJlbmRlclZpZXcoKSk7CiAgICAgQVNTRVJU
KCFtX2luUGFnZUNhY2hlKTsKICAgICBBU1NFUlQoIW1fc2F2ZWRSZW5kZXJWaWV3KTsKICAgICBB
U1NFUlQobV9yYW5nZXMuaXNFbXB0eSgpKTsKQEAgLTExNTEsNyArMTE1MSw3IEBAIGJvb2wgRG9j
dW1lbnQ6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY28KIAogUGFzc1JlZlB0cjxET01OYW1lZEZs
b3dDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2Via2l0R2V0TmFtZWRGbG93cygpCiB7Ci0gICAgaWYg
KCFjc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJlcigpKQorICAgIGlmICghY3NzUmVnaW9u
c0VuYWJsZWQoKSB8fCAhcmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKGIKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7Ci0gICAgYm9vbCBuZWVkc0xheW91dCA9IGZyYW1lVmll
dyAmJiByZW5kZXJlcigpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJl
cigpLT5uZWVkc0xheW91dCgpKTsKKyAgICBib29sIG5lZWRzTGF5b3V0ID0gZnJhbWVWaWV3ICYm
IHJlbmRlclZpZXcoKSAmJiAoZnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyVmll
dygpLT5uZWVkc0xheW91dCgpKTsKICAgICBpZiAobmVlZHNMYXlvdXQpCiAgICAgICAgIHVwZGF0
ZUxheW91dCgpOwogCkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dl
c3RlZE1JTUVUeXBlKCkgY29uCiAKIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50RnJvbVBvaW50
KGludCB4LCBpbnQgeSkgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgaWYgKCFy
ZW5kZXJWaWV3KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIFRyZWVTY29wZTo6
ZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKQEAgLTE0MjQsNyArMTQyNCw3IEBAIEVsZW1lbnQqIERv
Y3VtZW50OjplbGVtZW50RnJvbVBvaW50KGludCAKIAogUGFzc1JlZlB0cjxSYW5nZT4gRG9jdW1l
bnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQogewotICAgIGlmICghcmVuZGVy
ZXIoKSkKKyAgICBpZiAoIXJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgTGF5
b3V0UG9pbnQgbG9jYWxQb2ludDsKICAgICBOb2RlKiBub2RlID0gbm9kZUZyb21Qb2ludCh0aGlz
LCB4LCB5LCAmbG9jYWxQb2ludCk7CkBAIC0xODUxLDcgKzE4NTEsNyBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVMYXlvdXQoKQogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0
Q2hlY2tQb2ludDsKIAogICAgIC8vIE9ubHkgZG8gYSBsYXlvdXQgaWYgY2hhbmdlcyBoYXZlIG9j
Y3VycmVkIHRoYXQgbWFrZSBpdCBuZWNlc3NhcnkuICAgICAgCi0gICAgaWYgKGZyYW1lVmlldyAm
JiByZW5kZXJlcigpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJlcigp
LT5uZWVkc0xheW91dCgpKSkKKyAgICBpZiAoZnJhbWVWaWV3ICYmIHJlbmRlclZpZXcoKSAmJiAo
ZnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyVmlldygpLT5uZWVkc0xheW91dCgp
KSkKICAgICAgICAgZnJhbWVWaWV3LT5sYXlvdXQoKTsKIH0KIApAQCAtMjE2MSw3ICsyMTYxLDcg
QEAgQVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmV4aXN0aW5nQVhPYmplYwogCiAgICAgLy8gSWYg
dGhlIHJlbmRlcmVyIGlzIGdvbmUgdGhlbiB3ZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgZGVzdHJ1
Y3Rpb24uCiAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIG1fZnJhbWUg
PSAwLgotICAgIGlmICghdG9wRG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIXRvcERv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4g
dG9wRG9jdW1lbnQoKS0+bV9heE9iamVjdENhY2hlLmdldCgpOwpAQCAtMjE3OSw3ICsyMTc5LDcg
QEAgQVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKQogICAgIERvY3VtZW50
KiB0b3BEb2N1bWVudCA9IHRoaXMtPnRvcERvY3VtZW50KCk7CiAKICAgICAvLyBJZiB0aGUgZG9j
dW1lbnQgaGFzIGFscmVhZHkgYmVlbiBkZXRhY2hlZCwgZG8gbm90IG1ha2UgYSBuZXcgYXhPYmpl
Y3RDYWNoZS4KLSAgICBpZiAoIXRvcERvY3VtZW50LT5yZW5kZXJlcigpKQorICAgIGlmICghdG9w
RG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQo
dG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVjdENhY2hlKTsKQEAgLTIxOTEsOCArMjE5
MSw4IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hlKCkKIHZvaWQgRG9j
dW1lbnQ6OnNldFZpc3VhbGx5T3JkZXJlZCgpCiB7CiAgICAgbV92aXN1YWxseU9yZGVyZWQgPSB0
cnVlOwotICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT5zdHlsZSgpLT5z
ZXRSVExPcmRlcmluZyhWaXN1YWxPcmRlcik7CisgICAgaWYgKHJlbmRlclZpZXcoKSkKKyAgICAg
ICAgcmVuZGVyVmlldygpLT5zdHlsZSgpLT5zZXRSVExPcmRlcmluZyhWaXN1YWxPcmRlcik7CiB9
CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQpA
QCAtMjQ1NCwyNSArMjQ1NCwyNSBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAg
ICAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAKICAgICAgICAgLy8gQWx3YXlz
IGRvIGEgbGF5b3V0IGFmdGVyIGxvYWRpbmcgaWYgbmVlZGVkLgotICAgICAgICBpZiAodmlldygp
ICYmIHJlbmRlcmVyKCkgJiYgKCFyZW5kZXJlcigpLT5maXJzdENoaWxkKCkgfHwgcmVuZGVyZXIo
KS0+bmVlZHNMYXlvdXQoKSkpCisgICAgICAgIGlmICh2aWV3KCkgJiYgcmVuZGVyVmlldygpICYm
ICghcmVuZGVyVmlldygpLT5maXJzdENoaWxkKCkgfHwgcmVuZGVyVmlldygpLT5uZWVkc0xheW91
dCgpKSkKICAgICAgICAgICAgIHZpZXcoKS0+bGF5b3V0KCk7CiAgICAgfQogCiAgICAgbV9wcm9j
ZXNzaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KFdJTikKLSAgICBpZiAoZiAmJiByZW5kZXJlcigpICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpIHsKKyAgICBpZiAoZiAmJiByZW5kZXJWaWV3KCkgJiYgQVhPYmplY3RD
YWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkgewogICAgICAgICAvLyBUaGUgQVggY2FjaGUg
bWF5IGhhdmUgYmVlbiBjbGVhcmVkIGF0IHRoaXMgcG9pbnQsIGJ1dCB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSBpdCBjb250YWlucyBhbgogICAgICAgICAvLyBBWCBvYmplY3QgdG8gc2VuZCB0aGUgbm90
aWZpY2F0aW9uIHRvLiBnZXRPckNyZWF0ZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGFuIHZhbGlkIEFY
IG9iamVjdAogICAgICAgICAvLyBleGlzdHMgaW4gdGhlIGNhY2hlICh3ZSBpZ25vcmUgdGhlIHJl
dHVybiB2YWx1ZSBiZWNhdXNlIHdlIGRvbid0IG5lZWQgaXQgaGVyZSkuIFRoaXMgaXMgCiAgICAg
ICAgIC8vIG9ubHkgc2FmZSB0byBjYWxsIHdoZW4gYSBsYXlvdXQgaXMgbm90IGluIHByb2dyZXNz
LCBzbyBpdCBjYW4gbm90IGJlIHVzZWQgaW4gcG9zdE5vdGlmaWNhdGlvbi4gICAgCi0gICAgICAg
IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXIoKSk7CisgICAgICAgIGF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyVmlldygpKTsKICAgICAgICAgaWYgKHRoaXMg
PT0gdG9wRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlm
aWNhdGlvbihyZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWExvYWRDb21wbGV0ZSwgdHJ1ZSk7
CisgICAgICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24ocmVuZGVyVmll
dygpLCBBWE9iamVjdENhY2hlOjpBWExvYWRDb21wbGV0ZSwgdHJ1ZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gQVhMb2FkQ29tcGxldGUgY2FuIG9ubHkgYmUgcG9zdGVkIG9uIHRo
ZSB0b3AgZG9jdW1lbnQsIHNvIGlmIGl0J3MgYSBkb2N1bWVudAogICAgICAgICAgICAgLy8gaW4g
YW4gaWZyYW1lIHRoYXQganVzdCBmaW5pc2hlZCBsb2FkaW5nLCBwb3N0IEFYTGF5b3V0Q29tcGxl
dGUgaW5zdGVhZC4KLSAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlv
bihyZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWExheW91dENvbXBsZXRlLCB0cnVlKTsKKyAg
ICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihyZW5kZXJWaWV3KCks
IEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUsIHRydWUpOwogICAgICAgICB9CiAgICAg
fQogI2VuZGlmCkBAIC0yOTc4LDkgKzI5NzgsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uCiAKIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1lbnQ6
OnByZXBhcmVNb3VzZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBM
YXlvdXRQb2ludCYgZG9jdW1lbnRQb2ludCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCkKIHsKLSAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+aXNSZW5kZXJWaWV3
KCkpOwotCi0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGlmICghcmVuZGVyVmlldygpKQogICAg
ICAgICByZXR1cm4gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhldmVudCwgSGl0VGVzdFJl
c3VsdChMYXlvdXRQb2ludCgpKSk7CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChkb2N1bWVu
dFBvaW50KTsKQEAgLTMxOTEsNyArMzE4OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkKFN0eWwKIAogICAgIGlmIChkaWRMYXlvdXRXaXRoUGVuZGluZ1N0eWxlc2hlZXRz
KCkgJiYgIW1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmhhc1BlbmRpbmdTaGVldHMoKSkgewogICAg
ICAgICBtX3BlbmRpbmdTaGVldExheW91dCA9IElnbm9yZUxheW91dFdpdGhQZW5kaW5nU2hlZXRz
OwotICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKHJlbmRlclZpZXcoKSkKICAg
ICAgICAgICAgIHJlbmRlclZpZXcoKS0+cmVwYWludFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7
CiAgICAgfQogCkBAIC0zMjEwLDggKzMyMDgsOCBAQCB2b2lkIERvY3VtZW50OjpzdHlsZVJlc29s
dmVyQ2hhbmdlZChTdHlsCiAgICAgICAgIHByaW50ZigiRmluaXNoZWQgdXBkYXRlIG9mIHN0eWxl
IHNlbGVjdG9yIGF0IHRpbWUgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAKLSAgICBp
ZiAocmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKKyAgICBpZiAocmVuZGVyVmlldygpKSB7CisgICAgICAgIHJlbmRl
clZpZXcoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGlm
ICh2aWV3KCkpCiAgICAgICAgICAgICB2aWV3KCktPnNjaGVkdWxlUmVsYXlvdXQoKTsKICAgICB9
CkBAIC00MDMwLDcgKzQwMjgsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNoZShib29s
IGZsYWcpCiB2b2lkIERvY3VtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpCiB7CiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChyZW5kZXJlcigpKQorICAg
IGlmIChyZW5kZXJWaWV3KCkpCiAgICAgICAgIHJlbmRlclZpZXcoKS0+c2V0SXNJbldpbmRvdyhm
YWxzZSk7CiAjZW5kaWYKIH0KQEAgLTQwNTksNyArNDA1Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRv
Y3VtZW50RGlkUmVzdW1lRnJvbVBhZ2UKICAgICAgICAgKCppKS0+ZG9jdW1lbnREaWRSZXN1bWVG
cm9tUGFnZUNhY2hlKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
aWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKHJlbmRlclZpZXcoKSkKICAgICAgICAgcmVuZGVyVmll
dygpLT5zZXRJc0luV2luZG93KHRydWUpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAxNTUzMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQxLDEwICs1NDEsNiBAQCBwdWJsaWM6CiAgICAgLy8gcmV0dXJu
cyByZW5kZXJlciBzbyBjYWxsZXJzIGNhbiBhdm9pZCB2ZXJib3NlIGNhc3RzLgogICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXc7IH0KIAotICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcywgY2FsbGVycyB0aGF0IGhhdmUgYSBEb2N1bWVudCogc2hv
dWxkIGNhbGwgcmVuZGVyVmlldygpLgotICAgIC8vIFNoYWRvdyB0aGUgaW1wbGVtZW50YXRpb25z
IG9uIE5vZGUgdG8gcHJvdmlkZSBmYXN0ZXIgYWNjZXNzIGZvciBkb2N1bWVudHMuCi0gICAgUmVu
ZGVyVmlldyogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXc7IH0KLQogICAg
IGJvb2wgcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJU
cmVlQmVpbmdEZXN0cm95ZWQ7IH0KIAogICAgIEFYT2JqZWN0Q2FjaGUqIGV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpIGNvbnN0OwpAQCAtMTE4OCw2ICsxMTg0LDcgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgTm9kZTsKICAgICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNv
dW50SW5jcmVtZW50ZXI7CiAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgV1RG
X0RFTEVURURfRlVOQ1RJT047CiAgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqKSBX
VEZfREVMRVRFRF9GVU5DVElPTjsKICAgICB2b2lkIHNldFJlbmRlclZpZXcoUmVuZGVyVmlldyop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxNTUzMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3
ICs0NjMsNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIH0KLSAgICBpZiAoIW1fZG9jdW1lbnQtPnJlbmRlcmVy
KCkgfHwgIW1fZG9jdW1lbnQtPmF0dGFjaGVkKCkpCisgICAgaWYgKCFtX2RvY3VtZW50LT5yZW5k
ZXJWaWV3KCkgfHwgIW1fZG9jdW1lbnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBhY3RpdmVTdHlsZVNoZWV0czsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTMwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlKGNvbnMKIEVsZW1lbnQ6On5FbGVt
ZW50KCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKGRvY3VtZW50KCkucmVuZGVyZXIoKSkg
eworICAgIGlmIChkb2N1bWVudCgpLnJlbmRlclZpZXcoKSkgewogICAgICAgICAvLyBXaGVuIHRo
ZSBkb2N1bWVudCBpcyBub3QgZGVzdHJveWVkLCBhbiBlbGVtZW50IHRoYXQgd2FzIHBhcnQgb2Yg
YSBuYW1lZCBmbG93CiAgICAgICAgIC8vIGNvbnRlbnQgbm9kZXMgc2hvdWxkIGhhdmUgYmVlbiBy
ZW1vdmVkIGZyb20gdGhlIGNvbnRlbnQgbm9kZXMgY29sbGVjdGlvbgogICAgICAgICAvLyBhbmQg
dGhlIGluTmFtZWRGbG93IGZsYWcgcmVzZXQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSW5s
aW5lU3R5bGVTaGVldE93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OnJlbW92ZWRGcm9tRAogICAg
ICAgICBjbGVhclNoZWV0KCk7CiAKICAgICAvLyBJZiB3ZSdyZSBpbiBkb2N1bWVudCB0ZWFyZG93
biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBub3RpZmljYXRpb24gb2Ygb3VyIHNoZWV0
J3MgcmVtb3ZhbC4KLSAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKGRvY3Vt
ZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIGRvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdl
ZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDE1NTMwMikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnJlbW92ZWRGcm9tKAogICAg
IH0KIAogICAgIC8vIElmIHdlJ3JlIGluIGRvY3VtZW50IHRlYXJkb3duLCB0aGVuIHdlIGRvbid0
IG5lZWQgdG8gZG8gYW55IG5vdGlmaWNhdGlvbiBvZiBvdXIgc2hlZXQncyByZW1vdmFsLgotICAg
IGlmIChkb2N1bWVudCgpLnJlbmRlcmVyKCkpCisgICAgaWYgKGRvY3VtZW50KCkucmVuZGVyVmll
dygpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxj
U3R5bGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTksNyArMTU1OSw3IEBAIGJvb2wgRnJh
bWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExheW8KICAgICAvLyBUcmVhdCBhIGNvbGxhcHNl
ZCBzZWxlY3Rpb24gbGlrZSBubyBzZWxlY3Rpb24uCiAgICAgaWYgKCFpc1JhbmdlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigpKSAKKyAgICBp
ZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1
MzAyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpjYWxjdWxhdGVBbmRBZGp1
c3REaXJlCiB2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0
ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hhbmdlLCBDaGlsZENoYW5nZVR5cGUg
Y2hhbmdlVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBsb29rcyBzdXNwaWNp
b3VzLgotICAgIGlmIChkb2N1bWVudCgpLnJlbmRlcmVyKCkgJiYgKGNoYW5nZVR5cGUgPT0gRWxl
bWVudFJlbW92ZWQgfHwgY2hhbmdlVHlwZSA9PSBUZXh0UmVtb3ZlZCkpIHsKKyAgICBpZiAoZG9j
dW1lbnQoKS5yZW5kZXJWaWV3KCkgJiYgKGNoYW5nZVR5cGUgPT0gRWxlbWVudFJlbW92ZWQgfHwg
Y2hhbmdlVHlwZSA9PSBUZXh0UmVtb3ZlZCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGJlZm9y
ZUNoYW5nZSA/IGJlZm9yZUNoYW5nZS0+bmV4dFNpYmxpbmcoKSA6IDA7CiAgICAgICAgIGZvciAo
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGVs
ZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkobm9kZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTUzMDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpCiAgICAgaWYgKHN0
eWxlU2hlZXRJc0xvYWRpbmcoKSkKICAgICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KFJlbW92ZVBl
bmRpbmdTaGVldE5vdGlmeUxhdGVyKTsKIAotICAgIGlmIChkb2N1bWVudCgpLnJlbmRlcmVyKCkp
CisgICAgaWYgKGRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGVJZk5lZWRlZCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1MzAy
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvCiAgICAgICAgIG1fc3R5bGVTaGVldE93bmVyLnNldE1lZGlhKHZhbHVlKTsKICAgICAg
ICAgaWYgKHNoZWV0KCkpIHsKICAgICAgICAgICAgIHNoZWV0KCktPnNldE1lZGlhUXVlcmllcyhN
ZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KHZhbHVlKSk7Ci0g
ICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCkucmVuZGVyZXIoKSkKKyAg
ICAgICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB0eXBlQXR0
cikKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0
aFNjb3BpCiAgICAgICAgIHNjb3BlLT5zaGFkb3dIb3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKICAgICBlbHNlCiAgICAgICAgIHNjb3BlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAg
aWYgKGluRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS5wYXJzaW5nKCkgJiYgZG9jdW1lbnQoKS5y
ZW5kZXJlcigpKQorICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCkucGFyc2luZygp
ICYmIGRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxlUmVz
b2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogCiAgICAgbV9zY29wZWRTdHlsZVJlZ2lz
dHJhdGlvblN0YXRlID0gc2NvcGVkID8gUmVnaXN0ZXJlZEFzU2NvcGVkIDogUmVnaXN0ZXJlZElu
U2hhZG93Um9vdDsKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnVu
cmVnaXN0ZXJXaXRoU2NvCiAgICAgICAgIHNjb3BlLT51bnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxl
Q2hpbGQoKTsKICAgICAgICAgc2NvcGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9Ci0g
ICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS5wYXJzaW5nKCkgJiYgZG9jdW1lbnQo
KS5yZW5kZXJlcigpKQorICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCkucGFyc2lu
ZygpICYmIGRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxl
UmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogCiAgICAgbV9zY29wZWRTdHlsZVJl
Z2lzdHJhdGlvblN0YXRlID0gTm90UmVnaXN0ZXJlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAkocmV2aXNpb24g
MTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOSBAQCBzdGF0aWMgYm9vbCBtZWRp
YUF0dHJpYnV0ZU1hdGNoZXMoRnJhbWUqCiB2b2lkIEhUTUxSZXNvdXJjZVByZWxvYWRlcjo6cHJl
bG9hZChQYXNzT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBwcmVsb2FkKQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBBU1NFUlQobV9kb2N1bWVudC0+cmVuZGVyZXIoKSk7
Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkpOwotICAgIGlmICgh
cHJlbG9hZC0+bWVkaWEoKS5pc0VtcHR5KCkgJiYgIW1lZGlhQXR0cmlidXRlTWF0Y2hlcyhtX2Rv
Y3VtZW50LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLCBwcmVsb2Fk
LT5tZWRpYSgpKSkKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+cmVuZGVyVmlldygpKTsKKyAgICBB
U1NFUlQobV9kb2N1bWVudC0+cmVuZGVyVmlldygpLT5zdHlsZSgpKTsKKyAgICBpZiAoIXByZWxv
YWQtPm1lZGlhKCkuaXNFbXB0eSgpICYmICFtZWRpYUF0dHJpYnV0ZU1hdGNoZXMobV9kb2N1bWVu
dC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+cmVuZGVyVmlldygpLT5zdHlsZSgpLCBwcmVsb2FkLT5t
ZWRpYSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QgPSBwcmVsb2FkLT5yZXNvdXJjZVJlcXVlc3QobV9kb2N1bWVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDE1NTMwMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3
ICsxNjgsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgLy8g
SWYgd2UncmUgbm90IG1ha2luZyByZW5kZXJlcnMgZm9yIHRoZSBwYWdlLCB0aGVuIGRvbid0IGxv
YWQgaW1hZ2VzLiAgV2UgZG9uJ3Qgd2FudCB0byBzbG93CiAgICAgLy8gZG93biB0aGUgcmF3IEhU
TUwgcGFyc2luZyBjYXNlIGJ5IGxvYWRpbmcgaW1hZ2VzIHdlIGRvbid0IGludGVuZCB0byBkaXNw
bGF5LgogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsKLSAg
ICBpZiAoIWRvY3VtZW50LnJlbmRlcmVyKCkpCisgICAgaWYgKCFkb2N1bWVudC5yZW5kZXJWaWV3
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0cmluZyBhdHRyID0gbV9lbGVtZW50
LT5pbWFnZVNvdXJjZVVSTCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU5LDcgKzI0NTksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUu
ZG9jdW1lbnQoKTsKIAotICAgIFJlbmRlck9iamVjdCogZG9jUmVuZGVyZXIgPSBkb2MtPnJlbmRl
cmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBkb2NSZW5kZXJlciA9IGRvYy0+cmVuZGVyVmlldygp
OwogICAgIGlmICghZG9jUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAg
LTI3OTcsNyArMjc5Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzR2VzdHVyZUV2ZW50VG9X
aWQKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2N1bWVudFJlbmRl
cmVyID0gZG9jdW1lbnQtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBkb2N1bWVudFJl
bmRlcmVyID0gZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIWRvY3VtZW50UmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDE1NTMwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFuZFRleHRab29t
RmFjdG9ycyhmbAogICAgICAgICBjaGlsZC0+c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3Bh
Z2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9yKTsKIAogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSB0aGlzLT52aWV3KCkpIHsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpICYm
IGRvY3VtZW50LT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5
b3V0KCkpCisgICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyVmlldygpICYmIGRvY3VtZW50LT5y
ZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKICAg
ICAgICAgICAgIHZpZXctPmxheW91dCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgIGlmIChoYXNPbmVSZWYoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICByb290ID0gc3VidHJlZSA/IG1fbGF5b3V0
Um9vdCA6IGRvY3VtZW50LT5yZW5kZXJlcigpOworICAgICAgICByb290ID0gc3VidHJlZSA/IG1f
bGF5b3V0Um9vdCA6IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGlmICghcm9vdCkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gc2V0IG1fc2l6ZSBoZXJlPwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQyNiw3ICszNDI2LDcgQEAgYm9vbCBGcmFtZVZpZXc6
OmRvTGF5b3V0V2l0aEZyYW1lRmxhdHRlbgogCiAgICAgcGFyZW50Vmlldy0+bGF5b3V0KGFsbG93
U3VidHJlZSk7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJvb3QgPSBtX2xheW91dFJvb3QgPyBtX2xh
eW91dFJvb3QgOiBmcmFtZSgpLmRvY3VtZW50KCktPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2Jq
ZWN0KiByb290ID0gbV9sYXlvdXRSb290ID8gbV9sYXlvdXRSb290IDogZnJhbWUoKS5kb2N1bWVu
dCgpLT5yZW5kZXJWaWV3KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyb290LCAhcm9vdC0+bmVlZHNM
YXlvdXQoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYzLDggKzc2Myw4IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZs
b2F0IHNjYWwKICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOwogCiAgICAgaWYgKCFtX3Nl
dHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Ci0gICAgICAgIGlm
IChkb2N1bWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigp
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJWaWV3
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5zZXROZWVkc0xheW91dCh0
cnVlKTsKIAogICAgICAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoU3R5bGU6OkZvcmNlKTsKIApA
QCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNj
YWwKICAgICAgICAgdmlldy0+c2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0
KCk7CiAKICAgICBpZiAodmlldyAmJiB2aWV3LT5zY3JvbGxQb3NpdGlvbigpICE9IG9yaWdpbikg
ewotICAgICAgICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5l
ZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKKyAgICAgICAgaWYgKCFtX3Nl
dHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIGRvY3VtZW50LT5y
ZW5kZXJWaWV3KCkgJiYgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+bmVlZHNMYXlvdXQoKSAmJiB2
aWV3LT5kaWRGaXJzdExheW91dCgpKQogICAgICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAgICAg
ICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKG9yaWdpbik7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkocmV2aXNpb24gMTU1MzAyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3
LDcgQEAgaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZgogCiB2b2lkIFBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJ
blBpeGVscykKIHsKLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+dmlldygp
IHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpIHx8ICFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpKQogICAgICAgICByZXR1cm47CiAKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxNTUz
MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNTQsNyArMTM1NCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXAKICAgICBpZiAobV9mcmFtZUNvdW50
V2hpbGVQbGF5aW5nID4gMTApIHsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gbV9wbGF5ZXItPmZy
YW1lVmlldygpID8gJm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IE5VTEw7CiAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBOVUxM
OwotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+
cmVuZGVyZXIoKSA6IE5VTEw7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5yZW5kZXJWaWV3KCkgOiBOVUxMOwogICAgICAgICBSZW5kZXJTdHls
ZSogc3R5bGVUb1VzZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiBOVUxMOwogICAg
ICAgICBpZiAoc3R5bGVUb1VzZSkgewogICAgICAgICAgICAgZG91YmxlIGZyYW1lUmF0ZSA9ICht
X2ZyYW1lQ291bnRXaGlsZVBsYXlpbmcgLSAxKSAvICggbV9zdGFydGVkUGxheWluZyA/IChbTlNE
YXRlIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV0gLSBtX3RpbWVTdGFydGVkUGxheWlu
ZykgOgpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAJKHJl
dmlzaW9uIDE1NTMwMikKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTEsOSArODExLDkgQEAgdm9pZCByZXNvbHZlVHJlZShE
b2N1bWVudCYgZG9jdW1lbnQsIENoYQogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBTdHls
ZTo6Q2hhbmdlIGRvY3VtZW50Q2hhbmdlID0gZGV0ZXJtaW5lQ2hhbmdlKGRvY3VtZW50U3R5bGUu
Z2V0KCksIGRvY3VtZW50LnJlbmRlcmVyKCktPnN0eWxlKCksIGRvY3VtZW50LnNldHRpbmdzKCkp
OworICAgICAgICBTdHlsZTo6Q2hhbmdlIGRvY3VtZW50Q2hhbmdlID0gZGV0ZXJtaW5lQ2hhbmdl
KGRvY3VtZW50U3R5bGUuZ2V0KCksIGRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSwgZG9j
dW1lbnQuc2V0dGluZ3MoKSk7CiAgICAgICAgIGlmIChkb2N1bWVudENoYW5nZSAhPSBOb0NoYW5n
ZSkKLSAgICAgICAgICAgIGRvY3VtZW50LnJlbmRlcmVyKCktPnNldFN0eWxlKGRvY3VtZW50U3R5
bGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnJlbmRlclZpZXcoKS0+c2V0U3R5
bGUoZG9jdW1lbnRTdHlsZS5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIEVsZW1lbnQqIGRvY3Vt
ZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNTUzMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQg
U1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbihjb25zdCBGbG9hdFAKIHsKICAgICBpZiAocm9vdEVsZW1l
bnQoKSkgewogICAgICAgICByb290RWxlbWVudCgpLT5zZXRDdXJyZW50VHJhbnNsYXRlKEZsb2F0
UG9pbnQocG9zLngoKSAtIG1fdHJhbnNsYXRlLngoKSwgcG9zLnkoKSAtIG1fdHJhbnNsYXRlLnko
KSkpOwotICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnJl
cGFpbnQoKTsKKyAgICAgICAgaWYgKHJlbmRlclZpZXcoKSkKKyAgICAgICAgICAgIHJlbmRlclZp
ZXcoKS0+cmVwYWludCgpOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="233068"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>