<?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>143339</bug_id>
          
          <creation_ts>2015-04-02 10:22:07 -0700</creation_ts>
          <short_desc>[WK2] Storage areas should get torn down when there are no remaining references to them.</short_desc>
          <delta_ts>2020-02-03 16:53:37 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=200373</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207073</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082260</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-02 10:22:07 -0700</bug_when>
    <thetext>We shouldn&apos;t keep local storage areas open forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082261</commentid>
    <comment_count>1</comment_count>
      <attachid>249989</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-02 10:23:13 -0700</bug_when>
    <thetext>Created attachment 249989
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082271</commentid>
    <comment_count>2</comment_count>
      <attachid>249993</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-02 10:48:34 -0700</bug_when>
    <thetext>Created attachment 249993
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082281</commentid>
    <comment_count>3</comment_count>
      <attachid>249997</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-02 11:11:58 -0700</bug_when>
    <thetext>Created attachment 249997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082309</commentid>
    <comment_count>4</comment_count>
      <attachid>249997</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-02 12:46:30 -0700</bug_when>
    <thetext>Comment on attachment 249997
Patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Practically speaking, this means that the garbage collector now decides when local
&gt; +        storage databases can be closed, instead of us keeping them open for the lifetime
&gt; +        of the web process.

When you put it that way, it does seem a bit lame. Is there no way this can be based on some better defined event other than “when the object is garbage collected”?

Further, can we add some extra weight to the objects tat are holding the databases open so they are more likely to be collected even when there is plenty of RAM still available?

&gt; Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp:86
&gt; +    return StorageAreaImpl::create(map);

Could this be either map.release() or WTF::move(map) to avoid a little churn?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082316</commentid>
    <comment_count>5</comment_count>
      <attachid>249997</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-02 12:58:30 -0700</bug_when>
    <thetext>Comment on attachment 249997
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:15
&gt;&gt; +        of the web process.
&gt; 
&gt; When you put it that way, it does seem a bit lame. Is there no way this can be based on some better defined event other than “when the object is garbage collected”?
&gt; 
&gt; Further, can we add some extra weight to the objects tat are holding the databases open so they are more likely to be collected even when there is plenty of RAM still available?

Does the spec allow us to close a storage unconditionally after navigation (even if the storage is still referenced by another webpage)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082319</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-02 13:19:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 249997 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249997&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/ChangeLog:15
&gt; &gt;&gt; +        of the web process.
&gt; &gt; 
&gt; &gt; When you put it that way, it does seem a bit lame. Is there no way this can be based on some better defined event other than “when the object is garbage collected”?
&gt; &gt; 
&gt; &gt; Further, can we add some extra weight to the objects tat are holding the databases open so they are more likely to be collected even when there is plenty of RAM still available?
&gt; 
&gt; Does the spec allow us to close a storage unconditionally after navigation
&gt; (even if the storage is still referenced by another webpage)?

The intent here is to make a change that&apos;s not observable from the web.

Anders pointed out that this change may break session storage, so I am currently looking into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083655</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-04-08 10:48:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/20156436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097563</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-26 18:10:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 249997 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249997&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        Practically speaking, this means that the garbage collector now decides when local
&gt; &gt; +        storage databases can be closed, instead of us keeping them open for the lifetime
&gt; &gt; +        of the web process.
&gt; 
&gt; When you put it that way, it does seem a bit lame. Is there no way this can
&gt; be based on some better defined event other than “when the object is garbage
&gt; collected”?
&gt; 
&gt; Further, can we add some extra weight to the objects tat are holding the
&gt; databases open so they are more likely to be collected even when there is
&gt; plenty of RAM still available?

That would be nice. StorageArea already has this:

    virtual size_t memoryBytesUsedByCache() = 0;

But everyone just implements it as { return 0; }. :-/

&gt; &gt; Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp:86
&gt; &gt; +    return StorageAreaImpl::create(map);
&gt; 
&gt; Could this be either map.release() or WTF::move(map) to avoid a little churn?

Definitely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097564</commentid>
    <comment_count>9</comment_count>
      <attachid>253766</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-26 18:20:45 -0700</bug_when>
    <thetext>Created attachment 253766
Better patch that&apos;s less wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097583</commentid>
    <comment_count>10</comment_count>
      <attachid>253775</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-26 21:08:12 -0700</bug_when>
    <thetext>Created attachment 253775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097635</commentid>
    <comment_count>11</comment_count>
      <attachid>253775</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 09:08:11 -0700</bug_when>
    <thetext>Comment on attachment 253775
Patch

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

I think Anders gave this an informal thumbs up. Based on that plus my reading of this, review+.

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:754
&gt; +        Ref&lt;StorageArea&gt; area = *it.value;
&gt; +        if (!area-&gt;isSessionStorage())
&gt; +            continue;
&gt; +        if (!origin-&gt;isSameSchemeHostPort(area-&gt;securityOrigin()))
&gt; +            continue;

Could restructure this and make it a bit uglier but remove a tiny bit of reference count churn like this:

    auto&amp; area = it.value;
    if (...)
        ...
    Ref&lt;StorageArea&gt; movedArea = WTF::move(area);
    ...
    m_storageAreasByConnection.add({ &amp;connection, storageMapID }, WTF::move(movedArea));

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:755
&gt; +        m_storageAreasByConnection.remove(it.key);

This should be remove(it) rather than remove(it.key) to avoid re-hashing the key and doing equality comparisons just to find the hash table entry that &quot;it&quot; is already pointing at.

&gt; Source/WebKit2/WebProcess/Storage/StorageAreaMap.cpp:61
&gt;  StorageAreaMap::StorageAreaMap(StorageNamespaceImpl* storageNamespace, Ref&lt;WebCore::SecurityOrigin&gt;&amp;&amp; securityOrigin)

Someone should come back here and make StorageNamespaceImpl a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097771</commentid>
    <comment_count>12</comment_count>
      <attachid>253816</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-27 16:43:14 -0700</bug_when>
    <thetext>Created attachment 253816
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097788</commentid>
    <comment_count>13</comment_count>
      <attachid>253816</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-27 17:31:16 -0700</bug_when>
    <thetext>Comment on attachment 253816
Patch for landing

Clearing flags on attachment: 253816

Committed r184930: &lt;http://trac.webkit.org/changeset/184930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097789</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-27 17:31:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249989</attachid>
            <date>2015-04-02 10:23:13 -0700</date>
            <delta_ts>2015-04-02 10:48:34 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>ews-143339.diff</filename>
            <type>text/plain</type>
            <size>8792</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjNjUzYmFlLi42YzQxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTUtMDQtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIFN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0aGVyZSBh
cmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlbS4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE0MzMzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMZXQgU3RvcmFnZU5hbWVzcGFjZUltcGwgb3duIGl0cyBTdG9yYWdlQXJlYU1h
cHMgd2Vha2x5IGluc3RlYWQgb2YgdGhyb3VnaCBSZWZQdHIuCisgICAgICAgIFRoaXMgYWxsb3dz
IHRoZSBTdG9yYWdlQXJlYU1hcHMgdG8gZ2V0IGRlc3Ryb3llZCBvbmNlIGFsbCByZWZlcmVuY2Vz
IHRvIHRoZW0gYXJlIGdvbmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIwMTUtMDMtMzEgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEV4cGFu
c2lvbkJlaGF2aW9yRmxhZ3MgYW5kIFRleHREaXJlY3Rpb24gdG8gdGhlaXIgb3duIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
Y3BwCmluZGV4IDcyY2RjMTMuLmRmNDcyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTMsMTYgKzUzLDE3IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgpCiAgICAgcmV0dXJuICsrc3Rv
cmFnZU1hcElEOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1h
cDo6Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFyZWFN
YXA+IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VO
YW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VBcmVhTWFwKHN0b3JhZ2VOYW1lc3Bh
Y2UsIFdURjo6bW92ZShzZWN1cml0eU9yaWdpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNlLCBXVEY6Om1vdmUoc2VjdXJpdHlPcmln
aW4pKSk7CiB9CiAKLVN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNw
YWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
IHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdlTWFw
SUQoKSkKLSAgICAsIG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZVR5cGUo
KSkKLSAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VO
YW1lc3BhY2VJRCgpKQotICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS0+cXVv
dGFJbkJ5dGVzKCkpCitTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVz
cGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiBzZWN1cml0eU9yaWdpbikKKyAgICA6IG1fc3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNw
YWNlKQorICAgICwgbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKSkKKyAgICAs
IG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlVHlwZSgpKQorICAgICwgbV9z
dG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSkK
KyAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2UucXVvdGFJbkJ5dGVzKCkpCiAg
ICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURjo6bW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBt
X2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVhcihmYWxzZSkKQEAgLTcwLDE1
ICs3MSwxNSBAQCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFj
ZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogewogICAgIHN3aXRjaCAobV9zdG9y
YWdlVHlwZSkgewogICAgIGNhc2UgV2ViQ29yZTo6TG9jYWxTdG9yYWdlOgotICAgICAgICBpZiAo
U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS0+dG9wTGV2
ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2Ut
PnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqdG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4q
IHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQorICAg
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNl
SUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsT3Jp
Z2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9y
aWdpbikpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVz
cGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9y
YWdlTmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOwogCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RvcmFnZToKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBz
dG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1h
cElELCBzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTg5LDYgKzkwLDggQEAgU3RvcmFnZUFyZWFNYXA6On5TdG9y
YWdlQXJlYU1hcCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkRlc3Ryb3lTdG9y
YWdlTWFwKG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3N0b3JhZ2VNYXBJRCk7CisKKyAgICBtX3N0b3JhZ2VOYW1lc3BhY2Uu
ZGlkRGVzdHJveVN0b3JhZ2VBcmVhKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogfQogCiB1bnNp
Z25lZCBTdG9yYWdlQXJlYU1hcDo6bGVuZ3RoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggNWNiYTY5My4uZDUyZDQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw7CiAKIGNs
YXNzIFN0b3JhZ2VBcmVhTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZUFyZWFNYXA+LCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYU1hcD4gY3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhTWFw
PiBjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYpOwogICAgIH5TdG9yYWdlQXJlYU1hcCgpOwogCiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VUeXBlOyB9CkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KTsK
IAogcHJpdmF0ZToKLSAgICBTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgU3RvcmFnZUFyZWFNYXAoU3RvcmFn
ZU5hbWVzcGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwpAQCAt
ODIsNiArODIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2
ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCYgbV9zdG9yYWdlTmFtZXNwYWNlOworCiAgICAg
dWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0
b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZmNiYjQ5Zi4uNjYzNDRhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwCkBAIC02NywxMyArNjcsMjMgQEAgU3RvcmFnZU5hbWVzcGFjZUlt
cGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiB7CiB9CiAKK3ZvaWQgU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorewor
ICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmb3JpZ2luKTsKK30KKwogUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogeworICAgIFJlZlB0cjxTdG9yYWdlQXJl
YU1hcD4gbWFwOworCiAgICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFNYXBzLmFkZChzZWN1
cml0eU9yaWdpbi5nZXQoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghc2xv
dCkKLSAgICAgICAgc2xvdCA9IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUodGhpcywgKnNlY3VyaXR5
T3JpZ2luKTsKKyAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgbWFwID0gU3RvcmFnZUFyZWFNYXA6
OmNyZWF0ZSgqdGhpcywgKnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgc2xvdCA9IG1hcC5nZXQo
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFwID0gc2xvdDsKIAotICAgIHJldHVybiBTdG9yYWdl
QXJlYUltcGw6OmNyZWF0ZShzbG90KTsKKyAgICByZXR1cm4gU3RvcmFnZUFyZWFJbXBsOjpjcmVh
dGUobWFwKTsKIH0KIAogUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAzMjc2NGQ3
Li5jODNjYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV90b3BMZXZlbE9yaWdpbi5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHF1b3RhSW5CeXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcXVvdGFJbkJ5dGVzOyB9CiAKKyAgICB2b2lkIGRpZERlc3Ryb3lT
dG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIApAQCAtNjMsNyArNjUsNyBAQCBwcml2YXRl
OgogCiAgICAgY29uc3QgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CiAKLSAgICBIYXNoTWFwPFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4+IG1f
c3RvcmFnZUFyZWFNYXBzOworICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249993</attachid>
            <date>2015-04-02 10:48:34 -0700</date>
            <delta_ts>2015-04-02 10:49:11 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-143339.diff</filename>
            <type>text/plain</type>
            <size>9038</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MDRlNTA5Li5hOWM4ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTUtMDQtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIFN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0aGVyZSBh
cmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlbS4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE0MzMzOT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMTU2NDM2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBTdG9yYWdl
TmFtZXNwYWNlSW1wbCBvd24gaXRzIFN0b3JhZ2VBcmVhTWFwcyB3ZWFrbHkgaW5zdGVhZCBvZiB0
aHJvdWdoIFJlZlB0ci4KKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIFN0b3JhZ2VBcmVhTWFwcyB0
byBnZXQgZGVzdHJveWVkIG9uY2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhlbSBhcmUgZ29uZS4KKwor
ICAgICAgICBQcmFjdGljYWxseSBzcGVha2luZywgdGhpcyBtZWFucyB0aGF0IHRoZSBnYXJiYWdl
IGNvbGxlY3RvciBub3cgZGVjaWRlcyB3aGVuIGxvY2FsCisgICAgICAgIHN0b3JhZ2UgZGF0YWJh
c2VzIGNhbiBiZSBjbG9zZWQsIGluc3RlYWQgb2YgdXMga2VlcGluZyB0aGVtIG9wZW4gZm9yIHRo
ZSBsaWZldGltZQorICAgICAgICBvZiBhIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9y
YWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFy
ZWFNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgor
CiAyMDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5k
IGNhY2hlIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDcyY2RjMTMuLmRmNDcyNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApA
QCAtNTMsMTYgKzUzLDE3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgp
CiAgICAgcmV0dXJuICsrc3RvcmFnZU1hcElEOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVh
TWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdl
TmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4p
CitSZWY8U3RvcmFnZUFyZWFNYXA+IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVz
cGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VBcmVh
TWFwKHN0b3JhZ2VOYW1lc3BhY2UsIFdURjo6bW92ZShzZWN1cml0eU9yaWdpbikpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNlLCBXVEY6
Om1vdmUoc2VjdXJpdHlPcmlnaW4pKSk7CiB9CiAKLVN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJl
YU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9zdG9yYWdlTWFwSUQo
Z2VuZXJhdGVTdG9yYWdlTWFwSUQoKSkKLSAgICAsIG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVz
cGFjZS0+c3RvcmFnZVR5cGUoKSkKLSAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKQotICAgICwgbV9xdW90YUluQnl0ZXMoc3Rv
cmFnZU5hbWVzcGFjZS0+cXVvdGFJbkJ5dGVzKCkpCitTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKKyAgICA6IG1fc3RvcmFnZU5hbWVz
cGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAgICwgbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9y
YWdlTWFwSUQoKSkKKyAgICAsIG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdl
VHlwZSgpKQorICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS5zdG9y
YWdlTmFtZXNwYWNlSUQoKSkKKyAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2Uu
cXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURjo6bW92ZShzZWN1cml0
eU9yaWdpbikpCiAgICAgLCBtX2N1cnJlbnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVh
cihmYWxzZSkKQEAgLTcwLDE1ICs3MSwxNSBAQCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogewog
ICAgIHN3aXRjaCAobV9zdG9yYWdlVHlwZSkgewogICAgIGNhc2UgV2ViQ29yZTo6TG9jYWxTdG9y
YWdlOgotICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFn
ZU5hbWVzcGFjZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQs
IHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICBp
ZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS50b3BM
ZXZlbE9yaWdpbigpKQorICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFj
ZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oKnRvcExldmVsT3JpZ2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VN
YXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAg
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1f
c3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDAp
OwogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RvcmFnZToK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFw
KG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikp
LCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9y
YWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJ
RCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3Jp
Z2luKSksIDApOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTg5LDYgKzkwLDggQEAgU3Rv
cmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdl
QXJlYU1hcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3N0b3JhZ2VNYXBJRCk7CisKKyAgICBt
X3N0b3JhZ2VOYW1lc3BhY2UuZGlkRGVzdHJveVN0b3JhZ2VBcmVhKG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOwogfQogCiB1bnNpZ25lZCBTdG9yYWdlQXJlYU1hcDo6bGVuZ3RoKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXgg
NWNiYTY5My4uZDUyZDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZUltcGw7CiAKIGNsYXNzIFN0b3JhZ2VBcmVhTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RvcmFnZUFyZWFNYXA+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYU1hcD4gY3JlYXRlKFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VBcmVhTWFwPiBjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwmLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOwogICAgIH5TdG9yYWdlQXJlYU1hcCgpOwogCiAgICAg
V2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3Jh
Z2VUeXBlOyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFN0cmluZyYga2V5KTsKIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlQXJlYU1hcChTdG9yYWdl
TmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgU3Rv
cmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIG92ZXJyaWRlOwpAQCAtODIsNiArODIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0
Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZyk7CiAKKyAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCYgbV9zdG9yYWdl
TmFtZXNwYWNlOworCiAgICAgdWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAgICBXZWJDb3Jl
OjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZmNi
YjQ5Zi4uNjYzNDRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC02NywxMyArNjcsMjMgQEAg
U3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiB7CiB9CiAKK3Zv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYShTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQoreworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmb3JpZ2luKTsK
K30KKwogUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogeworICAg
IFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4gbWFwOworCiAgICAgYXV0byYgc2xvdCA9IG1fc3RvcmFn
ZUFyZWFNYXBzLmFkZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwotICAgIGlmICghc2xvdCkKLSAgICAgICAgc2xvdCA9IFN0b3JhZ2VBcmVhTWFwOjpjcmVh
dGUodGhpcywgKnNlY3VyaXR5T3JpZ2luKTsKKyAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgbWFw
ID0gU3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSgqdGhpcywgKnNlY3VyaXR5T3JpZ2luKTsKKyAgICAg
ICAgc2xvdCA9IG1hcC5nZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFwID0gc2xvdDsKIAot
ICAgIHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShzbG90KTsKKyAgICByZXR1cm4gU3Rv
cmFnZUFyZWFJbXBsOjpjcmVhdGUobWFwKTsKIH0KIAogUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAppbmRleCAzMjc2NGQ3Li5jODNjYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNDksNiAr
NDksOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZXZlbE9yaWdpbi5nZXQoKTsgfQogICAgIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fcXVvdGFJbkJ5dGVzOyB9CiAKKyAg
ICB2b2lkIGRpZERlc3Ryb3lTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0
b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIApAQCAtNjMs
NyArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7
CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxT
dG9yYWdlQXJlYU1hcD4+IG1fc3RvcmFnZUFyZWFNYXBzOworICAgIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFw
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249997</attachid>
            <date>2015-04-02 11:11:58 -0700</date>
            <delta_ts>2015-05-26 18:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143339.diff</filename>
            <type>text/plain</type>
            <size>9133</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MDRlNTA5Li5jYzE3ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTUtMDQtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIFN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0aGVyZSBh
cmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlbS4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE0MzMzOT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMTU2NDM2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBTdG9yYWdl
TmFtZXNwYWNlSW1wbCBvd24gaXRzIFN0b3JhZ2VBcmVhTWFwcyB3ZWFrbHkgaW5zdGVhZCBvZiB0
aHJvdWdoIFJlZlB0ci4KKyAgICAgICAgT3duZXJzaGlwIGlzIGZsaXBwZWQgc28gdGhhdCBTdG9y
YWdlQXJlYU1hcCByZWZzIHRoZSBTdG9yYWdlTmFtZXNwYWNlSW1wbCBpbnN0ZWFkLgorICAgICAg
ICBUaGlzIGFsbG93cyB0aGUgU3RvcmFnZUFyZWFNYXBzIHRvIGdldCBkZXN0cm95ZWQgb25jZSBh
bGwgb2YgaXRzIGNsaWVudHMgYXJlIGdvbmUuCisKKyAgICAgICAgUHJhY3RpY2FsbHkgc3BlYWtp
bmcsIHRoaXMgbWVhbnMgdGhhdCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igbm93IGRlY2lkZXMgd2hl
biBsb2NhbAorICAgICAgICBzdG9yYWdlIGRhdGFiYXNlcyBjYW4gYmUgY2xvc2VkLCBpbnN0ZWFk
IG9mIHVzIGtlZXBpbmcgdGhlbSBvcGVuIGZvciB0aGUgbGlmZXRpbWUKKyAgICAgICAgb2YgdGhl
IHdlYiBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorCiAyMDE1LTA0LTAxICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlwZXMg
dG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmlu
ZGV4IDcyY2RjMTMuLjk4MDcyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTMsMTYgKzUzLDE3IEBAIHN0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgpCiAgICAgcmV0dXJuICsrc3RvcmFnZU1h
cElEOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3Jl
YXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFyZWFNYXA+IFN0
b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VOYW1lc3Bh
Y2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VBcmVhTWFwKHN0b3JhZ2VOYW1lc3BhY2UsIFdU
Rjo6bW92ZShzZWN1cml0eU9yaWdpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNlLCBXVEY6Om1vdmUoc2VjdXJpdHlPcmlnaW4pKSk7
CiB9CiAKLVN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1w
bCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3Vy
aXR5T3JpZ2luKQotICAgIDogbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKSkK
LSAgICAsIG1fc3RvcmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZVR5cGUoKSkKLSAg
ICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpKQotICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS0+cXVvdGFJbkJ5
dGVzKCkpCitTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUlt
cGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1
cml0eU9yaWdpbikKKyAgICA6IG1fc3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQor
ICAgICwgbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKSkKKyAgICAsIG1fc3Rv
cmFnZVR5cGUoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlVHlwZSgpKQorICAgICwgbV9zdG9yYWdl
TmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSkKKyAgICAs
IG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2UucXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBt
X3NlY3VyaXR5T3JpZ2luKFdURjo6bW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX2N1cnJl
bnRTZWVkKDApCiAgICAgLCBtX2hhc1BlbmRpbmdDbGVhcihmYWxzZSkKQEAgLTcwLDE1ICs3MSwx
NSBAQCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwq
IHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogewogICAgIHN3aXRjaCAobV9zdG9yYWdlVHlw
ZSkgewogICAgIGNhc2UgV2ViQ29yZTo6TG9jYWxTdG9yYWdlOgotICAgICAgICBpZiAoU2VjdXJp
dHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS0+dG9wTGV2ZWxPcmln
aW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
dG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbiht
X3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExl
dmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQorICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1h
cChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsT3JpZ2luKSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikp
LCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6
OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+
c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
TWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFt
ZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOwogCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RvcmFnZToKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFn
ZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdl
TmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBz
dG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTg5LDYgKzkwLDggQEAgU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJl
YU1hcCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFw
KG1fc3RvcmFnZU1hcElEKSwgMCk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3N0b3JhZ2VNYXBJRCk7CisKKyAgICBtX3N0b3JhZ2VOYW1lc3BhY2UtPmRpZERl
c3Ryb3lTdG9yYWdlQXJlYShtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKIH0KIAogdW5zaWduZWQg
U3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDVjYmE2OTMuLjQ4MWI2ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5o
CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOwogCiBjbGFzcyBT
dG9yYWdlQXJlYU1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VBcmVhTWFwPiwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RvcmFnZUFyZWFNYXA+IGNyZWF0ZShTdG9yYWdlTmFtZXNwYWNlSW1wbCosIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlQXJlYU1hcD4gY3Jl
YXRlKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
KTsKICAgICB+U3RvcmFnZUFyZWFNYXAoKTsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0
b3JhZ2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVHlwZTsgfQpAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSk7CiAKIHBy
aXZhdGU6Ci0gICAgU3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1l
c3BhY2VJbXBsJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTgyLDYg
KzgyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1
aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCisg
ICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBtX3N0b3JhZ2VOYW1lc3BhY2U7CisKICAgICB1
aW50NjRfdCBtX3N0b3JhZ2VNYXBJRDsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3Rv
cmFnZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBmY2JiNDlmLi42NjM0NGFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKQEAgLTY3LDEzICs2NywyMyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKIHsKIH0KIAordm9pZCBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit7Cisg
ICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKCZvcmlnaW4pOworfQorCiBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7CisgICAgUmVmUHRyPFN0b3JhZ2VBcmVh
TWFwPiBtYXA7CisKICAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3Vy
aXR5T3JpZ2luLmdldCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCFzbG90
KQotICAgICAgICBzbG90ID0gU3RvcmFnZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCAqc2VjdXJpdHlP
cmlnaW4pOworICAgIGlmICghc2xvdCkgeworICAgICAgICBtYXAgPSBTdG9yYWdlQXJlYU1hcDo6
Y3JlYXRlKCp0aGlzLCAqc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzbG90ID0gbWFwLmdldCgp
OworICAgIH0gZWxzZQorICAgICAgICBtYXAgPSBzbG90OwogCi0gICAgcmV0dXJuIFN0b3JhZ2VB
cmVhSW1wbDo6Y3JlYXRlKHNsb3QpOworICAgIHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0
ZShtYXApOwogfQogCiBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDMyNzY0ZDcu
LmM4M2NjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX3RvcExldmVsT3JpZ2luLmdldCgpOyB9CiAgICAgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9xdW90YUluQnl0ZXM7IH0KIAorICAgIHZvaWQgZGlkRGVzdHJveVN0
b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCkBAIC02Myw3ICs2NSw3IEBAIHByaXZhdGU6
CiAKICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAotICAgIEhhc2hNYXA8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPj4gbV9z
dG9yYWdlQXJlYU1hcHM7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+LCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="274833"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253766</attachid>
            <date>2015-05-26 18:20:45 -0700</date>
            <delta_ts>2015-05-26 21:08:12 -0700</delta_ts>
            <desc>Better patch that&apos;s less wrong</desc>
            <filename>bug-143339-2.diff</filename>
            <type>text/plain</type>
            <size>10416</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkZmVlY2RiLi43YmRhOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTUtMDUtMjYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIExvY2FsIHN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0
