<?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>161936</bug_id>
          
          <creation_ts>2016-09-13 16:55:44 -0700</creation_ts>
          <short_desc>[Cocoa] Improve performance of complex text codepath</short_desc>
          <delta_ts>2016-09-27 15:01: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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1229377</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-13 16:55:44 -0700</bug_when>
    <thetext>[Cocoa] Improve performance of complex text codepath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229381</commentid>
    <comment_count>1</comment_count>
      <attachid>288749</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-13 16:58:59 -0700</bug_when>
    <thetext>Created attachment 288749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229653</commentid>
    <comment_count>2</comment_count>
      <attachid>288749</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-14 11:30:24 -0700</bug_when>
    <thetext>Comment on attachment 288749
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        CoreText exposes a bit on the CTRunStatus which represents if the

s/if the/whether the/

&gt; Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:791
&gt; +                while (m_glyphOrigins.size() + 1 &lt; m_adjustedBaseAdvances.size())
&gt; +                    m_glyphOrigins.append(CGPointZero);

This seems like a really inefficient way to zero-fill an array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229673</commentid>
    <comment_count>3</comment_count>
      <attachid>288845</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-14 12:19:08 -0700</bug_when>
    <thetext>Created attachment 288845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229678</commentid>
    <comment_count>4</comment_count>
      <attachid>288845</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-14 12:52:36 -0700</bug_when>
    <thetext>Comment on attachment 288845
Patch

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

&gt; Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:795
&gt; +                auto oldSize = m_glyphOrigins.size();
&gt; +                m_glyphOrigins.grow(m_adjustedBaseAdvances.size());
&gt; +                auto newSize = m_glyphOrigins.size();
&gt; +                memset(m_glyphOrigins.data() + oldSize, 0, sizeof(CGPoint) * (newSize - oldSize));
&gt; +                m_glyphOrigins[m_glyphOrigins.size() - 1] = origins[i];

