<?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>142925</bug_id>
          
          <creation_ts>2015-03-20 15:33:51 -0700</creation_ts>
          <short_desc>[WK2] NetworkCache retrievals sometimes fail on browser startup</short_desc>
          <delta_ts>2015-03-22 22:12:37 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078966</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 15:33:51 -0700</bug_when>
    <thetext>NetworkCache retrievals sometimes fail on browser startup for resources that are actually cached. The reason is that we are using a bloom filter for performance reasons to avoid unnecessary disk I/O and this bloom filter is populated on start up in a background thread by traversing the cache files on disk. However, when restoring the tabs on start-up we query this bloom filter before it is completely populated and we fails to retrieve the cached entry because we think it is not there.

Radar: &lt;rdar://problem/20245368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078967</commentid>
    <comment_count>1</comment_count>
      <attachid>249138</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 15:40:00 -0700</bug_when>
    <thetext>Created attachment 249138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078973</commentid>
    <comment_count>2</comment_count>
      <attachid>249138</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-20 15:53:39 -0700</bug_when>
    <thetext>Comment on attachment 249138
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:112
&gt; +    std::atomic&lt;bool&gt; m_isPopulatingContentsFilter { false };

Doesn’t seem good to have a time window where this is false at first, and then have it become true later. I think this should be:

    std::atomic&lt;bool&gt; m_hasPopulatedContentsFilter { false };

