<?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>143432</bug_id>
          
          <creation_ts>2015-04-05 18:01:36 -0700</creation_ts>
          <short_desc>Free up some bits in RenderObject by moving rarely used bits into a side table</short_desc>
          <delta_ts>2016-03-01 10:28:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082992</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-05 18:01:36 -0700</bug_when>
    <thetext>Free up some bits in RenderObject by moving rarely used bits into a side table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083000</commentid>
    <comment_count>1</comment_count>
      <attachid>250184</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-05 18:17:21 -0700</bug_when>
    <thetext>Created attachment 250184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083001</commentid>
    <comment_count>2</comment_count>
      <attachid>250184</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-05 18:22:09 -0700</bug_when>
    <thetext>Comment on attachment 250184
Patch

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

No measurable performance cost?

&gt; Source/WebCore/rendering/RenderObject.cpp:2507
&gt; +    if (b) {
&gt; +        ensureRareData().setIsDragging(true);
&gt; +        return;
&gt; +    }
&gt; +    if (hasRareData())
&gt; +        ensureRareData().setIsDragging(false);

Another way to write this is:

    if (b || hasRareData())
        ensureRareData().setIsDragging(b);
I slightly prefer that version. I also slightly prefer a word for the argument such as &quot;isDragging&quot; rather than just &quot;b&quot;.

&gt; Source/WebCore/rendering/RenderObject.cpp:2520
&gt; +RenderObject::RareDataHash&amp; RenderObject::rareDataMap()

I suggest making this a file-local thing rather than a static class member; that way it doesn’t have to be in the header at all.

&gt; Source/WebCore/rendering/RenderObject.h:1017
&gt; +            : m_isDragging(false)
&gt; +            , m_hasReflection(false)

If these are going to be public data members, then I suggest we name them without the &quot;m_&quot;.

&gt; Source/WebCore/rendering/RenderObject.h:1030
&gt; +    void clearRareData();

I think the right name here is removeRareData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083008</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-05 18:42:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 250184 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250184&amp;action=review
&gt; 
&gt; No measurable performance cost?

I didn&apos;t measure, but I think it&apos;s unlikely. setIsDragging(true) and setIsReflection(true) are rarely called, and the setters with false, and getters when there is no rare data should be as cheap as before.