aGV5IGhhdmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDMzMzk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDE1NjQzNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXQgU3RvcmFnZU5h
bWVzcGFjZUltcGwgb3duIGl0cyBTdG9yYWdlQXJlYU1hcHMgd2Vha2x5IGluc3RlYWQgb2YgdGhy
b3VnaCBSZWZQdHIuCisgICAgICAgIE93bmVyc2hpcCBpcyBmbGlwcGVkIHNvIHRoYXQgU3RvcmFn
ZUFyZWFNYXAgcmVmcyB0aGUgU3RvcmFnZU5hbWVzcGFjZUltcGwgaW5zdGVhZC4KKyAgICAgICAg
VGhpcyBhbGxvd3MgdGhlIFN0b3JhZ2VBcmVhTWFwcyB0byBnZXQgZGVzdHJveWVkIG9uY2UgYWxs
IG9mIGl0cyBjbGllbnRzIGFyZSBnb25lLgorCisgICAgICAgIFByYWN0aWNhbGx5IHNwZWFraW5n
LCB0aGlzIG1lYW5zIHRoYXQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIG5vdyBkZWNpZGVzIHdoZW4g
bG9jYWwKKyAgICAgICAgc3RvcmFnZSBkYXRhYmFzZXMgY2FuIGJlIGNsb3NlZCwgaW5zdGVhZCBv
ZiB1cyBrZWVwaW5nIHRoZW0gb3BlbiBmb3IgdGhlIGxpZmV0aW1lCisgICAgICAgIG9mIHRoZSB3
ZWIgcHJvY2Vzcy4KKworICAgICAgICBGb3Igc2Vzc2lvbiBzdG9yYWdlLCBpdCB3b3JrcyBhIGJp
dCBkaWZmZXJlbnRseS4gSW4gdGhlIHdlYiBwcm9jZXNzLCB0aGV5IGdldCB0b3JuCisgICAgICAg
IGRvd24gd2hlbiB0aGVpciBsYXN0IGNsaWVudCBkaXNhcHBlYXJzLCBidXQgdGhleSBzdGF5IGFs
aXZlIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICBJZi93aGVuIHRoZSB3ZWIgcHJvY2VzcyBh
c2tzIHRoZSBVSSBwcm9jZXNzIHRvIG9wZW4gc2Vzc2lvbiBzdG9yYWdlIGZvciBhbiBvcmlnaW4s
CisgICAgICAgIHRoZSBVSSBwcm9jZXNzIGNoZWNrcyBpZiBvbmUgYWxyZWFkeSBleGlzdHMsIGFu
ZCBpZiBzbywganVzdCB1cGRhdGVzIHRoZSBJRCBvZiB0aGUKKyAgICAgICAgb2xkIHN0b3JhZ2Ug
d2l0aCB0aGUgbmV3IG9uZSBwcm92aWRlZCBieSB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNTZXNzaW9uU3RvcmFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VN
YXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZWN1cml0eU9y
aWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lT
dG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpz
dG9yYWdlQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmg6CisKIDIwMTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWlsZCBzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwCmluZGV4IDc4MDg1YmEuLjE4YjBmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYzLDYgKzYzLDggQEAg
cHVibGljOgogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcygpOwogICAg
IHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgaXNTZXNzaW9uU3RvcmFnZSgpIGNvbnN0IHsgcmV0
dXJuICFtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSosIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4mJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIApAQCAtNzM4LDYgKzc0MCwyNCBAQCB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3Nh
Z2UgY2hlY2suCiAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRL
ZXkoeyAmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEIH0pKTsKIAorICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7CisKKyAg
ICAvLyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHNlc3Npb24gc3RvcmFnZSBmb3IgdGhpcyBjb25u
ZWN0aW9uL29yaWdpbiBjb21iby4KKyAgICAvLyBJZiBzbywgdXBkYXRlIHRoZSBtYXAgd2l0aCB0
aGUgbmV3IElELCBvdGhlcndpc2Uga2VlcCBvbiB0cnVja2luZy4KKyAgICBmb3IgKGF1dG8mIGl0
IDogbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKGl0LmtleS5maXJz
dCAhPSAmY29ubmVjdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdG9yYWdl
QXJlYSYgYXJlYSA9ICppdC52YWx1ZTsKKyAgICAgICAgaWYgKCFhcmVhLmlzU2Vzc2lvblN0b3Jh
Z2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQoYXJlYS5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBhdXRvIHRvUmVtb3ZlID0gaXQua2V5OworICAgICAgICBtX3N0b3JhZ2VB
cmVhc0J5Q29ubmVjdGlvbi5hZGQoeyZjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUR9LCAmYXJlYSk7
CisgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZSh0b1JlbW92ZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNC
eUNvbm5lY3Rpb24uYWRkKHsgJmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdl
IGNoZWNrLgpAQCAtNzc0LDcgKzc5NCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0CiAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KICAgICBBU1NFUlQoJmNv
bm5lY3Rpb24gPT0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9uKCkp
OwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3Jl
YXRlU3RvcmFnZUFyZWEob3JpZ2luLnB0cigpKTsKICAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVu
ZXIoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKIAogICAgIHNsb3QgPSBXVEY6Om1vdmUoc3Rv
cmFnZUFyZWEpOwpAQCAtNzkzLDYgKzgxMywxMCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0
cm95U3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0bwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRG9uJ3QgcmVtb3ZlIHNlc3Npb24gc3Rv
cmFnZSBtYXBzLiBUaGUgd2ViIHByb2Nlc3MgbWF5IHJlY29ubmVjdCBhbmQgZXhwZWN0IHRoZSBk
YXRhIHRvIHN0aWxsIGJlIGFyb3VuZC4KKyAgICBpZiAoaXQtPnZhbHVlLT5pc1Nlc3Npb25TdG9y
YWdlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGl0LT52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIo
Y29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlv
bi5yZW1vdmUoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRl
eCAxMDAyYzIxLi43ZWJiNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTI3LDQgKzEyNyw5IEBAIHZvaWQg
U3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAorV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIFN0b3JhZ2VBcmVhSW1wbDo6
c2VjdXJpdHlPcmlnaW4oKQoreworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zZWN1cml0
eU9yaWdpbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCBhNGQ1OTlh
Li4yNmU4ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC01OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgbV9zdG9y
YWdlQXJlYUlEOwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCmluZGV4IDcyY2RjMTMuLjVlYTJmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTksNyArNTksOCBA
QCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTgogfQogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKLSAgICA6IG1fc3RvcmFnZU1hcElE
KGdlbmVyYXRlU3RvcmFnZU1hcElEKCkpCisgICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2UoKnN0b3Jh
Z2VOYW1lc3BhY2UpCisgICAgLCBtX3N0b3JhZ2VNYXBJRChnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgp
KQogICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlVHlwZSgpKQog
ICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVz
cGFjZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNlLT5xdW90YUlu
Qnl0ZXMoKSkKQEAgLTg5LDYgKzkwLDggQEAgU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1h
cCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFwKG1f
c3RvcmFnZU1hcElEKSwgMCk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3N0b3JhZ2VNYXBJRCk7CisKKyAgICBtX3N0b3JhZ2VOYW1lc3BhY2UtPmRpZERlc3Ry
b3lTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjps
ZW5ndGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaAppbmRleCA1Y2JhNjkzLi5jNjEwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtNTksNiArNTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0
b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSk7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSk7CiAKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4o
KSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU3Rv
cmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYpOwogCkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKTsKIAorICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbV9zdG9y
YWdlTmFtZXNwYWNlOworCiAgICAgdWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXgg
ZmNiYjQ5Zi4uMDY1MjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC02NywxMyArNjcsMjMg
QEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiB7CiB9CiAK
K3ZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9y
YWdlQXJlYU1hcCYgbWFwKQoreworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAuc2Vj
dXJpdHlPcmlnaW4oKSk7Cit9CisKIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbikKIHsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IG1hcDsKKwogICAgIGF1dG8m
IHNsb3QgPSBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoc2VjdXJpdHlPcmlnaW4uZ2V0KCksIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXNsb3QpCi0gICAgICAgIHNsb3QgPSBTdG9y
YWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMsICpzZWN1cml0eU9yaWdpbik7CisgICAgaWYgKCFzbG90
KSB7CisgICAgICAgIG1hcCA9IFN0b3JhZ2VBcmVhTWFwOjpjcmVhdGUoKnRoaXMsICpzZWN1cml0
eU9yaWdpbik7CisgICAgICAgIHNsb3QgPSBtYXAuZ2V0KCk7CisgICAgfSBlbHNlCisgICAgICAg
IG1hcCA9IHNsb3Q7CiAKLSAgICByZXR1cm4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoc2xvdCk7
CisgICAgcmV0dXJuIFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1hcCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3
UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggMzI3NjRkNy4uNmM1MTY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0
KCk7IH0KICAgICB1bnNpZ25lZCBxdW90YUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3F1b3Rh
SW5CeXRlczsgfQogCisgICAgdm9pZCBkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFy
ZWFNYXAmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChX
ZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
CiAKQEAgLTYzLDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IHVuc2lnbmVkIG1fcXVv
dGFJbkJ5dGVzOwogCi0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
LCBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9y
YWdlQXJlYU1hcHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253775</attachid>
            <date>2015-05-26 21:08:12 -0700</date>
            <delta_ts>2015-05-27 16:43:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143339-3.diff</filename>
            <type>text/plain</type>
            <size>13730</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMWFmNzIyLi4yYzNiYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTUtMDUtMjYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIExvY2FsIHN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0