Then we could just set it to true once we are done with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078974</commentid>
    <comment_count>3</comment_count>
      <attachid>249138</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-20 15:54:49 -0700</bug_when>
    <thetext>Comment on attachment 249138
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:377
&gt; -    if (!m_contentsFilter.mayContain(key.shortHash())) {
&gt; +    if (!m_isPopulatingContentsFilter &amp;&amp; !m_contentsFilter.mayContain(key.shortHash())) {

There are number of other places where we check the bloom filter. Might those need this check too?

In any case it would be nicer to factor this into a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078978</commentid>
    <comment_count>4</comment_count>
      <attachid>249142</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 16:04:44 -0700</bug_when>
    <thetext>Created attachment 249142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078979</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 16:05:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 249138 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249138&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:112
&gt; &gt; +    std::atomic&lt;bool&gt; m_isPopulatingContentsFilter { false };
&gt; 
&gt; Doesn’t seem good to have a time window where this is false at first, and
&gt; then have it become true later. I think this should be:
&gt; 
&gt;     std::atomic&lt;bool&gt; m_hasPopulatedContentsFilter { false };
&gt; 
&gt; Then we could just set it to true once we are done with that.

Oh, I have just seen your comment. Yes, this makes sense. I&apos;ll update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078980</commentid>
    <comment_count>6</comment_count>
      <attachid>249143</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 16:08:00 -0700</bug_when>
    <thetext>Created attachment 249143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078981</commentid>
    <comment_count>7</comment_count>
      <attachid>249143</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 16:10:33 -0700</bug_when>
    <thetext>Comment on attachment 249143
Patch

Clearing flags on attachment: 249143

Committed r181816: &lt;http://trac.webkit.org/changeset/181816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078982</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-20 16:10:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079190</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-22 18:36:53 -0700</bug_when>
    <thetext>I don&apos;t think that an atomic value is sufficient - all it does is enforce consistency when accessing itself, not when accessing the filter data. You need an actual mutex or semaphore, and there are surprisingly few opportunities for smarts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079210</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-03-22 19:36:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I don&apos;t think that an atomic value is sufficient - all it does is enforce
&gt; consistency when accessing itself, not when accessing the filter data. You
&gt; need an actual mutex or semaphore, and there are surprisingly few
&gt; opportunities for smarts.

I think all errors are fine in this case. False negative from the bloom filter would result in a cache miss, false positive would result in looking up in the file system index. Additional locking overhead would probably be a net loss.

(&apos;atomic&apos; might be entirely moot, though it may usefully be preventing the compiler from coalescing bits into a bitfield.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079222</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-22 22:12:37 -0700</bug_when>
    <thetext>&gt; Additional locking overhead would probably be a net loss.

Sounds good to me, as long as the filter structure wouldn&apos;t cause a crash when incompletely visible to the thread using it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249138</attachid>
            <date>2015-03-20 15:40:00 -0700</date>
            <delta_ts>2015-03-20 16:04:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142925-20150320153927.patch</filename>
            <type>text/plain</type>
            <size>3639</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAyZjZiODM3ZGZjMzMx
YzcwYjJlYjM1Nzg2Yjc5ZjI0YTVlMTc3Ni4uY2I0YTExOTRhMmQxMDljNGU2NzQ2ZmIzMjRlMzUz
YjZkNTUwYWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE1LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl0gTmV0d29ya0NhY2hl
IHJldHJpZXZhbHMgc29tZXRpbWVzIGZhaWwgb24gYnJvd3NlciBzdGFydHVwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwMjQ1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5ldHdvcmtDYWNoZSByZXRyaWV2YWxzIHNvbWV0aW1lcyBmYWlsIG9u
IGJyb3dzZXIgc3RhcnR1cCBmb3IgcmVzb3VyY2VzCisgICAgICAgIHRoYXQgYXJlIGFjdHVhbGx5
IGNhY2hlZC4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGFyZSB1c2luZyBhIGJsb29tIGZpbHRlcgor
ICAgICAgICBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaXNr
IEkvTyBhbmQgdGhpcyBibG9vbQorICAgICAgICBmaWx0ZXIgaXMgcG9wdWxhdGVkIG9uIHN0YXJ0
IHVwIGluIGEgYmFja2dyb3VuZCB0aHJlYWQgYnkgdHJhdmVyc2luZyB0aGUKKyAgICAgICAgY2Fj
aGUgZmlsZXMgb24gZGlzay4gSG93ZXZlciwgd2hlbiByZXN0b3JpbmcgdGhlIHRhYnMgb24gc3Rh
cnQtdXAgd2UKKyAgICAgICAgc29tZXRpbWVzIHF1ZXJ5IHRoaXMgYmxvb20gZmlsdGVyIGJlZm9y
ZSBpdCBpcyBjb21wbGV0ZWx5IHBvcHVsYXRlZCBhbmQKKyAgICAgICAgd2UgdGh1cyBmYWlsIHRv
IHJldHJpZXZlIGNhY2hlZCBlbnRyaWVzIGJlY2F1c2Ugd2UgdGhpbmsgdGhleSBkb24ndAorICAg
ICAgICBleGlzdCBhbmQgZG9uJ3QgY2hlY2sgdGhlIGRpc2suCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGFuICJpc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciIgZmxhZyB0aGF0IGlzIHR1cm5l
ZCBPTgorICAgICAgICBvbiBzdGFydCB1cCB3aGlsZSB3ZSBhcmUgcG9wdWxhdGluZyB0aGUgYmxv
b24gZmlsdGVyLiBXZSB0aGVuIGJ5cGFzcworICAgICAgICB0aGUgYmxvb20gZmlsdGVyIGFuZCBz
ZW5kIHF1ZXJpZXMgZGlyZWN0bHkgdG8gZGlzayBvbiBzdGFydCB1cCBpZiB0aGlzCisgICAgICAg
IGZsYWcgaXMgT04uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRy
aWV2ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oOgorCisyMDE1LTAzLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAg
ICAgICAgW1dLMl0gQWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlc3RvcmluZyB0aGUgYnJvd3Nl
cidzIHNlc3Npb24gc3RhdGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjkxNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAyNDM0OTM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDY3ZWE3MWVjNzJjNDI1ZWRmNzI0ODliMDQ3ZDJhMGJjNTli
MzJjNGQuLmJmNWQwYTAyMzkyYmZhY2RhMGUxYzYxMzc1Yzc0ZDZiZmJlZjcxYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCkBAIC03NSw2ICs3NSw3IEBAIHZvaWQgU3RvcmFnZTo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIG1faXNQb3B1bGF0
aW5nQ29udGVudHNGaWx0ZXIgPSB0cnVlOwogICAgIFN0cmluZ0NhcHR1cmUgY2FjaGVQYXRoQ2Fw
dHVyZShtX2RpcmVjdG9yeVBhdGgpOwogCiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRj
aChbdGhpcywgY2FjaGVQYXRoQ2FwdHVyZV0gewpAQCAtOTIsNiArOTMsNyBAQCB2b2lkIFN0b3Jh
Z2U6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgV2ViQ29yZTo6Z2V0RmlsZVNpemUoZmlsZVBh
dGgsIGZpbGVTaXplKTsKICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVTaXplICs9IGZpbGVTaXpl
OwogICAgICAgICB9KTsKKyAgICAgICAgbV9pc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciA9IGZh
bHNlOwogICAgIH0pOwogfQogCkBAIC0zNzIsNyArMzc0LDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRy
aWV2ZShjb25zdCBLZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlv
bkhhbmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9jb250ZW50c0ZpbHRl
ci5tYXlDb250YWluKGtleS5zaG9ydEhhc2goKSkpIHsKKyAgICBpZiAoIW1faXNQb3B1bGF0aW5n
Q29udGVudHNGaWx0ZXIgJiYgIW1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbihrZXkuc2hvcnRI
YXNoKCkpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IDZjYjE5MDliODNiZGI4ZDdjOTgy
OWQyMDIwOTc0MDY5MDUxNDVlYWIuLjg1YWYwMGRiNjg2YjBmZDIxODBjOTUwY2RhOTY5NjVkZmQ1
YmU4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTEwOSw2ICsxMDksOCBAQCBwcml2YXRlOgog
ICAgIHNpemVfdCBtX21heGltdW1TaXplIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSB9OwogCiAgICAgQmxvb21GaWx0ZXI8MjA+IG1fY29udGVudHNGaWx0ZXI7CisgICAgc3Rk
OjphdG9taWM8Ym9vbD4gbV9pc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciB7IGZhbHNlIH07CisK
ICAgICBzdGQ6OmF0b21pYzxzaXplX3Q+IG1fYXBwcm94aW1hdGVTaXplIHsgMCB9OwogICAgIHN0
ZDo6YXRvbWljPGJvb2w+IG1fc2hyaW5rSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249142</attachid>
            <date>2015-03-20 16:04:44 -0700</date>
            <delta_ts>2015-03-20 16:07:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142925-20150320160411.patch</filename>
            <type>text/plain</type>
            <size>4857</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAyZjZiODM3ZGZjMzMx
YzcwYjJlYjM1Nzg2Yjc5ZjI0YTVlMTc3Ni4uY2I0YTExOTRhMmQxMDljNGU2NzQ2ZmIzMjRlMzUz
YjZkNTUwYWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE1LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl0gTmV0d29ya0NhY2hl
IHJldHJpZXZhbHMgc29tZXRpbWVzIGZhaWwgb24gYnJvd3NlciBzdGFydHVwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwMjQ1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5ldHdvcmtDYWNoZSByZXRyaWV2YWxzIHNvbWV0aW1lcyBmYWlsIG9u
IGJyb3dzZXIgc3RhcnR1cCBmb3IgcmVzb3VyY2VzCisgICAgICAgIHRoYXQgYXJlIGFjdHVhbGx5
IGNhY2hlZC4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGFyZSB1c2luZyBhIGJsb29tIGZpbHRlcgor
ICAgICAgICBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaXNr
IEkvTyBhbmQgdGhpcyBibG9vbQorICAgICAgICBmaWx0ZXIgaXMgcG9wdWxhdGVkIG9uIHN0YXJ0
IHVwIGluIGEgYmFja2dyb3VuZCB0aHJlYWQgYnkgdHJhdmVyc2luZyB0aGUKKyAgICAgICAgY2Fj
aGUgZmlsZXMgb24gZGlzay4gSG93ZXZlciwgd2hlbiByZXN0b3JpbmcgdGhlIHRhYnMgb24gc3Rh
cnQtdXAgd2UKKyAgICAgICAgc29tZXRpbWVzIHF1ZXJ5IHRoaXMgYmxvb20gZmlsdGVyIGJlZm9y
ZSBpdCBpcyBjb21wbGV0ZWx5IHBvcHVsYXRlZCBhbmQKKyAgICAgICAgd2UgdGh1cyBmYWlsIHRv
IHJldHJpZXZlIGNhY2hlZCBlbnRyaWVzIGJlY2F1c2Ugd2UgdGhpbmsgdGhleSBkb24ndAorICAg
ICAgICBleGlzdCBhbmQgZG9uJ3QgY2hlY2sgdGhlIGRpc2suCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGFuICJpc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciIgZmxhZyB0aGF0IGlzIHR1cm5l
ZCBPTgorICAgICAgICBvbiBzdGFydCB1cCB3aGlsZSB3ZSBhcmUgcG9wdWxhdGluZyB0aGUgYmxv
b24gZmlsdGVyLiBXZSB0aGVuIGJ5cGFzcworICAgICAgICB0aGUgYmxvb20gZmlsdGVyIGFuZCBz
ZW5kIHF1ZXJpZXMgZGlyZWN0bHkgdG8gZGlzayBvbiBzdGFydCB1cCBpZiB0aGlzCisgICAgICAg
IGZsYWcgaXMgT04uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRy
aWV2ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oOgorCisyMDE1LTAzLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAg
ICAgICAgW1dLMl0gQWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlc3RvcmluZyB0aGUgYnJvd3Nl
cidzIHNlc3Npb24gc3RhdGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjkxNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAyNDM0OTM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDY3ZWE3MWVjNzJjNDI1ZWRmNzI0ODliMDQ3ZDJhMGJjNTli
MzJjNGQuLmY5MThmZjRjZmM3NjNkYTYyNGYyNTRmODAyZjI2OWZmNzRkNTJlZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCkBAIC03NSw2ICs3NSw3IEBAIHZvaWQgU3RvcmFnZTo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIG1faXNQb3B1bGF0
aW5nQ29udGVudHNGaWx0ZXIgPSB0cnVlOwogICAgIFN0cmluZ0NhcHR1cmUgY2FjaGVQYXRoQ2Fw
dHVyZShtX2RpcmVjdG9yeVBhdGgpOwogCiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRj
aChbdGhpcywgY2FjaGVQYXRoQ2FwdHVyZV0gewpAQCAtOTIsNiArOTMsNyBAQCB2b2lkIFN0b3Jh
Z2U6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgV2ViQ29yZTo6Z2V0RmlsZVNpemUoZmlsZVBh
dGgsIGZpbGVTaXplKTsKICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVTaXplICs9IGZpbGVTaXpl
OwogICAgICAgICB9KTsKKyAgICAgICAgbV9pc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciA9IGZh
bHNlOwogICAgIH0pOwogfQogCkBAIC0zNzIsNyArMzc0LDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRy
aWV2ZShjb25zdCBLZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlv
bkhhbmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9jb250ZW50c0ZpbHRl
ci5tYXlDb250YWluKGtleS5zaG9ydEhhc2goKSkpIHsKKyAgICBpZiAoIWNhY2hlTWF5Q29udGFp
bihrZXkuc2hvcnRIYXNoKCkpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDYwLDcgKzQ2Miw3IEBAIHZvaWQgU3RvcmFn
ZTo6ZGlzcGF0Y2hQZW5kaW5nV3JpdGVPcGVyYXRpb25zKCkKICAgICAgICAgYXV0byYgd3JpdGUg
PSAqd3JpdGVPcGVyYXRpb247CiAgICAgICAgIG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLmFkZChX
VEY6Om1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAotICAgICAgICBpZiAod3JpdGUuZXhpc3RpbmdF
bnRyeSAmJiBtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUuZW50cnkua2V5LnNob3J0
SGFzaCgpKSkgeworICAgICAgICBpZiAod3JpdGUuZXhpc3RpbmdFbnRyeSAmJiBjYWNoZU1heUNv
bnRhaW4od3JpdGUuZW50cnkua2V5LnNob3J0SGFzaCgpKSkgewogICAgICAgICAgICAgZGlzcGF0
Y2hIZWFkZXJXcml0ZU9wZXJhdGlvbih3cml0ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQpAQCAtNTE1LDcgKzUxNyw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hIZWFkZXJX
cml0ZU9wZXJhdGlvbihjb25zdCBXcml0ZU9wZXJhdGlvbiYgd3JpdGUpCiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQod3JpdGUuZXhpc3RpbmdFbnRyeSk7CiAgICAg
QVNTRVJUKG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLmNvbnRhaW5zKCZ3cml0ZSkpOwotICAgIEFT
U0VSVChtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUuZW50cnkua2V5LnNob3J0SGFz
aCgpKSk7CisgICAgQVNTRVJUKGNhY2hlTWF5Q29udGFpbih3cml0ZS5lbnRyeS5rZXkuc2hvcnRI
YXNoKCkpKTsKIAogICAgIC8vIFRyeSB0byB1cGRhdGUgdGhlIGhlYWRlciBvZiBhbiBleGlzdGlu
ZyBlbnRyeS4KICAgICBTdHJpbmdDYXB0dXJlIGNhY2hlUGF0aENhcHR1cmUobV9kaXJlY3RvcnlQ
YXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCA2Y2IxOTA5YjgzYmRiOGQ3Yzk4MjlkMjAyMDk3
NDA2OTA1MTQ1ZWFiLi5mZjBmNDNkNmUyZTFlOTNlNTBkYTAzYzkyYjc1NGY5YmQ4ZTQ3NWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0xMDMsMTIgKzEwMywxNiBAQCBwcml2YXRlOgogICAgIFdv
cmtRdWV1ZSYgYmFja2dyb3VuZElPUXVldWUoKSB7IHJldHVybiBtX2JhY2tncm91bmRJT1F1ZXVl
LmdldCgpOyB9CiAgICAgV29ya1F1ZXVlJiBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpIHsgcmV0
dXJuIG1fc2VyaWFsQmFja2dyb3VuZElPUXVldWUuZ2V0KCk7IH0KIAorICAgIGJvb2wgY2FjaGVN
YXlDb250YWluKHVuc2lnbmVkIHNob3J0SGFzaCkgeyByZXR1cm4gbV9pc1BvcHVsYXRpbmdDb250
ZW50c0ZpbHRlciB8fCBtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4oc2hvcnRIYXNoKTsgfQor
CiAgICAgY29uc3QgU3RyaW5nIG1fYmFzZURpcmVjdG9yeVBhdGg7CiAgICAgY29uc3QgU3RyaW5n
IG1fZGlyZWN0b3J5UGF0aDsKIAogICAgIHNpemVfdCBtX21heGltdW1TaXplIHsgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogCiAgICAgQmxvb21GaWx0ZXI8MjA+IG1fY29u
dGVudHNGaWx0ZXI7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9pc1BvcHVsYXRpbmdDb250ZW50
c0ZpbHRlciB7IGZhbHNlIH07CisKICAgICBzdGQ6OmF0b21pYzxzaXplX3Q+IG1fYXBwcm94aW1h
dGVTaXplIHsgMCB9OwogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hyaW5rSW5Qcm9ncmVzcyB7
IGZhbHNlIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249143</attachid>
            <date>2015-03-20 16:08:00 -0700</date>
            <delta_ts>2015-03-20 16:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142925-20150320160727.patch</filename>
            <type>text/plain</type>
            <size>4821</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAyZjZiODM3ZGZjMzMx
YzcwYjJlYjM1Nzg2Yjc5ZjI0YTVlMTc3Ni4uODYyNGU3OTUxNmEwYjkzMTFjZWFlOTFiODI4Njg4
YjI3NDkyZGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE1LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl0gTmV0d29ya0NhY2hl
IHJldHJpZXZhbHMgc29tZXRpbWVzIGZhaWwgb24gYnJvd3NlciBzdGFydHVwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwMjQ1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgorCisgICAgICAgIE5ldHdvcmtDYWNoZSByZXRyaWV2YWxzIHNvbWV0aW1lcyBmYWlsIG9u
IGJyb3dzZXIgc3RhcnR1cCBmb3IgcmVzb3VyY2VzCisgICAgICAgIHRoYXQgYXJlIGFjdHVhbGx5
IGNhY2hlZC4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGFyZSB1c2luZyBhIGJsb29tIGZpbHRlcgor
ICAgICAgICBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaXNr
IEkvTyBhbmQgdGhpcyBibG9vbQorICAgICAgICBmaWx0ZXIgaXMgcG9wdWxhdGVkIG9uIHN0YXJ0
IHVwIGluIGEgYmFja2dyb3VuZCB0aHJlYWQgYnkgdHJhdmVyc2luZyB0aGUKKyAgICAgICAgY2Fj
aGUgZmlsZXMgb24gZGlzay4gSG93ZXZlciwgd2hlbiByZXN0b3JpbmcgdGhlIHRhYnMgb24gc3Rh
cnQtdXAgd2UKKyAgICAgICAgc29tZXRpbWVzIHF1ZXJ5IHRoaXMgYmxvb20gZmlsdGVyIGJlZm9y
ZSBpdCBpcyBjb21wbGV0ZWx5IHBvcHVsYXRlZCBhbmQKKyAgICAgICAgd2UgdGh1cyBmYWlsIHRv
IHJldHJpZXZlIGNhY2hlZCBlbnRyaWVzIGJlY2F1c2Ugd2UgdGhpbmsgdGhleSBkb24ndAorICAg
ICAgICBleGlzdCBhbmQgZG9uJ3QgY2hlY2sgdGhlIGRpc2suCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGFuICJpc1BvcHVsYXRpbmdDb250ZW50c0ZpbHRlciIgZmxhZyB0aGF0IGlzIHR1cm5l
ZCBPTgorICAgICAgICBvbiBzdGFydCB1cCB3aGlsZSB3ZSBhcmUgcG9wdWxhdGluZyB0aGUgYmxv
b24gZmlsdGVyLiBXZSB0aGVuIGJ5cGFzcworICAgICAgICB0aGUgYmxvb20gZmlsdGVyIGFuZCBz
ZW5kIHF1ZXJpZXMgZGlyZWN0bHkgdG8gZGlzayBvbiBzdGFydCB1cCBpZiB0aGlzCisgICAgICAg
IGZsYWcgaXMgT04uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRy
aWV2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hQ
ZW5kaW5nV3JpdGVPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpkaXNwYXRjaEhlYWRlcldyaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6Y2FjaGVNYXlDb250YWluKToKKworMjAxNS0wMy0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIEFsbG93IHN0YWxl
IGNvbnRlbnQgd2hlbiByZXN0b3JpbmcgdGhlIGJyb3dzZXIncyBzZXNzaW9uIHN0YXRlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MTYKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIwMjQzNDkzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA2
N2VhNzFlYzcyYzQyNWVkZjcyNDg5YjA0N2QyYTBiYzU5YjMyYzRkLi43MGM3MWVhMWJjNzllYTkw
ODUwMTZhNDVmNjcwOTU2N2Y5MmM4NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtOTIs
NiArOTIsNyBAQCB2b2lkIFN0b3JhZ2U6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgV2ViQ29y
ZTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICAgICAgICAgIG1fYXBwcm94
aW1hdGVTaXplICs9IGZpbGVTaXplOwogICAgICAgICB9KTsKKyAgICAgICAgbV9oYXNQb3B1bGF0
ZWRDb250ZW50c0ZpbHRlciA9IHRydWU7CiAgICAgfSk7CiB9CiAKQEAgLTM3Miw3ICszNzMsNyBA
QCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBwcmlvcml0
eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4oa2V5LnNob3J0SGFzaCgpKSkgeworICAg
IGlmICghY2FjaGVNYXlDb250YWluKGtleS5zaG9ydEhhc2goKSkpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjAsNyAr
NDYxLDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoKQog
ICAgICAgICBhdXRvJiB3cml0ZSA9ICp3cml0ZU9wZXJhdGlvbjsKICAgICAgICAgbV9hY3RpdmVX
cml0ZU9wZXJhdGlvbnMuYWRkKFdURjo6bW92ZSh3cml0ZU9wZXJhdGlvbikpOwogCi0gICAgICAg
IGlmICh3cml0ZS5leGlzdGluZ0VudHJ5ICYmIG1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbih3
cml0ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpKSB7CisgICAgICAgIGlmICh3cml0ZS5leGlzdGlu
Z0VudHJ5ICYmIGNhY2hlTWF5Q29udGFpbih3cml0ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpKSB7
CiAgICAgICAgICAgICBkaXNwYXRjaEhlYWRlcldyaXRlT3BlcmF0aW9uKHdyaXRlKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC01MTUsNyArNTE2LDcgQEAgdm9pZCBTdG9y
YWdlOjpkaXNwYXRjaEhlYWRlcldyaXRlT3BlcmF0aW9uKGNvbnN0IFdyaXRlT3BlcmF0aW9uJiB3
cml0ZSkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCh3cml0ZS5l
eGlzdGluZ0VudHJ5KTsKICAgICBBU1NFUlQobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMuY29udGFp
bnMoJndyaXRlKSk7Ci0gICAgQVNTRVJUKG1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbih3cml0
ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpKTsKKyAgICBBU1NFUlQoY2FjaGVNYXlDb250YWluKHdy
aXRlLmVudHJ5LmtleS5zaG9ydEhhc2goKSkpOwogCiAgICAgLy8gVHJ5IHRvIHVwZGF0ZSB0aGUg
aGVhZGVyIG9mIGFuIGV4aXN0aW5nIGVudHJ5LgogICAgIFN0cmluZ0NhcHR1cmUgY2FjaGVQYXRo
Q2FwdHVyZShtX2RpcmVjdG9yeVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IDZjYjE5MDli
ODNiZGI4ZDdjOTgyOWQyMDIwOTc0MDY5MDUxNDVlYWIuLmUxMGM2MzM0MzllZDA4ZjQ5MzVlYmEz
MzM0NTQzODM3MGY0ZTYyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTEwMywxMiArMTAzLDE2
IEBAIHByaXZhdGU6CiAgICAgV29ya1F1ZXVlJiBiYWNrZ3JvdW5kSU9RdWV1ZSgpIHsgcmV0dXJu
IG1fYmFja2dyb3VuZElPUXVldWUuZ2V0KCk7IH0KICAgICBXb3JrUXVldWUmIHNlcmlhbEJhY2tn
cm91bmRJT1F1ZXVlKCkgeyByZXR1cm4gbV9zZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKTsg
fQogCisgICAgYm9vbCBjYWNoZU1heUNvbnRhaW4odW5zaWduZWQgc2hvcnRIYXNoKSB7IHJldHVy
biAhbV9oYXNQb3B1bGF0ZWRDb250ZW50c0ZpbHRlciB8fCBtX2NvbnRlbnRzRmlsdGVyLm1heUNv
bnRhaW4oc2hvcnRIYXNoKTsgfQorCiAgICAgY29uc3QgU3RyaW5nIG1fYmFzZURpcmVjdG9yeVBh
dGg7CiAgICAgY29uc3QgU3RyaW5nIG1fZGlyZWN0b3J5UGF0aDsKIAogICAgIHNpemVfdCBtX21h
eGltdW1TaXplIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogCiAgICAg
Qmxvb21GaWx0ZXI8MjA+IG1fY29udGVudHNGaWx0ZXI7CisgICAgc3RkOjphdG9taWM8Ym9vbD4g
bV9oYXNQb3B1bGF0ZWRDb250ZW50c0ZpbHRlciB7IGZhbHNlIH07CisKICAgICBzdGQ6OmF0b21p
YzxzaXplX3Q+IG1fYXBwcm94aW1hdGVTaXplIHsgMCB9OwogICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1fc2hyaW5rSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>