&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:2507
&gt; &gt; +    if (b) {
&gt; &gt; +        ensureRareData().setIsDragging(true);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +    if (hasRareData())
&gt; &gt; +        ensureRareData().setIsDragging(false);
&gt; 
&gt; Another way to write this is:
&gt; 
&gt;     if (b || hasRareData())
&gt;         ensureRareData().setIsDragging(b);
&gt; I slightly prefer that version. I also slightly prefer a word for the
&gt; argument such as &quot;isDragging&quot; rather than just &quot;b&quot;.

Done.

&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:2520
&gt; &gt; +RenderObject::RareDataHash&amp; RenderObject::rareDataMap()
&gt; 
&gt; I suggest making this a file-local thing rather than a static class member;
&gt; that way it doesn’t have to be in the header at all.

Sadly doing that means that RenderObjectRareData can no longer be private to RenderObject, unless I&apos;m missing something.

&gt; &gt; Source/WebCore/rendering/RenderObject.h:1017
&gt; &gt; +            : m_isDragging(false)
&gt; &gt; +            , m_hasReflection(false)
&gt; 
&gt; If these are going to be public data members, then I suggest we name them
&gt; without the &quot;m_&quot;.

The macro makes them private.

&gt; &gt; Source/WebCore/rendering/RenderObject.h:1030
&gt; &gt; +    void clearRareData();
&gt; 
&gt; I think the right name here is removeRareData.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083024</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-05 20:01:14 -0700</bug_when>
    <thetext>https://trac.webkit.org/r182373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169432</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-01 07:10:43 -0800</bug_when>
    <thetext>We have been trying to make RenderObject less of a general dumping ground so this is somewhat unfortunate. If we need this I think this should have been RenderElementRareData instead. 

The few bits currently here don&apos;t really justify the existence of the type. There are plenty of free bits in RenderElement and any RenderObject bits that don&apos;t apply to RenderTexts are easily moved there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169485</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-01 10:28:39 -0800</bug_when>
    <thetext>When I did this I would have moved the bits into RenderElement if that had been possible.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250184</attachid>
            <date>2015-04-05 18:17:21 -0700</date>
            <delta_ts>2015-04-05 18:22:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143432-20150405181632.patch</filename>
            <type>text/plain</type>
            <size>14375</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVhMTk1NThjNGQyZDQ4
YTE4YjhmNzA1ODljNjM0OGE0Yzc0ZWU0MS4uMjkwZmRhY2NmZTAxMzQwZGUxNWQ1OTk4ODc0ZGFh
ODMzYWNkMzAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE1LTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEZyZWUgdXAgc29t
ZSBiaXRzIGluIFJlbmRlck9iamVjdCBieSBtb3ZpbmcgcmFyZWx5IHVzZWQgYml0cyBpbnRvIGEg
c2lkZSB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzNDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBBZGQgYSBzaWRlIHRhYmxlIChnbG9iYWwgaGFzaCkgb24gUmVuZGVyT2JqZWN0
IHRvIHN0b3JlIGRhdGEgdGhhdCBpcyByYXJlbHkKKyAgICAgICAgdXNlZC4gTW92ZSB0aGUgImlz
RHJhZ2dpbmciIGFuZCAiaGFzUmVmbGVjdGlvbiIgYml0cyB0aGVyZS4gUmUtdXNlIG9uZSBvZgor
ICAgICAgICB0aG9zZSBiaXRzIGZvciAiaGFzUmFyZURhdGEiLCBhbmQgbGVhdmUgdGhlIG90aGVy
IHVudXNlZCAoSSBoYXZlIHBsYW5zIGZvciBpdCkuCisgICAgICAgIAorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRCbG9ja1JhcmVEYXRh
KTogUmVuYW1lZCBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgIChXZWJDb3JlOjplbnN1cmVCbG9j
a1JhcmVEYXRhKTogUmVuYW1lZCB0byBhdm9pZCBjb25mbGljdCB3aXRoIFJlbmRlck9iamVjdDo6
ZW5zdXJlUmFyZURhdGEoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjYWNoZWRG
bG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpjYWNoZWRGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrTmVlZHNVcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldENhY2hlZEZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tO
ZWVkc1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlQ2FjaGVk
Rmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6bG9jYXRlRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cGFnaW5hdGlvblN0cnV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWdlTG9naWNhbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2V0UGFnaW5hdGlvblN0cnV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRQ
YWdlTG9naWNhbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRSYXJlRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnN1cmVSYXJlRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6On5SZW5kZXJPYmplY3QpOiBBc3NlcnQgdGhhdCByYXJlIGRhdGEgaGFzbid0IGJlZW4g
cmVzdXJyZWN0ZWQKKyAgICAgICAgc2luY2Ugd2lsbEJlRGVzdHJveWVkKCkuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6IENsZWFyIHRoZSByYXJlIGRh
dGEuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldElzRHJhZ2dpbmcpOiBJZiBz
ZXR0aW5nLCBlbnN1cmUgdGhhdCB3ZSBoYXZlIHJhcmUgZGF0YSBhbmQKKyAgICAgICAgc2V0IHRo
ZSBiaXQuIE90aGVyd2lzZSwgb25seSBjbGVhciB0aGUgYml0IG9mIHdlIGhhdmUgcmFyZSBkYXRh
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRIYXNSZWZsZWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJhcmVEYXRhTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmNsZWFyUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNEcmFnZ2luZyk6IEZhc3QtZmFp
bCBvbiB0aGUgaGFzUmFyZURhdGEoKSBiaXQsIHRoZW4gZG8gdGhlCisgICAgICAgIHNsb3dlciBs
b29rdXAgaW4gcmFyZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpoYXNS
ZWZsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEV2
ZXJIYWRMYXlvdXQpOiBNb3ZlZCB1cCB0byBncm91cCB3aXRoIG90aGVyIGJpdCBzZXR0ZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpoYXNSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEhhc1JhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0Qml0ZmllbGRzOjpSZW5kZXJPYmplY3RCaXRmaWVs
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0
YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzZXRIYXNSZWZsZWN0aW9uKTogRGVsZXRlZC4gT3V0IG9mIGxpbmUgbm93LgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRJc0RyYWdnaW5nKTogRGVsZXRlZC4gRGl0dG8uCisK
KzIwMTUtMDQtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAg
ICAgICAgUmVtb3ZlICJnbyBhaGVhZCBhbmQiIGZyb20gY29tbWVudHMKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQyMQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAxOTAzMTI5NGU0Yzc4YjA1ZDFhNzJkMTc5
MmFiNzU0NTA2ZTY0ZTE3Li41ZWMzMTY5NjhmZGM0NmM2NWMyNWI3ZjQyOTg3MDY2M2I3MTNiNDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTkzMywxMiAr
OTMzLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiAgICAgaW52YWxpZGF0ZUJhY2tn
cm91bmRPYnNjdXJhdGlvblN0YXR1cygpOwogfQogCi1zdGF0aWMgUmVuZGVyQmxvY2tSYXJlRGF0
YSogZ2V0UmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQorc3RhdGljIFJlbmRlckJs
b2NrUmFyZURhdGEqIGdldEJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQog
ewotICAgIHJldHVybiBnUmFyZURhdGFNYXAgPyBnUmFyZURhdGFNYXAtPmdldChibG9jaykgOiAw
OworICAgIHJldHVybiBnUmFyZURhdGFNYXAgPyBnUmFyZURhdGFNYXAtPmdldChibG9jaykgOiBu
dWxscHRyOwogfQogCi1zdGF0aWMgUmVuZGVyQmxvY2tSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGEo
Y29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQorc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVu
c3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogewogICAgIGlmICgh
Z1JhcmVEYXRhTWFwKQogICAgICAgICBnUmFyZURhdGFNYXAgPSBuZXcgUmVuZGVyQmxvY2tSYXJl
RGF0YU1hcDsKQEAgLTMyMzIsNyArMzIzMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZp
cnN0TGV0dGVyKCkKIAogUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyQmxvY2s6OmNhY2hlZEZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soKSBjb25zdAogewotICAgIFJlbmRlckJsb2NrUmFyZURhdGEq
IHJhcmVEYXRhID0gZ2V0UmFyZURhdGEodGhpcyk7CisgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSog
cmFyZURhdGEgPSBnZXRCbG9ja1JhcmVEYXRhKHRoaXMpOwogCiAgICAgaWYgKCFyYXJlRGF0YSB8
fCAhcmFyZURhdGEtPm1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMjQyLDcgKzMyNDIsNyBAQCBSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJC
bG9jazo6Y2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyQmxvY2s6OmNhY2hlZEZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSgpIGNv
bnN0CiB7Ci0gICAgUmVuZGVyQmxvY2tSYXJlRGF0YSogcmFyZURhdGEgPSBnZXRSYXJlRGF0YSh0
aGlzKTsKKyAgICBSZW5kZXJCbG9ja1JhcmVEYXRhKiByYXJlRGF0YSA9IGdldEJsb2NrUmFyZURh
dGEodGhpcyk7CiAKICAgICBpZiAoIXJhcmVEYXRhIHx8ICFyYXJlRGF0YS0+bV9mbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMyNTIsMTMgKzMyNTIs
MTMgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja05l
ZWRzVXBkYXRlKCkgY29uc3QKIAogdm9pZCBSZW5kZXJCbG9jazo6c2V0Q2FjaGVkRmxvd1RocmVh
ZENvbnRhaW5pbmdCbG9ja05lZWRzVXBkYXRlKCkKIHsKLSAgICBSZW5kZXJCbG9ja1JhcmVEYXRh
JiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKHRoaXMpOworICAgIFJlbmRlckJsb2NrUmFyZURh
dGEmIHJhcmVEYXRhID0gZW5zdXJlQmxvY2tSYXJlRGF0YSh0aGlzKTsKICAgICByYXJlRGF0YS5t
X2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2sgPSBOdWxsb3B0OwogfQogCiBSZW5kZXJGbG93VGhy
ZWFkKiBSZW5kZXJCbG9jazo6dXBkYXRlQ2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayhS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKSBjb25zdAogewotICAgIFJlbmRlckJsb2NrUmFy
ZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEodGhpcyk7CisgICAgUmVuZGVyQmxvY2tS
YXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVCbG9ja1JhcmVEYXRhKHRoaXMpOwogICAgIHJhcmVE
YXRhLm1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayA9IGZsb3dUaHJlYWQ7CiAKICAgICByZXR1
cm4gZmxvd1RocmVhZDsKQEAgLTMyNjYsNyArMzI2Niw3IEBAIFJlbmRlckZsb3dUaHJlYWQqIFJl
bmRlckJsb2NrOjp1cGRhdGVDYWNoZWRGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKFJlbmRlckZs
b3dUCiAKIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlckJsb2NrOjpsb2NhdGVGbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QKIHsKLSAgICBSZW5kZXJCbG9ja1JhcmVEYXRhKiByYXJlRGF0
YSA9IGdldFJhcmVEYXRhKHRoaXMpOworICAgIFJlbmRlckJsb2NrUmFyZURhdGEqIHJhcmVEYXRh
ID0gZ2V0QmxvY2tSYXJlRGF0YSh0aGlzKTsKICAgICBpZiAoIXJhcmVEYXRhIHx8ICFyYXJlRGF0
YS0+bV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKQogICAgICAgICByZXR1cm4gdXBkYXRlQ2Fj
aGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayhSZW5kZXJCb3g6OmxvY2F0ZUZsb3dUaHJlYWRD
b250YWluaW5nQmxvY2soKSk7CiAKQEAgLTMyNzYsMzQgKzMyNzYsMzQgQEAgUmVuZGVyRmxvd1Ro
cmVhZCogUmVuZGVyQmxvY2s6OmxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSBjb25z
dAogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpwYWdpbmF0aW9uU3RydXQoKSBjb25zdAogewot
ICAgIFJlbmRlckJsb2NrUmFyZURhdGEqIHJhcmVEYXRhID0gZ2V0UmFyZURhdGEodGhpcyk7Cisg
ICAgUmVuZGVyQmxvY2tSYXJlRGF0YSogcmFyZURhdGEgPSBnZXRCbG9ja1JhcmVEYXRhKHRoaXMp
OwogICAgIHJldHVybiByYXJlRGF0YSA/IHJhcmVEYXRhLT5tX3BhZ2luYXRpb25TdHJ1dCA6IExh
eW91dFVuaXQoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6cGFnZUxvZ2ljYWxPZmZz
ZXQoKSBjb25zdAogewotICAgIFJlbmRlckJsb2NrUmFyZURhdGEqIHJhcmVEYXRhID0gZ2V0UmFy
ZURhdGEodGhpcyk7CisgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSogcmFyZURhdGEgPSBnZXRCbG9j
a1JhcmVEYXRhKHRoaXMpOwogICAgIHJldHVybiByYXJlRGF0YSA/IHJhcmVEYXRhLT5tX3BhZ2VM
b2dpY2FsT2Zmc2V0IDogTGF5b3V0VW5pdCgpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpzZXRQ
YWdpbmF0aW9uU3RydXQoTGF5b3V0VW5pdCBzdHJ1dCkKIHsKLSAgICBSZW5kZXJCbG9ja1JhcmVE
YXRhKiByYXJlRGF0YSA9IGdldFJhcmVEYXRhKHRoaXMpOworICAgIFJlbmRlckJsb2NrUmFyZURh
dGEqIHJhcmVEYXRhID0gZ2V0QmxvY2tSYXJlRGF0YSh0aGlzKTsKICAgICBpZiAoIXJhcmVEYXRh
KSB7CiAgICAgICAgIGlmICghc3RydXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJh
cmVEYXRhID0gJmVuc3VyZVJhcmVEYXRhKHRoaXMpOworICAgICAgICByYXJlRGF0YSA9ICZlbnN1
cmVCbG9ja1JhcmVEYXRhKHRoaXMpOwogICAgIH0KICAgICByYXJlRGF0YS0+bV9wYWdpbmF0aW9u
U3RydXQgPSBzdHJ1dDsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6c2V0UGFnZUxvZ2ljYWxPZmZz
ZXQoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0KQogewotICAgIFJlbmRlckJsb2NrUmFyZURhdGEq
IHJhcmVEYXRhID0gZ2V0UmFyZURhdGEodGhpcyk7CisgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSog
cmFyZURhdGEgPSBnZXRCbG9ja1JhcmVEYXRhKHRoaXMpOwogICAgIGlmICghcmFyZURhdGEpIHsK
ICAgICAgICAgaWYgKCFsb2dpY2FsT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICByYXJlRGF0YSA9ICZlbnN1cmVSYXJlRGF0YSh0aGlzKTsKKyAgICAgICAgcmFyZURhdGEgPSAm
ZW5zdXJlQmxvY2tSYXJlRGF0YSh0aGlzKTsKICAgICB9CiAgICAgcmFyZURhdGEtPm1fcGFnZUxv
Z2ljYWxPZmZzZXQgPSBsb2dpY2FsT2Zmc2V0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCBiZmJmOWU3NzNiNDJlNTZiZmU1MzIxYzIzYmI4ZDAyNGI4
OTNkN2VjLi42Yzk1MDc3OTQ3Zjk1MDY5YzA3OTZkM2VmNzY1NWQ1OWE5YTg0YmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTMwLDYgKzEzMCw3IEBA
IFJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCgpCiAgICAgcmVuZGVyT2JqZWN0Q291bnRlci5k
ZWNyZW1lbnQoKTsKICNlbmRpZgogICAgIHZpZXcoKS5kaWREZXN0cm95UmVuZGVyZXIoKTsKKyAg
ICBBU1NFUlQoIWhhc1JhcmVEYXRhKCkpOwogfQogCiBSZW5kZXJUaGVtZSYgUmVuZGVyT2JqZWN0
Ojp0aGVtZSgpIGNvbnN0CkBAIC0xOTAzLDYgKzE5MDQsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKCkKICAgICB9CiAKICAgICBjbGVhckxheW91dFJvb3RJZk5lZWRlZCgp
OworICAgIGNsZWFyUmFyZURhdGEoKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6Omluc2VydGVk
SW50b1RyZWUoKQpAQCAtMjQ5NSw2ICsyNDk3LDUyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxj
dWxhdGVCb3JkZXJTdHlsZUNvbG9yKGNvbnN0IEVCb3JkZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJv
CiAgICAgfQogfQogCit2b2lkIFJlbmRlck9iamVjdDo6c2V0SXNEcmFnZ2luZyhib29sIGIpCit7
CisgICAgaWYgKGIpIHsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRJc0RyYWdnaW5nKHRy
dWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChoYXNSYXJlRGF0YSgpKQorICAg
ICAgICBlbnN1cmVSYXJlRGF0YSgpLnNldElzRHJhZ2dpbmcoZmFsc2UpOworfQorCit2b2lkIFJl
bmRlck9iamVjdDo6c2V0SGFzUmVmbGVjdGlvbihib29sIGIpCit7CisgICAgaWYgKGIpIHsKKyAg
ICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNSZWZsZWN0aW9uKHRydWUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVSYXJl
RGF0YSgpLnNldEhhc1JlZmxlY3Rpb24oZmFsc2UpOworfQorCitSZW5kZXJPYmplY3Q6OlJhcmVE
YXRhSGFzaCYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJhcmVEYXRhSGFzaD4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK1JlbmRl
ck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNv
bnN0Cit7CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0UmFyZURhdGEoKTsKKworICAgIHJldHVybiByYXJlRGF0YU1hcCgpLmdldCh0aGlzKTsKK30K
KworUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjplbnN1
cmVSYXJlRGF0YSgpCit7CisgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7CisgICAgcmV0dXJuIHJh
cmVEYXRhTWFwKCkuYWRkKHRoaXMsIFJlbmRlck9iamVjdFJhcmVEYXRhKCkpLml0ZXJhdG9yLT52
YWx1ZTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6OmNsZWFyUmFyZURhdGEoKQoreworICAgIHJh
cmVEYXRhTWFwKCkucmVtb3ZlKHRoaXMpOworICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGIxZjE4OTU1MGY0OWIz
NWMwNmIxZjY0ODUyOWM1YWZhYzIzZWJkNzguLjlkMDYxMDg3ZDMwNjI4MDExZmMyMDAzOTc2NjAw
ZjZhMTAwMWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAg
LTUxNSw3ICs1MTUsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0ZmllbGRzLmlzQm94KCk7IH0KICAgICBib29sIGlzUmVuZGVyVmlldygpIGNvbnN0ICB7
IHJldHVybiBtX2JpdGZpZWxkcy5pc0JveCgpICYmIG1fYml0ZmllbGRzLmlzVGV4dE9yUmVuZGVy
VmlldygpOyB9CiAgICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmlzSW5saW5lKCk7IH0gLy8gaW5saW5lIG9iamVjdAotICAgIGJvb2wgaXNEcmFnZ2luZygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzRHJhZ2dpbmcoKTsgfQogICAgIGJvb2wgaXNSZXBs
YWNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzUmVwbGFjZWQoKTsgfSAvLyBhICJy
ZXBsYWNlZCIgZWxlbWVudCAoc2VlIENTUykKICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7
IH0KIApAQCAtNjIzLDcgKzYyMiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNPdmVyZmxv
d0NsaXAoYm9vbCBiID0gdHJ1ZSkgeyBtX2JpdGZpZWxkcy5zZXRIYXNPdmVyZmxvd0NsaXAoYik7
IH0KICAgICB2b2lkIHNldEhhc0xheWVyKGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0
SGFzTGF5ZXIoYik7IH0KICAgICB2b2lkIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShi
b29sIGIgPSB0cnVlKSB7IG1fYml0ZmllbGRzLnNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eShiKTsgfQotICAgIHZvaWQgc2V0SGFzUmVmbGVjdGlvbihib29sIGIgPSB0cnVlKSB7IG1fYml0
ZmllbGRzLnNldEhhc1JlZmxlY3Rpb24oYik7IH0KKworICAgIGJvb2wgaXNEcmFnZ2luZygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5pc0Ry
YWdnaW5nKCk7IH0KKyAgICBib29sIGhhc1JlZmxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Jp
dGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzUmVmbGVjdGlvbigpOyB9CisK
KyAgICB2b2lkIHNldElzRHJhZ2dpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRIYXNSZWZsZWN0aW9u
KGJvb2wgPSB0cnVlKTsKIAogICAgIC8vIEhvb2sgc28gdGhhdCBSZW5kZXJUZXh0Q29udHJvbCBj
YW4gcmV0dXJuIHRoZSBsaW5lIGhlaWdodCBvZiBpdHMgaW5uZXIgcmVuZGVyZXIuCiAgICAgLy8g
Rm9yIG90aGVyIHJlbmRlcmVycywgdGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGxpbmVIZWlnaHQo
ZmFsc2UpLgpAQCAtNzU1LDggKzc1OSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIChpc0Zsb2F0aW5nKCkgfHwg
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOyB9CiAKLSAgICBib29sIGhhc1JlZmxlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSZWZsZWN0aW9uKCk7IH0KLQogICAgIC8vIEFw
cGxpZWQgYXMgYSAic2xvcCIgdG8gZGlydHkgcmVjdCBjaGVja3MgZHVyaW5nIHRoZSBvdXRsaW5l
IHBhaW50aW5nIHBoYXNlJ3MgZGlydHktcmVjdCBjaGVja3MuCiAgICAgaW50IG1heGltYWxPdXRs
aW5lU2l6ZShQYWludFBoYXNlKSBjb25zdDsKIApAQCAtODgzLDYgKzg4NSwxMSBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIGlzV0JSKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHNldEV2ZXJIYWRMYXlvdXQoYm9vbCBiKSB7
IG1fYml0ZmllbGRzLnNldEV2ZXJIYWRMYXlvdXQoYik7IH0KKworICAgIGJvb2wgaGFzUmFyZURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpOyB9CisgICAgdm9p
ZCBzZXRIYXNSYXJlRGF0YShib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0SGFzUmFyZURhdGEoYik7
IH0KKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0
c05lZWRMYXlvdXQoKTsKICNlbmRpZgpAQCAtOTE1LDcgKzkyMiw4IEBAIHByaXZhdGU6CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIFJlbmRlck9iamVjdEJpdGZpZWxkcyhjb25zdCBOb2RlJiBub2Rl
KQotICAgICAgICAgICAgOiBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKQorICAgICAgICAgICAgOiBt
X2hhc1JhcmVEYXRhKGZhbHNlKQorICAgICAgICAgICAgLCBtX2JlaW5nRGVzdHJveWVkKGZhbHNl
KQogICAgICAgICAgICAgLCBtX25lZWRzTGF5b3V0KGZhbHNlKQogICAgICAgICAgICAgLCBtX25l
ZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KGZhbHNlKQogICAgICAgICAgICAgLCBtX25vcm1h
bENoaWxkTmVlZHNMYXlvdXQoZmFsc2UpCkBAIC05MzAsMTEgKzkzOCw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAsIG1faXNSZXBsYWNlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0xpbmVC
cmVhayhmYWxzZSkKICAgICAgICAgICAgICwgbV9ob3Jpem9udGFsV3JpdGluZ01vZGUodHJ1ZSkK
LSAgICAgICAgICAgICwgbV9pc0RyYWdnaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX2hhc0xh
eWVyKGZhbHNlKQogICAgICAgICAgICAgLCBtX2hhc092ZXJmbG93Q2xpcChmYWxzZSkKICAgICAg
ICAgICAgICwgbV9oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1faGFzUmVmbGVjdGlvbihmYWxzZSkKICAgICAgICAgICAgICwgbV9ldmVySGFkTGF5b3V0
KGZhbHNlKQogICAgICAgICAgICAgLCBtX2NoaWxkcmVuSW5saW5lKGZhbHNlKQogICAgICAgICAg
ICAgLCBtX3Bvc2l0aW9uZWRTdGF0ZShJc1N0YXRpY2FsbHlQb3NpdGlvbmVkKQpAQCAtOTQzLDYg
Kzk0OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIG1fYm94RGVjb3JhdGlvblN0YXRlKE5v
Qm94RGVjb3JhdGlvbnMpCiAgICAgICAgIHsKICAgICAgICAgfQorCisgICAgICAgIEFERF9CT09M
RUFOX0JJVEZJRUxEKGhhc1JhcmVEYXRhLCBIYXNSYXJlRGF0YSk7CiAgICAgICAgIAogICAgICAg
ICBBRERfQk9PTEVBTl9CSVRGSUVMRChiZWluZ0Rlc3Ryb3llZCwgQmVpbmdEZXN0cm95ZWQpOwog
ICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChuZWVkc0xheW91dCwgTmVlZHNMYXlvdXQpOwpA
QCAtOTYwLDEyICs5NjgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoaXNSZXBsYWNlZCwgSXNSZXBsYWNlZCk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGlzTGluZUJyZWFrLCBJc0xpbmVCcmVhayk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGhvcml6b250YWxXcml0aW5nTW9kZSwgSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKLSAgICAgICAg
QUREX0JPT0xFQU5fQklURklFTEQoaXNEcmFnZ2luZywgSXNEcmFnZ2luZyk7CiAKICAgICAgICAg
QUREX0JPT0xFQU5fQklURklFTEQoaGFzTGF5ZXIsIEhhc0xheWVyKTsKICAgICAgICAgQUREX0JP
T0xFQU5fQklURklFTEQoaGFzT3ZlcmZsb3dDbGlwLCBIYXNPdmVyZmxvd0NsaXApOyAvLyBTZXQg
aW4gdGhlIGNhc2Ugb2Ygb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuCiAgICAgICAgIEFERF9C
T09MRUFOX0JJVEZJRUxEKGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSwgSGFzVHJhbnNmb3Jt
UmVsYXRlZFByb3BlcnR5KTsKLSAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzUmVmbGVj
dGlvbiwgSGFzUmVmbGVjdGlvbik7CisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKHVudXNl
ZCwgVW51c2VkKTsKIAogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChldmVySGFkTGF5b3V0
LCBFdmVySGFkTGF5b3V0KTsKIApAQCAtMTAwMSwxMiArMTAwOCwzMCBAQCBwcml2YXRlOgogICAg
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0Qm94RGVjb3JhdGlvblN0YXRlKEJveERlY29yYXRp
b25TdGF0ZSBib3hEZWNvcmF0aW9uU3RhdGUpIHsgbV9ib3hEZWNvcmF0aW9uU3RhdGUgPSBib3hE
ZWNvcmF0aW9uU3RhdGU7IH0KICAgICB9OwogCi0jdW5kZWYgQUREX0JPT0xFQU5fQklURklFTEQK
LQogICAgIFJlbmRlck9iamVjdEJpdGZpZWxkcyBtX2JpdGZpZWxkczsKIAotICAgIHZvaWQgc2V0
SXNEcmFnZ2luZyhib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0SXNEcmFnZ2luZyhiKTsgfQotICAg
IHZvaWQgc2V0RXZlckhhZExheW91dChib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0RXZlckhhZExh
eW91dChiKTsgfQorICAgIGNsYXNzIFJlbmRlck9iamVjdFJhcmVEYXRhIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFJlbmRlck9iamVjdFJhcmVEYXRhKCkKKyAgICAgICAgICAgIDogbV9pc0RyYWdn
aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBtX2hhc1JlZmxlY3Rpb24oZmFsc2UpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzRHJhZ2dpbmcs
IElzRHJhZ2dpbmcpOworICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNSZWZsZWN0aW9u
LCBIYXNSZWZsZWN0aW9uKTsKKyAgICB9OworICAgIAorICAgIC8vIE5vdGU6IFJlbmRlck9iamVj
dFJhcmVEYXRhIGlzIHN0b3JlZCBieSB2YWx1ZS4KKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0UmFyZURhdGE+IFJhcmVEYXRhSGFzaDsKKworICAg
IFJlbmRlck9iamVjdFJhcmVEYXRhIHJhcmVEYXRhKCkgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0
UmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7CisgICAgdm9pZCBjbGVhclJhcmVEYXRhKCk7Cisg
ICAgCisgICAgc3RhdGljIFJhcmVEYXRhSGFzaCYgcmFyZURhdGFNYXAoKTsKKworI3VuZGVmIEFE
RF9CT09MRUFOX0JJVEZJRUxECiB9OwogCiBpbmxpbmUgRnJhbWUmIFJlbmRlck9iamVjdDo6ZnJh
bWUoKSBjb25zdAo=
</data>
<flag name="review"
          id="275008"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>