You&apos;re still running this code for time through the &quot;for (unsigned i = 0; i &lt; glyphCount; i++) {&quot; loop. Can you resized m_glyphOrigins up-front?

Also if we used a class that inherited from CGPoint and had a constructor, we wouldn&apos;t need to explicitly zero-fill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229748</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-14 14:41:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 288845 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288845&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:795
&gt; &gt; +                auto oldSize = m_glyphOrigins.size();
&gt; &gt; +                m_glyphOrigins.grow(m_adjustedBaseAdvances.size());
&gt; &gt; +                auto newSize = m_glyphOrigins.size();
&gt; &gt; +                memset(m_glyphOrigins.data() + oldSize, 0, sizeof(CGPoint) * (newSize - oldSize));
&gt; &gt; +                m_glyphOrigins[m_glyphOrigins.size() - 1] = origins[i];
&gt; 
&gt; You&apos;re still running this code for time through the &quot;for (unsigned i = 0; i
&gt; &lt; glyphCount; i++) {&quot; loop. Can you resized m_glyphOrigins up-front?

The whole point of this patch is to lazily append to the vector. The vector gets populated piece by piece (this zero-filling doesn&apos;t overlap any previous zero-fill).

&gt; 
&gt; Also if we used a class that inherited from CGPoint and had a constructor,
&gt; we wouldn&apos;t need to explicitly zero-fill.

True, but I don&apos;t think it&apos;s worth the added cognitive load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234082</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-27 15:01:20 -0700</bug_when>
    <thetext>Committed r206466: &lt;http://trac.webkit.org/changeset/206466&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288749</attachid>
            <date>2016-09-13 16:58:59 -0700</date>
            <delta_ts>2016-09-14 12:19:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161936-20160913165624.patch</filename>
            <type>text/plain</type>
            <size>7893</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZlMWJkM2IxYWQ4ZTMy
MjExZDVmOThlNzIzNDIzNzg3YzI1NzE4NC4uYmI3YWMyOTRjYjY5OTZkNmVkNDU1OTk4MDhkMjY2
ZjhlZWQxYTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA5LTEzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJ
bXByb3ZlIHBlcmZvcm1hbmNlIG9mIGNvbXBsZXggdGV4dCBjb2RlcGF0aAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTM2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29yZVRleHQgZXhwb3NlcyBhIGJp
dCBvbiB0aGUgQ1RSdW5TdGF0dXMgd2hpY2ggcmVwcmVzZW50cyBpZiB0aGUKKyAgICAgICAgcnVu
IGFjdHVhbGx5IHVzZXMgdGhlIGdseXBoIG9yaWdpbnMgY29uY2VwdCBpbnRyb2R1Y2VkIGluIHIy
MDUzOTYuCisgICAgICAgIElmIHRoaXMgYml0IGlzIG5vdCBzZXQsIHdlIGNhbiB1c2UgdGhlIChz
bGlnaHRseSBmYXN0ZXIpIGNhbGwgdG8KKyAgICAgICAgQ1RSdW5HZXRBZHZhbmNlcygpIGluc3Rl
YWQgb2YgQ1RSdW5HZXRCYXNlQWR2YW5jZXNBbmRPcmlnaW5zKCkuCisgICAgICAgIEluIGFkZGl0
aW9uLCBpZiBub25lIG9mIHRoZSBydW5zIGhhdmUgdGhpcyBiaXQgc2V0LCB3ZSBkb24ndCBuZWVk
CisgICAgICAgIHRvIGFsbG9jYXRlIHN0b3JhZ2UgZm9yIHRoZSB2ZWN0b3Igb2Ygb3JpZ2lucyBh
dCBhbGwsIHRoZXJlYnkgdXNpbmcKKyAgICAgICAgbGVzcyBtZW1vcnkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1
bjo6Z2x5cGhPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Z2x5cGhPcmlnaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRTUEkuaDoKKwogMjAxNi0wOS0xMyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIGJ1
aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZThjZDdjYjA2NGU2YTYz
NGZmYjAyMTI3MzNiY2JiMmMzZDBjYThhOC4uNTE2NDQ5NmM2NzRlNGJkZmEyMzBjYjhmYjQwMmYw
NTk3MzJjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTU2OCw5ICs1Njgs
OSBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQs
IEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICBpZiAoZ2x5cGhCdWZmZXIgJiYg
IWxlZnRtb3N0R2x5cGgpIHsKICAgICAgICAgICAgIENHU2l6ZSBpbml0aWFsQWR2YW5jZSA9IGNv
bXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCk7CiAjaWYgVVNFX0xBWU9VVF9TUEVDSUZJQ19B
RFZBTkNFUwotICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBsdHIgPyAwIDogbV9nbHlwaE9y
aWdpbnMuc2l6ZSgpIC0gMTsKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlLndpZHRoICs9IG1f
Z2x5cGhPcmlnaW5zW2luZGV4XS54OwotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0
ICs9IG1fZ2x5cGhPcmlnaW5zW2luZGV4XS55OworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBsdHIgPyAwIDogbV9hZGp1c3RlZEJhc2VBZHZhbmNlcy5zaXplKCkgLSAxOworICAgICAgICAg
ICAgaW5pdGlhbEFkdmFuY2Uud2lkdGggKz0gZ2x5cGhPcmlnaW4oaW5kZXgpLng7CisgICAgICAg
ICAgICBpbml0aWFsQWR2YW5jZS5oZWlnaHQgKz0gZ2x5cGhPcmlnaW4oaW5kZXgpLnk7CiAjZW5k
aWYKICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2
YW5jZSk7CiAKQEAgLTU5Nyw4ICs1OTcsOCBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6
YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAg
ICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFkdmFuY2UgPSBhZGp1c3RlZEJh
c2VBZHZhbmNlOwogI2lmIFVTRV9MQVlPVVRfU1BFQ0lGSUNfQURWQU5DRVMKICAgICAgICAgICAg
ICAgICBpZiAoayArIDEgPCBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLnNpemUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNlLndpZHRoKCkg
KyBtX2dseXBoT3JpZ2luc1trICsgMV0ueCAtIG1fZ2x5cGhPcmlnaW5zW2tdLngpOwotICAgICAg
ICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQo
KSAtIG1fZ2x5cGhPcmlnaW5zW2sgKyAxXS55ICsgbV9nbHlwaE9yaWdpbnNba10ueSk7CisgICAg
ICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgo
KSArIGdseXBoT3JpZ2luKGsgKyAxKS54IC0gZ2x5cGhPcmlnaW4oaykueCk7CisgICAgICAgICAg
ICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpIC0g
Z2x5cGhPcmlnaW4oayArIDEpLnkgKyBnbHlwaE9yaWdpbihrKS55KTsKICAgICAgICAgICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWRkKG1fYWRqdXN0ZWRH
bHlwaHNba10sICZjb21wbGV4VGV4dFJ1bi5mb250KCksIHBhaW50QWR2YW5jZSwgY29tcGxleFRl
eHRSdW4uaW5kZXhBdChtX2dseXBoSW5DdXJyZW50UnVuKSk7CkBAIC03ODYsNyArNzg2LDExIEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAg
ICAgICAgICAgICBhZHZhbmNlLmhlaWdodCAqPSAtMTsKICAgICAgICAgICAgIG1fYWRqdXN0ZWRC
YXNlQWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwogI2lmIFVTRV9MQVlPVVRfU1BFQ0lGSUNfQURW
QU5DRVMKLSAgICAgICAgICAgIG1fZ2x5cGhPcmlnaW5zLmFwcGVuZChjb21wbGV4VGV4dFJ1bi5n
bHlwaE9yaWdpbnMoKVtpXSk7CisgICAgICAgICAgICBpZiAoYXV0byogb3JpZ2lucyA9IGNvbXBs
ZXhUZXh0UnVuLmdseXBoT3JpZ2lucygpKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKG1fZ2x5
cGhPcmlnaW5zLnNpemUoKSArIDEgPCBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLnNpemUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9nbHlwaE9yaWdpbnMuYXBwZW5kKENHUG9pbnRaZXJvKTsKKyAg
ICAgICAgICAgICAgICBtX2dseXBoT3JpZ2lucy5hcHBlbmQob3JpZ2luc1tpXSk7CisgICAgICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIG1fYWRqdXN0ZWRHbHlwaHMuYXBwZW5kKGdseXBo
KTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IDJmNWViNTg0MTJk
NGM4ZmZmYmE4NGVlYzVjNGY4Yzg2ZDU0NTBjYTMuLjgxNWFkZDE0ZGFlNDU2OWFlYjBiNzhkZTU1
MTVkOWYwZDJmNmE4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgKi8KICAgICAgICAgQ0dTaXplIGluaXRpYWxBZHZhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsQWR2YW5jZTsgfQogICAgICAgICBjb25zdCBDR1Np
emUqIGJhc2VBZHZhbmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUFkdmFuY2VzOyB9Ci0gICAg
ICAgIGNvbnN0IENHUG9pbnQqIGdseXBoT3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhP
cmlnaW5zLmRhdGEoKTsgfQorICAgICAgICBjb25zdCBDR1BvaW50KiBnbHlwaE9yaWdpbnMoKSBj
b25zdCB7IHJldHVybiBtX2dseXBoT3JpZ2lucy5zaXplKCkgPT0gZ2x5cGhDb3VudCgpID8gbV9n
bHlwaE9yaWdpbnMuZGF0YSgpIDogbnVsbHB0cjsgfQogICAgICAgICBib29sIGlzTFRSKCkgY29u
c3QgeyByZXR1cm4gbV9pc0xUUjsgfQogICAgICAgICBib29sIGlzTW9ub3RvbmljKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01vbm90b25pYzsgfQogICAgICAgICB2b2lkIHNldElzTm9uTW9ub3Rvbmlj
KCk7CkBAIC0xNTAsNiArMTUwLDggQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IHJ1bldpZHRoU29G
YXJGcmFjdGlvbih1bnNpZ25lZCBnbHlwaFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBnbHlwaEVuZE9m
ZnNldCwgdW5zaWduZWQgb2xkQ2hhcmFjdGVySW5DdXJyZW50R2x5cGgsIEdseXBoSXRlcmF0aW9u
U3R5bGUpIGNvbnN0OwogCisgICAgQ0dQb2ludCBnbHlwaE9yaWdpbih1bnNpZ25lZCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gaW5kZXggPCBtX2dseXBoT3JpZ2lucy5zaXplKCkgPyBtX2dseXBoT3Jp
Z2luc1tpbmRleF0gOiBDR1BvaW50WmVybzsgfQorCiAgICAgVmVjdG9yPENHU2l6ZSwgMjU2PiBt
X2FkanVzdGVkQmFzZUFkdmFuY2VzOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IG1fZ2x5cGhP
cmlnaW5zOwogICAgIFZlY3RvcjxDR0dseXBoLCAyNTY+IG1fYWRqdXN0ZWRHbHlwaHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNWEzOTU2OTlkMGY5MzM5
OTM5ZTk4YjMxY2UyMzA4OTkyNTY1OTM5Mi4uNTgyMTQyOWQ0ZmQwOWIwYTVmNGUwMDExYTc3MTEx
NTAwNTgwNDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQpA
QCAtMTMzLDE4ICsxMzMsMjEgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1
bjo6Q29tcGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IEZvbnQKICAgICB9CiAKICNp
ZiBVU0VfTEFZT1VUX1NQRUNJRklDX0FEVkFOQ0VTCi0gICAgbV9iYXNlQWR2YW5jZXNWZWN0b3Iu
Z3JvdyhtX2dseXBoQ291bnQpOwotICAgIG1fZ2x5cGhPcmlnaW5zLmdyb3cobV9nbHlwaENvdW50
KTsKLSAgICBDVFJ1bkdldEJhc2VBZHZhbmNlc0FuZE9yaWdpbnMoY3RSdW4sIENGUmFuZ2VNYWtl
KDAsIDApLCBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5kYXRhKCksIG1fZ2x5cGhPcmlnaW5zLmRhdGEo
KSk7Ci0gICAgbV9iYXNlQWR2YW5jZXMgPSBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5kYXRhKCk7Ci0j
ZWxzZQotICAgIG1fYmFzZUFkdmFuY2VzID0gQ1RSdW5HZXRBZHZhbmNlc1B0cihjdFJ1bik7Ci0g
ICAgaWYgKCFtX2Jhc2VBZHZhbmNlcykgeworICAgIGlmIChDVFJ1bkdldFN0YXR1cyhjdFJ1bikg
JiBrQ1RSdW5TdGF0dXNIYXNPcmlnaW5zKSB7CiAgICAgICAgIG1fYmFzZUFkdmFuY2VzVmVjdG9y
Lmdyb3cobV9nbHlwaENvdW50KTsKLSAgICAgICAgQ1RSdW5HZXRBZHZhbmNlcyhjdFJ1biwgQ0ZS
YW5nZU1ha2UoMCwgMCksIG1fYmFzZUFkdmFuY2VzVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIG1f
Z2x5cGhPcmlnaW5zLmdyb3cobV9nbHlwaENvdW50KTsKKyAgICAgICAgQ1RSdW5HZXRCYXNlQWR2
YW5jZXNBbmRPcmlnaW5zKGN0UnVuLCBDRlJhbmdlTWFrZSgwLCAwKSwgbV9iYXNlQWR2YW5jZXNW
ZWN0b3IuZGF0YSgpLCBtX2dseXBoT3JpZ2lucy5kYXRhKCkpOwogICAgICAgICBtX2Jhc2VBZHZh
bmNlcyA9IG1fYmFzZUFkdmFuY2VzVmVjdG9yLmRhdGEoKTsKLSAgICB9CisgICAgfSBlbHNlCiAj
ZW5kaWYKKyAgICB7CisgICAgICAgIG1fYmFzZUFkdmFuY2VzID0gQ1RSdW5HZXRBZHZhbmNlc1B0
cihjdFJ1bik7CisgICAgICAgIGlmICghbV9iYXNlQWR2YW5jZXMpIHsKKyAgICAgICAgICAgIG1f
YmFzZUFkdmFuY2VzVmVjdG9yLmdyb3cobV9nbHlwaENvdW50KTsKKyAgICAgICAgICAgIENUUnVu
R2V0QWR2YW5jZXMoY3RSdW4sIENGUmFuZ2VNYWtlKDAsIDApLCBtX2Jhc2VBZHZhbmNlc1ZlY3Rv
ci5kYXRhKCkpOworICAgICAgICAgICAgbV9iYXNlQWR2YW5jZXMgPSBtX2Jhc2VBZHZhbmNlc1Zl
Y3Rvci5kYXRhKCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIC8vIE1pc3NpbmcgZ2x5cGhzIHJ1
biBjb25zdHJ1Y3Rvci4gQ29yZSBUZXh0IHdpbGwgbm90IGdlbmVyYXRlIGEgcnVuIG9mIG1pc3Np
bmcgZ2x5cGhzLCBpbnN0ZWFkIGZhbGxpbmcgYmFjayBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0NvcmVUZXh0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRTUEkuaAppbmRleCBhZmQwOWVlMDhhYjUzYzRiNjE5
Y2NhMWQ3ZDI2NjQxNDVhYWNmM2FkLi45Y2JmNTI3NDg2OGJhYzZhZTQ4NDE1NTE5ZWY0M2NiODVl
NmU0N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29y
ZVRleHRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRl
eHRTUEkuaApAQCAtNTQsNiArNTQsMTAgQEAgdHlwZWRlZiBDRl9PUFRJT05TKHVpbnQzMl90LCBD
VEZvbnREZXNjcmlwdG9yT3B0aW9ucykKICAgICBrQ1RGb250RGVzY3JpcHRvck9wdGlvblByZWZl
ckFwcGxlU3lzdGVtRm9udCA9IGtDVEZvbnRPcHRpb25zUHJlZmVyU3lzdGVtRm9udAogfTsKIAor
ZW51bSB7CisgICAga0NUUnVuU3RhdHVzSGFzT3JpZ2lucyA9ICgxIDw8IDQpLCAKK307CisKICNl
bmRpZgogCiBXVEZfRVhURVJOX0NfQkVHSU4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288845</attachid>
            <date>2016-09-14 12:19:08 -0700</date>
            <delta_ts>2016-09-26 14:41:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161936-20160914121631.patch</filename>
            <type>text/plain</type>
            <size>8286</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY1MGVhZjJjZDhjOWY5
NzMwNjJkNDk3OWFjNWYwOTcyMGVkNWRhYS4uZTc1M2FhMDY1YmZhMDhiMDM3ZThkMGRhMDdmNWEz
YmNmNjIyZDQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA5LTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJ
bXByb3ZlIHBlcmZvcm1hbmNlIG9mIGNvbXBsZXggdGV4dCBjb2RlcGF0aAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTM2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29yZVRleHQgZXhwb3NlcyBhIGJp
dCBvbiB0aGUgQ1RSdW5TdGF0dXMgd2hpY2ggcmVwcmVzZW50cyB3aGV0aGVyCisgICAgICAgIHRo
ZSBydW4gYWN0dWFsbHkgdXNlcyB0aGUgZ2x5cGggb3JpZ2lucyBjb25jZXB0IGludHJvZHVjZWQg
aW4KKyAgICAgICAgcjIwNTM5Ni4gSWYgdGhpcyBiaXQgaXMgbm90IHNldCwgd2UgY2FuIHVzZSB0
aGUgKHNsaWdodGx5IGZhc3RlcikKKyAgICAgICAgY2FsbCB0byBDVFJ1bkdldEFkdmFuY2VzKCkg
aW5zdGVhZCBvZgorICAgICAgICBDVFJ1bkdldEJhc2VBZHZhbmNlc0FuZE9yaWdpbnMoKS4gSW4g
YWRkaXRpb24sIGlmIG5vbmUgb2YgdGhlIHJ1bnMKKyAgICAgICAgaGF2ZSB0aGlzIGJpdCBzZXQs
IHdlIGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgc3RvcmFnZSBmb3IgdGhlIHZlY3RvcgorICAgICAg
ICBvZiBvcmlnaW5zIGF0IGFsbCwgdGhlcmVieSB1c2luZyBsZXNzIG1lbW9yeS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFu
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhU
ZXh0UnVuOjpnbHlwaE9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjpnbHlwaE9yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxl
eFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oOgorCiAyMDE2LTA5LTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvd1JlbmRlclRyZWUgc2hv
dWxkIHRha2UgcG9zaXRpb24gb2Zmc2V0IGludG8gYWNjb3VudCB3aGVuIHByaW50aW5nIGluZmxv
dyBwb3NpdGlvbmVkIHJlbmRlcmVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZThjZDdjYjA2NGU2YTYzNGZmYjAyMTI3MzNiY2JiMmMzZDBjYThhOC4uZTBhMGJjOGY5ODE4ZmQ4
M2E2ZTg4NDcxYzI4NTE0NTA3OWZkNTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
QEAgLTU2OCw5ICs1NjgsOSBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1
bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICBpZiAo
Z2x5cGhCdWZmZXIgJiYgIWxlZnRtb3N0R2x5cGgpIHsKICAgICAgICAgICAgIENHU2l6ZSBpbml0
aWFsQWR2YW5jZSA9IGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCk7CiAjaWYgVVNFX0xB
WU9VVF9TUEVDSUZJQ19BRFZBTkNFUwotICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBsdHIg
PyAwIDogbV9nbHlwaE9yaWdpbnMuc2l6ZSgpIC0gMTsKLSAgICAgICAgICAgIGluaXRpYWxBZHZh
bmNlLndpZHRoICs9IG1fZ2x5cGhPcmlnaW5zW2luZGV4XS54OwotICAgICAgICAgICAgaW5pdGlh
bEFkdmFuY2UuaGVpZ2h0ICs9IG1fZ2x5cGhPcmlnaW5zW2luZGV4XS55OworICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBsdHIgPyAwIDogbV9hZGp1c3RlZEJhc2VBZHZhbmNlcy5zaXplKCkg
LSAxOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Uud2lkdGggKz0gZ2x5cGhPcmlnaW4oaW5k
ZXgpLng7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZS5oZWlnaHQgKz0gZ2x5cGhPcmlnaW4o
aW5kZXgpLnk7CiAjZW5kaWYKICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2
YW5jZShpbml0aWFsQWR2YW5jZSk7CiAKQEAgLTU5Nyw4ICs1OTcsOCBAQCB2b2lkIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlw
aEJ1ZmZlciwgRwogICAgICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFkdmFu
Y2UgPSBhZGp1c3RlZEJhc2VBZHZhbmNlOwogI2lmIFVTRV9MQVlPVVRfU1BFQ0lGSUNfQURWQU5D
RVMKICAgICAgICAgICAgICAgICBpZiAoayArIDEgPCBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLnNp
emUoKSkgewotICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRB
ZHZhbmNlLndpZHRoKCkgKyBtX2dseXBoT3JpZ2luc1trICsgMV0ueCAtIG1fZ2x5cGhPcmlnaW5z
W2tdLngpOwotICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50
QWR2YW5jZS5oZWlnaHQoKSAtIG1fZ2x5cGhPcmlnaW5zW2sgKyAxXS55ICsgbV9nbHlwaE9yaWdp
bnNba10ueSk7CisgICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWlu
dEFkdmFuY2Uud2lkdGgoKSArIGdseXBoT3JpZ2luKGsgKyAxKS54IC0gZ2x5cGhPcmlnaW4oayku
eCk7CisgICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZh
bmNlLmhlaWdodCgpIC0gZ2x5cGhPcmlnaW4oayArIDEpLnkgKyBnbHlwaE9yaWdpbihrKS55KTsK
ICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+
YWRkKG1fYWRqdXN0ZWRHbHlwaHNba10sICZjb21wbGV4VGV4dFJ1bi5mb250KCksIHBhaW50QWR2
YW5jZSwgY29tcGxleFRleHRSdW4uaW5kZXhBdChtX2dseXBoSW5DdXJyZW50UnVuKSk7CkBAIC03
ODYsNyArNzg2LDE1IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNB
bmRBZHZhbmNlcygpCiAgICAgICAgICAgICBhZHZhbmNlLmhlaWdodCAqPSAtMTsKICAgICAgICAg
ICAgIG1fYWRqdXN0ZWRCYXNlQWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwogI2lmIFVTRV9MQVlP
VVRfU1BFQ0lGSUNfQURWQU5DRVMKLSAgICAgICAgICAgIG1fZ2x5cGhPcmlnaW5zLmFwcGVuZChj
b21wbGV4VGV4dFJ1bi5nbHlwaE9yaWdpbnMoKVtpXSk7CisgICAgICAgICAgICBpZiAoYXV0byog
b3JpZ2lucyA9IGNvbXBsZXhUZXh0UnVuLmdseXBoT3JpZ2lucygpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG1fZ2x5cGhPcmlnaW5zLnNpemUoKSA8IG1fYWRqdXN0ZWRCYXNlQWR2YW5jZXMu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2dseXBoT3JpZ2lucy5z
aXplKCk7CisgICAgICAgICAgICAgICAgbV9nbHlwaE9yaWdpbnMuZ3JvdyhtX2FkanVzdGVkQmFz
ZUFkdmFuY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdTaXplID0gbV9nbHlw
aE9yaWdpbnMuc2l6ZSgpOworICAgICAgICAgICAgICAgIG1lbXNldChtX2dseXBoT3JpZ2lucy5k
YXRhKCkgKyBvbGRTaXplLCAwLCBzaXplb2YoQ0dQb2ludCkgKiAobmV3U2l6ZSAtIG9sZFNpemUp
KTsKKyAgICAgICAgICAgICAgICBtX2dseXBoT3JpZ2luc1ttX2dseXBoT3JpZ2lucy5zaXplKCkg
LSAxXSA9IG9yaWdpbnNbaV07CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ2x5cGhPcmlnaW5z
LnNpemUoKSA9PSBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLnNpemUoKSk7CisgICAgICAgICAgICB9
CiAjZW5kaWYKICAgICAgICAgICAgIG1fYWRqdXN0ZWRHbHlwaHMuYXBwZW5kKGdseXBoKTsKICAg
ICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IDJmNWViNTg0MTJkNGM4ZmZm
YmE4NGVlYzVjNGY4Yzg2ZDU0NTBjYTMuLjgxNWFkZDE0ZGFlNDU2OWFlYjBiNzhkZTU1MTVkOWYw
ZDJmNmE4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgKi8KICAgICAgICAgQ0dTaXplIGluaXRpYWxBZHZhbmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pbml0aWFsQWR2YW5jZTsgfQogICAgICAgICBjb25zdCBDR1NpemUqIGJh
c2VBZHZhbmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUFkdmFuY2VzOyB9Ci0gICAgICAgIGNv
bnN0IENHUG9pbnQqIGdseXBoT3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhPcmlnaW5z
LmRhdGEoKTsgfQorICAgICAgICBjb25zdCBDR1BvaW50KiBnbHlwaE9yaWdpbnMoKSBjb25zdCB7
IHJldHVybiBtX2dseXBoT3JpZ2lucy5zaXplKCkgPT0gZ2x5cGhDb3VudCgpID8gbV9nbHlwaE9y
aWdpbnMuZGF0YSgpIDogbnVsbHB0cjsgfQogICAgICAgICBib29sIGlzTFRSKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0xUUjsgfQogICAgICAgICBib29sIGlzTW9ub3RvbmljKCkgY29uc3QgeyByZXR1
cm4gbV9pc01vbm90b25pYzsgfQogICAgICAgICB2b2lkIHNldElzTm9uTW9ub3RvbmljKCk7CkBA
IC0xNTAsNiArMTUwLDggQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IHJ1bldpZHRoU29GYXJGcmFj
dGlvbih1bnNpZ25lZCBnbHlwaFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBnbHlwaEVuZE9mZnNldCwg
dW5zaWduZWQgb2xkQ2hhcmFjdGVySW5DdXJyZW50R2x5cGgsIEdseXBoSXRlcmF0aW9uU3R5bGUp
IGNvbnN0OwogCisgICAgQ0dQb2ludCBnbHlwaE9yaWdpbih1bnNpZ25lZCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5kZXggPCBtX2dseXBoT3JpZ2lucy5zaXplKCkgPyBtX2dseXBoT3JpZ2luc1tp
bmRleF0gOiBDR1BvaW50WmVybzsgfQorCiAgICAgVmVjdG9yPENHU2l6ZSwgMjU2PiBtX2FkanVz
dGVkQmFzZUFkdmFuY2VzOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IG1fZ2x5cGhPcmlnaW5z
OwogICAgIFZlY3RvcjxDR0dseXBoLCAyNTY+IG1fYWRqdXN0ZWRHbHlwaHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNWEzOTU2OTlkMGY5MzM5OTM5ZTk4
YjMxY2UyMzA4OTkyNTY1OTM5Mi4uNTgyMTQyOWQ0ZmQwOWIwYTVmNGUwMDExYTc3MTExNTAwNTgw
NDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQpAQCAtMTMz
LDE4ICsxMzMsMjEgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29t
cGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IEZvbnQKICAgICB9CiAKICNpZiBVU0Vf
TEFZT1VUX1NQRUNJRklDX0FEVkFOQ0VTCi0gICAgbV9iYXNlQWR2YW5jZXNWZWN0b3IuZ3Jvdyht
X2dseXBoQ291bnQpOwotICAgIG1fZ2x5cGhPcmlnaW5zLmdyb3cobV9nbHlwaENvdW50KTsKLSAg
ICBDVFJ1bkdldEJhc2VBZHZhbmNlc0FuZE9yaWdpbnMoY3RSdW4sIENGUmFuZ2VNYWtlKDAsIDAp
LCBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5kYXRhKCksIG1fZ2x5cGhPcmlnaW5zLmRhdGEoKSk7Ci0g
ICAgbV9iYXNlQWR2YW5jZXMgPSBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5kYXRhKCk7Ci0jZWxzZQot
ICAgIG1fYmFzZUFkdmFuY2VzID0gQ1RSdW5HZXRBZHZhbmNlc1B0cihjdFJ1bik7Ci0gICAgaWYg
KCFtX2Jhc2VBZHZhbmNlcykgeworICAgIGlmIChDVFJ1bkdldFN0YXR1cyhjdFJ1bikgJiBrQ1RS
dW5TdGF0dXNIYXNPcmlnaW5zKSB7CiAgICAgICAgIG1fYmFzZUFkdmFuY2VzVmVjdG9yLmdyb3co
bV9nbHlwaENvdW50KTsKLSAgICAgICAgQ1RSdW5HZXRBZHZhbmNlcyhjdFJ1biwgQ0ZSYW5nZU1h
a2UoMCwgMCksIG1fYmFzZUFkdmFuY2VzVmVjdG9yLmRhdGEoKSk7CisgICAgICAgIG1fZ2x5cGhP
cmlnaW5zLmdyb3cobV9nbHlwaENvdW50KTsKKyAgICAgICAgQ1RSdW5HZXRCYXNlQWR2YW5jZXNB
bmRPcmlnaW5zKGN0UnVuLCBDRlJhbmdlTWFrZSgwLCAwKSwgbV9iYXNlQWR2YW5jZXNWZWN0b3Iu
ZGF0YSgpLCBtX2dseXBoT3JpZ2lucy5kYXRhKCkpOwogICAgICAgICBtX2Jhc2VBZHZhbmNlcyA9
IG1fYmFzZUFkdmFuY2VzVmVjdG9yLmRhdGEoKTsKLSAgICB9CisgICAgfSBlbHNlCiAjZW5kaWYK
KyAgICB7CisgICAgICAgIG1fYmFzZUFkdmFuY2VzID0gQ1RSdW5HZXRBZHZhbmNlc1B0cihjdFJ1
bik7CisgICAgICAgIGlmICghbV9iYXNlQWR2YW5jZXMpIHsKKyAgICAgICAgICAgIG1fYmFzZUFk
dmFuY2VzVmVjdG9yLmdyb3cobV9nbHlwaENvdW50KTsKKyAgICAgICAgICAgIENUUnVuR2V0QWR2
YW5jZXMoY3RSdW4sIENGUmFuZ2VNYWtlKDAsIDApLCBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5kYXRh
KCkpOworICAgICAgICAgICAgbV9iYXNlQWR2YW5jZXMgPSBtX2Jhc2VBZHZhbmNlc1ZlY3Rvci5k
YXRhKCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIC8vIE1pc3NpbmcgZ2x5cGhzIHJ1biBjb25z
dHJ1Y3Rvci4gQ29yZSBUZXh0IHdpbGwgbm90IGdlbmVyYXRlIGEgcnVuIG9mIG1pc3NpbmcgZ2x5
cGhzLCBpbnN0ZWFkIGZhbGxpbmcgYmFjayBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2NvY29hL0NvcmVUZXh0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvY29jb2EvQ29yZVRleHRTUEkuaAppbmRleCBhZmQwOWVlMDhhYjUzYzRiNjE5Y2NhMWQ3
ZDI2NjQxNDVhYWNmM2FkLi45Y2JmNTI3NDg2OGJhYzZhZTQ4NDE1NTE5ZWY0M2NiODVlNmU0N2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRT
UEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRTUEku
aApAQCAtNTQsNiArNTQsMTAgQEAgdHlwZWRlZiBDRl9PUFRJT05TKHVpbnQzMl90LCBDVEZvbnRE
ZXNjcmlwdG9yT3B0aW9ucykKICAgICBrQ1RGb250RGVzY3JpcHRvck9wdGlvblByZWZlckFwcGxl
U3lzdGVtRm9udCA9IGtDVEZvbnRPcHRpb25zUHJlZmVyU3lzdGVtRm9udAogfTsKIAorZW51bSB7
CisgICAga0NUUnVuU3RhdHVzSGFzT3JpZ2lucyA9ICgxIDw8IDQpLCAKK307CisKICNlbmRpZgog
CiBXVEZfRVhURVJOX0NfQkVHSU4K
</data>
<flag name="review"
          id="312125"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>