aGV5IGhhdmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDMzMzk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDE1NjQzNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU3RvcmFnZUFy
ZWE6OnNlY3VyaXR5T3JpZ2luKCkgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorCiAy
MDE1LTA1LTI2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIGVsZW1lbnQgdW5zaWduZWQgaW5kZXggaW4gV2ViR0wyIGFnYWluLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjNzY0MDhiLi45NTVhOWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFt
ZSopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgU3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMb2NhbFN0b3JhZ2U7IH0K
ICAgICAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICAgICAgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkg
b3ZlcnJpZGUgeyByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpOyB9CiAgICAg
fTsKIAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3Rv
cmFnZU5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggODZl
OWMyMC4uZDVjMDVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKK2NsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZVN5bmNNYW5hZ2VyOwogdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKIGVudW0gU3RvcmFnZVR5cGUgeyBMb2NhbFN0b3JhZ2UsIFNlc3Npb25TdG9y
YWdlIH07CkBAIC01OCw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVt
ZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQorCisg
ICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3NzMxNmEuLmM3ZjYwNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUtMjYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIExvY2FsIHN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdl
dCB0b3JuIGRvd24gd2hlbiB0aGV5IGhhdmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMuCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDMzMzk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMDE1NjQzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU3RvcmFnZUFyZWE6OnNlY3VyaXR5T3JpZ2luKCkgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorCiAyMDE1LTA1LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhY3Rp
b24gbWVudSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5k
ZXggNzllZmI3Yy4uYTZhZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaApAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVu
dEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VJ
ZklkbGUoKSBvdmVycmlkZTsKIAorICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigp
IG92ZXJyaWRlIHsgcmV0dXJuICptX3NlY3VyaXR5T3JpZ2luOyB9CisKICAgICBQYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgIHZvaWQgY2xvc2UoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGRmZWVjZGIuLjdiZGE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxNS0w
NS0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0g
TG9jYWwgc3RvcmFnZSBhcmVhcyBzaG91bGQgZ2V0IHRvcm4gZG93biB3aGVuIHRoZXkgaGF2ZSBu
byByZW1haW5pbmcgcmVmZXJlbmNlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0
MzMzOT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMTU2NDM2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBTdG9yYWdlTmFtZXNwYWNlSW1w
bCBvd24gaXRzIFN0b3JhZ2VBcmVhTWFwcyB3ZWFrbHkgaW5zdGVhZCBvZiB0aHJvdWdoIFJlZlB0
ci4KKyAgICAgICAgT3duZXJzaGlwIGlzIGZsaXBwZWQgc28gdGhhdCBTdG9yYWdlQXJlYU1hcCBy
ZWZzIHRoZSBTdG9yYWdlTmFtZXNwYWNlSW1wbCBpbnN0ZWFkLgorICAgICAgICBUaGlzIGFsbG93
cyB0aGUgU3RvcmFnZUFyZWFNYXBzIHRvIGdldCBkZXN0cm95ZWQgb25jZSBhbGwgb2YgaXRzIGNs
aWVudHMgYXJlIGdvbmUuCisKKyAgICAgICAgUHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoaXMgbWVh
bnMgdGhhdCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igbm93IGRlY2lkZXMgd2hlbiBsb2NhbAorICAg
ICAgICBzdG9yYWdlIGRhdGFiYXNlcyBjYW4gYmUgY2xvc2VkLCBpbnN0ZWFkIG9mIHVzIGtlZXBp
bmcgdGhlbSBvcGVuIGZvciB0aGUgbGlmZXRpbWUKKyAgICAgICAgb2YgdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgIEZvciBzZXNzaW9uIHN0b3JhZ2UsIGl0IHdvcmtzIGEgYml0IGRpZmZlcmVu
dGx5LiBJbiB0aGUgd2ViIHByb2Nlc3MsIHRoZXkgZ2V0IHRvcm4KKyAgICAgICAgZG93biB3aGVu
IHRoZWlyIGxhc3QgY2xpZW50IGRpc2FwcGVhcnMsIGJ1dCB0aGV5IHN0YXkgYWxpdmUgaW4gdGhl
IFVJIHByb2Nlc3MuCisgICAgICAgIElmL3doZW4gdGhlIHdlYiBwcm9jZXNzIGFza3MgdGhlIFVJ
IHByb2Nlc3MgdG8gb3BlbiBzZXNzaW9uIHN0b3JhZ2UgZm9yIGFuIG9yaWdpbiwKKyAgICAgICAg
dGhlIFVJIHByb2Nlc3MgY2hlY2tzIGlmIG9uZSBhbHJlYWR5IGV4aXN0cywgYW5kIGlmIHNvLCBq
dXN0IHVwZGF0ZXMgdGhlIElEIG9mIHRoZQorICAgICAgICBvbGQgc3RvcmFnZSB3aXRoIHRoZSBu
ZXcgb25lIHByb3ZpZGVkIGJ5IHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhOjppc1Nlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcCk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcCk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U3RvcmFnZU1hcCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3Jh
Z2VBcmVhTWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
aDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVh
TWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVh
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoK
KwogMjAxNS0wNS0yNiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMTEwNDU1MT4gVXBkYXRlIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5k
ZXggNzgwODViYS4uYzhhOGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKCk7CiAgICAgdm9pZCBjbGVh
cigpOwogCisgICAgYm9vbCBpc1Nlc3Npb25TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gIW1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZUFy
ZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOwogCkBAIC03MzgsNiArNzQwLDIzIEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4K
ICAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7ICZjb25u
ZWN0aW9uLCBzdG9yYWdlTWFwSUQgfSkpOwogCisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4gPSBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKKworICAgIC8vIFNlZSBp
ZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBzdG9yYWdlIGZvciB0aGlzIGNvbm5lY3Rpb24vb3Jp
Z2luIGNvbWJvLgorICAgIC8vIElmIHNvLCB1cGRhdGUgdGhlIG1hcCB3aXRoIHRoZSBuZXcgSUQs
IG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5nLgorICAgIGZvciAoYXV0byYgaXQgOiBtX3N0b3Jh
Z2VBcmVhc0J5Q29ubmVjdGlvbikgeworICAgICAgICBpZiAoaXQua2V5LmZpcnN0ICE9ICZjb25u
ZWN0aW9uKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4g
YXJlYSA9ICppdC52YWx1ZTsKKyAgICAgICAgaWYgKCFhcmVhLT5pc1Nlc3Npb25TdG9yYWdlKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVt
ZUhvc3RQb3J0KGFyZWEtPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShpdC5rZXkpOworICAg
ICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5hZGQoeyAmY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEIH0sIFdURjo6bW92ZShhcmVhKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgJmNvbm5lY3Rp
b24sIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgpAQCAtNzc0LDcgKzc5Myw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEg
bWVzc2FnZSBjaGVjay4KICAgICBBU1NFUlQoJmNvbm5lY3Rpb24gPT0gc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9uKCkpOwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9
IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5
T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmln
aW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpOwogICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0
ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCiAgICAgc2xvdCA9IFdURjo6bW92ZShz
dG9yYWdlQXJlYSk7CkBAIC03OTMsNiArODEyLDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRl
c3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBEb24ndCByZW1vdmUgc2Vzc2lvbiBz
dG9yYWdlIG1hcHMuIFRoZSB3ZWIgcHJvY2VzcyBtYXkgcmVjb25uZWN0IGFuZCBleHBlY3QgdGhl
IGRhdGEgdG8gc3RpbGwgYmUgYXJvdW5kLgorICAgIGlmIChpdC0+dmFsdWUtPmlzU2Vzc2lvblN0
b3JhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaXQtPnZhbHVlLT5yZW1vdmVMaXN0ZW5l
cihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLnJlbW92ZShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmlu
ZGV4IDEwMDJjMjEuLjdlYmI3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0xMjcsNCArMTI3LDkgQEAgdm9p
ZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCitXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgU3RvcmFnZUFyZWFJbXBs
OjpzZWN1cml0eU9yaWdpbigpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnNlY3Vy
aXR5T3JpZ2luKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IGE0ZDU5
OWEuLmUwNDA1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBTdG9yYWdlQXJlYU1hcDsKQEAgLTU5LDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbigpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgbV9zdG9yYWdl
QXJlYUlEOwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
Y3BwCmluZGV4IDcyY2RjMTMuLjVlYTJmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTksNyArNTksOCBAQCBQ
YXNzUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKiBzdG9yYWdlTgogfQogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKLSAgICA6IG1fc3RvcmFnZU1hcElEKGdl
bmVyYXRlU3RvcmFnZU1hcElEKCkpCisgICAgOiBtX3N0b3JhZ2VOYW1lc3BhY2UoKnN0b3JhZ2VO
YW1lc3BhY2UpCisgICAgLCBtX3N0b3JhZ2VNYXBJRChnZW5lcmF0ZVN0b3JhZ2VNYXBJRCgpKQog
ICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlVHlwZSgpKQogICAg
ICwgbV9zdG9yYWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFj
ZUlEKCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNlLT5xdW90YUluQnl0
ZXMoKSkKQEAgLTg5LDYgKzkwLDggQEAgU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCgp
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkRlc3Ryb3lTdG9yYWdlTWFwKG1fc3Rv
cmFnZU1hcElEKSwgMCk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3N0b3JhZ2VNYXBJRCk7CisKKyAgICBtX3N0b3JhZ2VOYW1lc3BhY2UtPmRpZERlc3Ryb3lT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5n
dGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuaAppbmRleCA1Y2JhNjkzLi5jNjEwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtNTksNiArNTksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3Jh
Z2VBcmVhSW1wbCogc291cmNlQXJlYSk7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcm
IGtleSk7CiAKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYpOwogCkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdl
RXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKIAorICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbV9zdG9yYWdl
TmFtZXNwYWNlOworCiAgICAgdWludDY0X3QgbV9zdG9yYWdlTWFwSUQ7CiAKICAgICBXZWJDb3Jl
OjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggZmNi
YjQ5Zi4uYWE4ZjQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC02NywxMyArNjcsMjMgQEAg
U3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiB7CiB9CiAKK3Zv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdl
QXJlYU1hcCYgbWFwKQoreworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmbWFwLnNlY3Vy
aXR5T3JpZ2luKCkpOworfQorCiBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4pCiB7CisgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBtYXA7CisKICAgICBhdXRvJiBz
bG90ID0gbV9zdG9yYWdlQXJlYU1hcHMuYWRkKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCFzbG90KQotICAgICAgICBzbG90ID0gU3RvcmFn
ZUFyZWFNYXA6OmNyZWF0ZSh0aGlzLCAqc2VjdXJpdHlPcmlnaW4pOworICAgIGlmICghc2xvdCkg
eworICAgICAgICBtYXAgPSBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMsICpzZWN1cml0eU9y
aWdpbik7CisgICAgICAgIHNsb3QgPSBtYXAuZ2V0KCk7CisgICAgfSBlbHNlCisgICAgICAgIG1h
cCA9IHNsb3Q7CiAKLSAgICByZXR1cm4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoc2xvdCk7Cisg
ICAgcmV0dXJuIFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFdURjo6bW92ZShtYXApKTsKIH0KIAog
UGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAzMjc2NGQ3Li42YzUxNjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZXZlbE9y
aWdpbi5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHF1b3RhSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fcXVvdGFJbkJ5dGVzOyB9CiAKKyAgICB2b2lkIGRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChT
dG9yYWdlQXJlYU1hcCYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKTsKIApAQCAtNjMsNyArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgdW5zaWdu
ZWQgbV9xdW90YUluQnl0ZXM7CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlQXJlYU1hcD4+IG1fc3RvcmFnZUFyZWFNYXBzOworICAg
IEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU3RvcmFnZUFyZWFNYXAq
PiBtX3N0b3JhZ2VBcmVhTWFwczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="278717"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253816</attachid>
            <date>2015-05-27 16:43:14 -0700</date>
            <delta_ts>2015-05-27 17:31:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-143339.diff</filename>
            <type>text/plain</type>
            <size>13816</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZjg0Mjc3Li4wODlkMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTUtMDUtMjcgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIExvY2FsIHN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdldCB0b3JuIGRvd24gd2hlbiB0
aGV5IGhhdmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDMzMzk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDE1NjQzNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgU3RvcmFnZUFyZWE6
OnNlY3VyaXR5T3JpZ2luKCkgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorCiAyMDE1
LTA1LTI3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRl
bXB0IHRvIGZpeCBpbnRlcm5hbCBidWlsZCBmb2xsb3dpbmcgPGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE4NDc2MD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggYzc2NDA4Yi4uOTU1YTljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICAgICAgdmly
dHVhbCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gTG9jYWxTdG9yYWdlOyB9CiAgICAgICAgIHZpcnR1YWwgc2l6ZV90IG1l
bW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgICAgIFNl
Y3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIG92ZXJyaWRlIHsgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVVbmlxdWUoKTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRW1wdHlTdG9y
YWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDg2ZTljMjAuLmQ1YzA1YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRnJhbWU7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN0b3Jh
Z2VTeW5jTWFuYWdlcjsKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiBlbnVtIFN0b3JhZ2VU
eXBlIHsgTG9jYWxTdG9yYWdlLCBTZXNzaW9uU3RvcmFnZSB9OwpAQCAtNTgsNiArNTksOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlRGF0YWJhc2VJZklkbGUoKSB7IH0KKworICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlNzczMTZhLi4wYzcxMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1
LTA1LTI3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbV0sy
XSBMb2NhbCBzdG9yYWdlIGFyZWFzIHNob3VsZCBnZXQgdG9ybiBkb3duIHdoZW4gdGhleSBoYXZl
IG5vIHJlbWFpbmluZyByZWZlcmVuY2VzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQzMzM5PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAxNTY0MzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIFN0b3JhZ2VBcmVhOjpzZWN1cml0
eU9yaWdpbigpIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaDoKKwogMjAxNS0wNS0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgYWN0aW9uIG1lbnUgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDc5ZWZiN2MuLmE2YWVlYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYwLDYgKzYwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7CiAKKyAgICBTZWN1
cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBvdmVycmlkZSB7IHJldHVybiAqbV9zZWN1cml0
eU9yaWdpbjsgfQorCiAgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAg
ICB2b2lkIGNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNDBhMDI1Li5hNjg2ZTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTUtMDUtMjcgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIExvY2FsIHN0b3JhZ2UgYXJlYXMgc2hvdWxkIGdl
dCB0b3JuIGRvd24gd2hlbiB0aGV5IGhhdmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMuCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDMzMzk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMDE1NjQzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBMZXQgU3RvcmFnZU5hbWVzcGFjZUltcGwgb3duIGl0cyBTdG9yYWdlQXJlYU1hcHMgd2Vha2x5
IGluc3RlYWQgb2YgdGhyb3VnaCBSZWZQdHIuCisgICAgICAgIE93bmVyc2hpcCBpcyBmbGlwcGVk
IHNvIHRoYXQgU3RvcmFnZUFyZWFNYXAgcmVmcyB0aGUgU3RvcmFnZU5hbWVzcGFjZUltcGwgaW5z
dGVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIFN0b3JhZ2VBcmVhTWFwcyB0byBnZXQgZGVz
dHJveWVkIG9uY2UgYWxsIG9mIGl0cyBjbGllbnRzIGFyZSBnb25lLgorCisgICAgICAgIFByYWN0
aWNhbGx5IHNwZWFraW5nLCB0aGlzIG1lYW5zIHRoYXQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIG5v
dyBkZWNpZGVzIHdoZW4gbG9jYWwKKyAgICAgICAgc3RvcmFnZSBkYXRhYmFzZXMgY2FuIGJlIGNs
b3NlZCwgaW5zdGVhZCBvZiB1cyBrZWVwaW5nIHRoZW0gb3BlbiBmb3IgdGhlIGxpZmV0aW1lCisg
ICAgICAgIG9mIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICBGb3Igc2Vzc2lvbiBzdG9yYWdl
LCBpdCB3b3JrcyBhIGJpdCBkaWZmZXJlbnRseS4gSW4gdGhlIHdlYiBwcm9jZXNzLCB0aGV5IGdl
dCB0b3JuCisgICAgICAgIGRvd24gd2hlbiB0aGVpciBsYXN0IGNsaWVudCBkaXNhcHBlYXJzLCBi
dXQgdGhleSBzdGF5IGFsaXZlIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICBJZi93aGVuIHRo
ZSB3ZWIgcHJvY2VzcyBhc2tzIHRoZSBVSSBwcm9jZXNzIHRvIG9wZW4gc2Vzc2lvbiBzdG9yYWdl
IGZvciBhbiBvcmlnaW4sCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIGNoZWNrcyBpZiBvbmUgYWxy
ZWFkeSBleGlzdHMsIGFuZCBpZiBzbywganVzdCB1cGRhdGVzIHRoZSBJRCBvZiB0aGUKKyAgICAg
ICAgb2xkIHN0b3JhZ2Ugd2l0aCB0aGUgbmV3IG9uZSBwcm92aWRlZCBieSB0aGUgd2ViIHByb2Nl
c3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aXNTZXNzaW9uU3Rv
cmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVz
dHJveVN0b3JhZ2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3Jp
Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
TWFwOjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIwMTUtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRpb24gaGl0IGluIFdlYlBhZ2U6OmRpZENo
YW5nZVNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNzgwODViYS4uZjY4NTRmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
NjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IGl0ZW1zKCk7CiAgICAgdm9pZCBjbGVhcigpOwogCisgICAgYm9vbCBpc1Nlc3Npb25TdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gIW1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlOyB9CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiYmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCkBAIC03MzgsNiAr
NzQwLDIzIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KICAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5l
Y3Rpb24uaXNWYWxpZEtleSh7ICZjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQgfSkpOwogCisgICAg
UmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlP
cmlnaW4oKTsKKworICAgIC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBzdG9yYWdl
IGZvciB0aGlzIGNvbm5lY3Rpb24vb3JpZ2luIGNvbWJvLgorICAgIC8vIElmIHNvLCB1cGRhdGUg
dGhlIG1hcCB3aXRoIHRoZSBuZXcgSUQsIG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5nLgorICAg
IGZvciAoYXV0byBpdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmJlZ2luKCksIGVuZCA9
IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgaWYgKGl0LT5rZXkuZmlyc3QgIT0gJmNvbm5lY3Rpb24pCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBhcmVhID0gKml0LT52YWx1ZTsKKyAgICAg
ICAgaWYgKCFhcmVhLT5pc1Nlc3Npb25TdG9yYWdlKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFyZWEtPnNlY3VyaXR5
T3JpZ2luKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1fc3RvcmFnZUFyZWFz
QnlDb25uZWN0aW9uLnJlbW92ZShpdCk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uLmFkZCh7ICZjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQgfSwgV1RGOjptb3ZlKGFyZWEpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5hZGQoeyAmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3Nh
Z2UgY2hlY2suCkBAIC03NzQsNyArNzkzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjQKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgogICAgIEFTU0VSVCgm
Y29ubmVjdGlvbiA9PSBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+YWxsb3dlZENvbm5lY3Rpb24o
KSk7CiAKLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkp
OworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JD
cmVhdGVTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKS5wdHIo
KSk7CiAgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJ
RCk7CiAKICAgICBzbG90ID0gV1RGOjptb3ZlKHN0b3JhZ2VBcmVhKTsKQEAgLTc5Myw2ICs4MTIs
MTAgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIERvbid0IHJlbW92ZSBzZXNzaW9uIHN0b3JhZ2UgbWFwcy4gVGhlIHdlYiBwcm9jZXNz
IG1heSByZWNvbm5lY3QgYW5kIGV4cGVjdCB0aGUgZGF0YSB0byBzdGlsbCBiZSBhcm91bmQuCisg
ICAgaWYgKGl0LT52YWx1ZS0+aXNTZXNzaW9uU3RvcmFnZSgpKQorICAgICAgICByZXR1cm47CisK
ICAgICBpdC0+dmFsdWUtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7
CiAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggMTAwMmMyMS4uN2ViYjc2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAKQEAgLTEyNyw0ICsxMjcsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRh
YmFzZUlmSWRsZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1dlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkKK3sKKyAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggYTRkNTk5YS4uZTA0MDVmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtMzEs
NiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZWN1cml0eU9yaWdp
bjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN0b3JhZ2VBcmVhTWFwOwpAQCAt
NTksNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3ND
b3VudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgb3ZlcnJp
ZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7CiAgICAgUmVmUHRyPFN0b3JhZ2VB
cmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggNzJjZGMxMy4uNWVhMmZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwCkBAIC01OSw3ICs1OSw4IEBAIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IFN0
b3JhZ2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOCiB9CiAK
IFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3Rv
cmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3Jp
Z2luKQotICAgIDogbV9zdG9yYWdlTWFwSUQoZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKSkKKyAgICA6
IG1fc3RvcmFnZU5hbWVzcGFjZSgqc3RvcmFnZU5hbWVzcGFjZSkKKyAgICAsIG1fc3RvcmFnZU1h
cElEKGdlbmVyYXRlU3RvcmFnZU1hcElEKCkpCiAgICAgLCBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VUeXBlKCkpCiAgICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9y
YWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVz
KHN0b3JhZ2VOYW1lc3BhY2UtPnF1b3RhSW5CeXRlcygpKQpAQCAtODksNiArOTAsOCBAQCBTdG9y
YWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlcjo6RGVzdHJveVN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQpLCAwKTsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VB
cmVhTWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc3RvcmFnZU1hcElEKTsKKworICAgIG1f
c3RvcmFnZU5hbWVzcGFjZS0+ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAog
dW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDVjYmE2OTMuLmM2MTA0
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKFdlYkNv
cmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKTsKICAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KTsKIAorICAgIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0
KCk7IH0KKwogcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1w
bCosIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CiAKQEAgLTgyLDYgKzg0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwog
ICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCisgICAgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBtX3N0b3JhZ2VOYW1lc3BhY2U7CisKICAgICB1aW50NjRfdCBt
X3N0b3JhZ2VNYXBJRDsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBmY2JiNDlmLi5hYThmNDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAKQEAgLTY3LDEzICs2NywyMyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKCkKIHsKIH0KIAordm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlk
RGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCit7CisgICAgbV9zdG9y
YWdlQXJlYU1hcHMucmVtb3ZlKCZtYXAuc2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKIFBhc3NSZWZQ
dHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKKyAgICBSZWZQdHI8U3RvcmFn
ZUFyZWFNYXA+IG1hcDsKKwogICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQo
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAo
IXNsb3QpCi0gICAgICAgIHNsb3QgPSBTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKHRoaXMsICpzZWN1
cml0eU9yaWdpbik7CisgICAgaWYgKCFzbG90KSB7CisgICAgICAgIG1hcCA9IFN0b3JhZ2VBcmVh
TWFwOjpjcmVhdGUodGhpcywgKnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgc2xvdCA9IG1hcC5n
ZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFwID0gc2xvdDsKIAotICAgIHJldHVybiBTdG9y
YWdlQXJlYUltcGw6OmNyZWF0ZShzbG90KTsKKyAgICByZXR1cm4gU3RvcmFnZUFyZWFJbXBsOjpj
cmVhdGUoV1RGOjptb3ZlKG1hcCkpOwogfQogCiBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CmluZGV4IDMyNzY0ZDcuLjZjNTE2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC00OSw2ICs0OSw4
IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX3RvcExldmVsT3JpZ2luLmdldCgpOyB9CiAgICAgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9xdW90YUluQnl0ZXM7IH0KIAorICAgIHZv
aWQgZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUs
IHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRv
cExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCkBAIC02Myw3ICs2NSw3IEBA
IHByaXZhdGU6CiAKICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAotICAgIEhh
c2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VBcmVh
TWFwPj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+LCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>