<?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>174918</bug_id>
          
          <creation_ts>2017-07-27 19:35:56 -0700</creation_ts>
          <short_desc>DFG should do caging</short_desc>
          <delta_ts>2017-08-11 09:49:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174917</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332831</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-07-27 19:35:56 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336852</commentid>
    <comment_count>1</comment_count>
      <attachid>317673</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-08 21:08:51 -0700</bug_when>
    <thetext>Created attachment 317673
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336859</commentid>
    <comment_count>2</comment_count>
      <attachid>317677</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-08 22:10:39 -0700</bug_when>
    <thetext>Created attachment 317677
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336873</commentid>
    <comment_count>3</comment_count>
      <attachid>317679</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-08 22:56:26 -0700</bug_when>
    <thetext>Created attachment 317679
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336992</commentid>
    <comment_count>4</comment_count>
      <attachid>317679</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 09:15:48 -0700</bug_when>
    <thetext>Comment on attachment 317679
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337032</commentid>
    <comment_count>5</comment_count>
      <attachid>317679</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-09 10:39:20 -0700</bug_when>
    <thetext>Comment on attachment 317679
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6172
&gt; +        cageTypedArrayStorage(storageReg);

Pardon my ignorance, but the code in compileGetTypedArrayByteOffset() below tells me that JSArrayBufferView::vector may be null.  So, why is the null check not applied here?

If the null check is always necessary, maybe it should be moved into cageTypedArrayStorage() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337907</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-11 09:44:13 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; Comment on attachment 317679 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317679&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6172
&gt; &gt; +        cageTypedArrayStorage(storageReg);
&gt; 
&gt; Pardon my ignorance, but the code in compileGetTypedArrayByteOffset() below
&gt; tells me that JSArrayBufferView::vector may be null.  So, why is the null
&gt; check not applied here?

Null becomes something like 0x3000000000, which is OK so long as:

- You don&apos;t try to ==/!= this pointer with anything else.
- That implies never comparing the pointer to null.

For any other purpose, this pointer is no worse than null itself.

GetIndexedPropertyStorage is generated for GetByVal/PutByVal, which only use the pointer for dereferencing.  They only dereference it in cases where it would not have been null, so it&apos;s OK that null would have become something like 0x3000000000.

On the other hand, compileGetTypedArrayByteOffset compares the `vector` to something else.  If the view is neutered, that other something else would be null.  So then if we let vector become 0x3000000000, then the logic would fail.  Also, since this code is not super perf sensitive (it&apos;s not like everyone queries byteOffset a lot, at least from what I can tell), it&apos;s probably OK to have this null branch.

&gt; 
&gt; If the null check is always necessary, maybe it should be moved into
&gt; cageTypedArrayStorage() instead.

If we did that, then we&apos;d pay the price of the null check in cases where we don&apos;t need it, like if we&apos;re just using the vector for a GetByVal/PutByVal.

On the other hand, the C++ equivalent of this stuff always does the null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337908</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-11 09:48:31 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/220596/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317673</attachid>
            <date>2017-08-08 21:08:51 -0700</date>
            <delta_ts>2017-08-08 22:10:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7325</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE3LTA4LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgQWRkcyB0aGUgYXBwcm9wcmlhdGUgY2FnZSgpIGNhbGxzIHRv
IHRoZSBERkcsIGluY2x1ZGluZyBhIGNhZ2VUeXBlZEFycmF5U3RvcmFnZSgpIGhlbHBlciB0aGF0
IGRvZXMKKyAgICAgICAgdGhlIGNvbmRpdGlvbmFsIGNhZ2luZyB3aXRoIGEgd2F0Y2hwb2ludC4K
KworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZVJlc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3By
ZWFkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5
V2l0aFNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ1dHRlcmZseSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxNy0wOC0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIElDcyBzaG91bGQgZG8gY2FnaW5nCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDIyMDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3ODYsNiArNTc4Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mg
b3V0IG9mIGxpbmUKICAgICAgICAgb3V0T2ZMaW5lQWNjZXNzLmxpbmsoJm1faml0KTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoMkdQUik7CisgICAgICAgIG1faml0LmNhZ2Uo
R2lnYWNhZ2U6OkpTVmFsdWUsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgbV9qaXQubW92ZShpbmRl
eEdQUiwgc2NyYXRjaDFHUFIpOwogICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElu
bGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0Lm5lZzMy
KHNjcmF0Y2gxR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEyNiw2
ICs2MTI2LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb25zdGFudFN0b3IKICAg
ICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIHN0b3JhZ2VSZWcpCit7CisjaWYgR0lH
QUNBR0VfRU5BQkxFRAorICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKEdpZ2FjYWdlOjpjYW5QcmltaXRpdmVHaWdhY2Fn
ZUJlRGlzYWJsZWQoKSkgeworICAgICAgICBpZiAobV9qaXQudm0oKS0+cHJpbWl0aXZlR2lnYWNh
Z2VFbmFibGVkKCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLndh
dGNocG9pbnRzKCkuYWRkTGF6aWx5KG1faml0LnZtKCktPnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxl
ZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBtX2ppdC5jYWdlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHN0b3JhZ2VSZWcpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc3RvcmFnZVJlZyk7CisjZW5kaWYKK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKIHsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTYx
NTAsNiArNjE2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHIK
ICAgICAgICAgQVNTRVJUKGlzVHlwZWRWaWV3KG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlU
eXBlKCkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc3RvcmFnZVJlZyk7
CisgICAgICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShzdG9yYWdlUmVnKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApAQCAtNjE3Miw3ICs2MTkyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFR5cGVkQXJyYQogICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBl
ZEFycmF5KSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0
LmNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOwogICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZSh2ZWN0b3JH
UFIpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBkYXRhR1BSKTsKICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEFycmF5QnVmZmVyOjpvZmZz
ZXRPZkRhdGEoKSksIGRhdGFHUFIpOwogICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JH
UFIpOwpAQCAtNjk3MSw2ICs2OTkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZVJlc3QoTgogICAgICAgICBHUFJSZWcgYnV0dGVyZmx5R1BSID0gYnV0dGVyZmx5Lmdwcigp
OwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlS
ZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGJ1dHRlcmZseUdQUik7Cisg
ICAgICAgIG1faml0LmNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIGJ1dHRlcmZseUdQUik7CiAKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNraXBMb29wID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCBhcnJheUxlbmd0aEdQUiwgVHJ1c3RlZEltbTMyKDApKTsKICAgICAg
ICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoYXJyYXlMZW5ndGhHUFIsIGN1cnJlbnRMZW5ndGhH
UFIpOwpAQCAtNzA0MCw2ICs3MDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNw
cmVhZChOb2RlKgogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFw
ZSAtIEludDMyU2hhcGUpKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhhcmd1bWVudCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgbGVuZ3Ro
R1BSKTsKKyAgICAgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgbGVuZ3RoR1BSKTsK
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGxlbmd0aEdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgbGVuZ3RoR1BSKTsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoSlNWYWx1ZSkgPT0gOCAmJiAxIDw8IDMgPT0gOCwgIlRoaXMg
aXMgc3Ryb25nbHkgYXNzdW1lZCBpbiB0aGUgY29kZSBiZWxvdy4iKTsKICAgICAgICAgbV9qaXQu
bW92ZShsZW5ndGhHUFIsIHNjcmF0Y2gxR1BSKTsKQEAgLTcwNTAsNiArNzA3NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSoKICAgICAgICAgbV9qaXQuc3RvcmUz
MihsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGaXhlZEFy
cmF5OjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNj
cmF0Y2gxR1BSKTsKKyAgICAgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgc2NyYXRj
aDFHUFIpOwogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lOwogCkBAIC03
MTU5LDYgKzcxODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRo
CiAKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIGluZGV4R1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOworICAgICAgICBtX2ppdC5jYWdl
KEdpZ2FjYWdlOjpKU1ZhbHVlLCBzdG9yYWdlR1BSKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpKSB7CiAgICAgICAgICAgICBFZGdl
IHVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgaSk7CkBAIC03NDE1LDYgKzc0
NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOCiAgICAgR1BS
UmVnIHJlc3VsdEJ1dHRlcmZseSA9IHRlbXAyLmdwcigpOwogCiAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHJlc3VsdEJ1dHRlcmZseSk7CisgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1
ZSwgcmVzdWx0QnV0dGVyZmx5KTsKICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BS
LCB0ZW1wR1BSKTsKICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihsb2FkSW5kZXgsIGxvYWRJ
bmRleCk7CiAgICAgYXV0byBkb25lID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIGxvYWRJbmRleCwgdGVtcEdQUik7CkBAIC03OTgzLDkgKzgwMTAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnV0dGVyZmx5CiAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlc3VsdEdQ
Uik7Ci0gICAgCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBjYWdpbmchCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkxOAorICAgIG1faml0LmNhZ2Uo
R2lnYWNhZ2U6OkpTVmFsdWUsIHJlc3VsdEdQUik7CiAKICAgICBzdG9yYWdlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMjA0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNDUsNiArMzA0
NSw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxib29sIHN0cmljdD4KICAgICBHUFJSZWcgZmls
bFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsK
ICAgICAKKyAgICB2b2lkIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcpOworICAgIAogICAg
IC8vIEl0IGlzIHBvc3NpYmxlLCBkdXJpbmcgc3BlY3VsYXRpdmUgZ2VuZXJhdGlvbiwgdG8gcmVh
Y2ggYSBzaXR1YXRpb24gaW4gd2hpY2ggd2UKICAgICAvLyBjYW4gc3RhdGljYWxseSBkZXRlcm1p
bmUgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwgKGZvciBleGFtcGxlLCB3aGVuIHR3byBub2Rlcwog
ICAgIC8vIHdpbGwgbWFrZSBjb25mbGljdGluZyBzcGVjdWxhdGlvbnMgYWJvdXQgdGhlIHNhbWUg
b3BlcmFuZCkuIEluIHN1Y2ggY2FzZXMgdGhpcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317677</attachid>
            <date>2017-08-08 22:10:39 -0700</date>
            <delta_ts>2017-08-08 22:56:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8150</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE3LTA4LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgQWRkcyB0aGUgYXBwcm9wcmlhdGUgY2FnZSgpIGNhbGxzIHRv
IHRoZSBERkcsIGluY2x1ZGluZyBhIGNhZ2VUeXBlZEFycmF5U3RvcmFnZSgpIGhlbHBlciB0aGF0
IGRvZXMKKyAgICAgICAgdGhlIGNvbmRpdGlvbmFsIGNhZ2luZyB3aXRoIGEgd2F0Y2hwb2ludC4K
KworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZVJlc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3By
ZWFkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5
V2l0aFNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ1dHRlcmZseSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxNy0wOC0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIElDcyBzaG91bGQgZG8gY2FnaW5nCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDIyMDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3ODYsNiArNTc4Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mg
b3V0IG9mIGxpbmUKICAgICAgICAgb3V0T2ZMaW5lQWNjZXNzLmxpbmsoJm1faml0KTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoMkdQUik7CisgICAgICAgIG1faml0LmNhZ2Uo
R2lnYWNhZ2U6OkpTVmFsdWUsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgbV9qaXQubW92ZShpbmRl
eEdQUiwgc2NyYXRjaDFHUFIpOwogICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElu
bGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0Lm5lZzMy
KHNjcmF0Y2gxR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEyNiw2
ICs2MTI2LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb25zdGFudFN0b3IKICAg
ICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIHN0b3JhZ2VSZWcpCit7CisjaWYgR0lH
QUNBR0VfRU5BQkxFRAorICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKEdpZ2FjYWdlOjpjYW5QcmltaXRpdmVHaWdhY2Fn
ZUJlRGlzYWJsZWQoKSkgeworICAgICAgICBpZiAobV9qaXQudm0oKS0+cHJpbWl0aXZlR2lnYWNh
Z2VFbmFibGVkKCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLndh
dGNocG9pbnRzKCkuYWRkTGF6aWx5KG1faml0LnZtKCktPnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxl
ZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBtX2ppdC5jYWdlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHN0b3JhZ2VSZWcpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc3RvcmFnZVJlZyk7CisjZW5kaWYKK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKIHsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTYx
NTAsNiArNjE2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHIK
ICAgICAgICAgQVNTRVJUKGlzVHlwZWRWaWV3KG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlU
eXBlKCkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc3RvcmFnZVJlZyk7
CisgICAgICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShzdG9yYWdlUmVnKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApAQCAtNjE3Miw3ICs2MTkyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRUeXBlZEFycmEKICAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlw
ZWRBcnJheSkpOwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBtX2pp
dC5jYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsKICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
ZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9y
ID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6WmVybywgdmVjdG9yR1BSKTsKKyAg
ICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UodmVjdG9yR1BSKTsKKyAgICBudWxsVmVjdG9yLmxpbmso
Jm1faml0KTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFH
UFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwgZGF0YUdQUik7CiAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBBcnJheUJ1ZmZlcjo6
b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKICAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVj
dG9yR1BSKTsKQEAgLTY5NzEsNiArNjk5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVSZXN0KE4KICAgICAgICAgR1BSUmVnIGJ1dHRlcmZseUdQUiA9IGJ1dHRlcmZseS5n
cHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFy
cmF5UmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBidXR0ZXJmbHlHUFIp
OworICAgICAgICBtX2ppdC5jYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCBidXR0ZXJmbHlHUFIpOwog
CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBza2lwTG9vcCA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgYXJyYXlMZW5ndGhHUFIsIFRydXN0ZWRJbW0zMigwKSk7CiAg
ICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGFycmF5TGVuZ3RoR1BSLCBjdXJyZW50TGVu
Z3RoR1BSKTsKQEAgLTcwNDAsNiArNzA2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTcHJlYWQoTm9kZSoKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZSwgc2NyYXRjaDFHUFIsIFRydXN0ZWRJbW0zMihDb250aWd1b3Vz
U2hhcGUgLSBJbnQzMlNoYXBlKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGxl
bmd0aEdQUik7CisgICAgICAgIG1faml0LmNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIGxlbmd0aEdQ
Uik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsZW5ndGhH
UFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIGxlbmd0aEdQUik7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTVmFsdWUpID09IDggJiYgMSA8PCAzID09IDgsICJU
aGlzIGlzIHN0cm9uZ2x5IGFzc3VtZWQgaW4gdGhlIGNvZGUgYmVsb3cuIik7CiAgICAgICAgIG1f
aml0Lm1vdmUobGVuZ3RoR1BSLCBzY3JhdGNoMUdQUik7CkBAIC03MDUwLDYgKzcwNzYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqCiAgICAgICAgIG1faml0LnN0
b3JlMzIobGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRml4
ZWRBcnJheTo6b2Zmc2V0T2ZTaXplKCkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGFyZ3VtZW50LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCBzY3JhdGNoMUdQUik7CisgICAgICAgIG1faml0LmNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHNj
cmF0Y2gxR1BSKTsKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKIApA
QCAtNzE1OSw2ICs3MTg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5
V2l0aAogCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBpbmRleEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgbV9qaXQu
Y2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgc3RvcmFnZUdQUik7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkgewogICAgICAgICAgICAg
RWRnZSB1c2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGkpOwpAQCAtNzQxNSw2
ICs3NDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTgogICAg
IEdQUlJlZyByZXN1bHRCdXR0ZXJmbHkgPSB0ZW1wMi5ncHIoKTsKIAogICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCByZXN1bHRCdXR0ZXJmbHkpOworICAgIG1faml0LmNhZ2UoR2lnYWNhZ2U6OkpT
VmFsdWUsIHJlc3VsdEJ1dHRlcmZseSk7CiAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodGVt
cEdQUiwgdGVtcEdQUik7CiAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIobG9hZEluZGV4LCBs
b2FkSW5kZXgpOwogICAgIGF1dG8gZG9uZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBsb2FkSW5kZXgsIHRlbXBHUFIpOwpAQCAtNzk4Myw5ICs4MDEyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRlcmZseQogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZXN1
bHRHUFIpOwotICAgIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY2FnaW5nIQotICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MTgKKyAgICBtX2ppdC5j
YWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCByZXN1bHRHUFIpOwogCiAgICAgc3RvcmFnZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjIwNDI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQ1LDYg
KzMwNDUsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CiAgICAgR1BSUmVn
IGZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1h
dCk7CiAgICAgCisgICAgdm9pZCBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnKTsKKyAgICAK
ICAgICAvLyBJdCBpcyBwb3NzaWJsZSwgZHVyaW5nIHNwZWN1bGF0aXZlIGdlbmVyYXRpb24sIHRv
IHJlYWNoIGEgc2l0dWF0aW9uIGluIHdoaWNoIHdlCiAgICAgLy8gY2FuIHN0YXRpY2FsbHkgZGV0
ZXJtaW5lIGEgc3BlY3VsYXRpb24gd2lsbCBmYWlsIChmb3IgZXhhbXBsZSwgd2hlbiB0d28gbm9k
ZXMKICAgICAvLyB3aWxsIG1ha2UgY29uZmxpY3Rpbmcgc3BlY3VsYXRpb25zIGFib3V0IHRoZSBz
YW1lIG9wZXJhbmQpLiBJbiBzdWNoIGNhc2VzIHRoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDQyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMwOSw2ICszMzA5LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRU
byh3YXN0ZWZ1bENhc2UsIGNvbnRpbnVhdGlvbik7CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
bmVlZHMgdG8gZG8gY2FnaW5nLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MzY2CiAgICAgICAgIExWYWx1ZSB2ZWN0b3JQdHIgPSBtX291dC5s
b2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKICAgICAg
ICAgTFZhbHVlIGJ1dHRlcmZseVB0ciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5K
U09iamVjdF9idXR0ZXJmbHkpOwogICAgICAgICBMVmFsdWUgYXJyYXlCdWZmZXJQdHIgPSBtX291
dC5sb2FkUHRyKGJ1dHRlcmZseVB0ciwgbV9oZWFwcy5CdXR0ZXJmbHlfYXJyYXlCdWZmZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317679</attachid>
            <date>2017-08-08 22:56:26 -0700</date>
            <delta_ts>2017-08-09 09:15:48 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8229</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTA4LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgQWRkcyB0aGUgYXBwcm9wcmlhdGUgY2FnZSgpIGNhbGxzIHRv
IHRoZSBERkcsIGluY2x1ZGluZyBhIGNhZ2VUeXBlZEFycmF5U3RvcmFnZSgpIGhlbHBlciB0aGF0
IGRvZXMKKyAgICAgICAgdGhlIGNvbmRpdGlvbmFsIGNhZ2luZyB3aXRoIGEgd2F0Y2hwb2ludC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgbWlnaHQgYmUgYSAxJSBTdW5TcGlkZXIgc2xvdy1kb3du
LCBidXQgaXQncyBub3QgY2xlYXIuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVSZXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCdXR0ZXJmbHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTctMDgtMDgg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJQ3Mgc2hvdWxkIGRv
IGNhZ2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nzg2LDYg
KzU3ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIC8vIE90aGVyd2lzZSBpdCdzIG91dCBvZiBsaW5lCiAgICAgICAgIG91dE9mTGluZUFjY2Vz
cy5saW5rKCZtX2ppdCk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaDJHUFIp
OworICAgICAgICBtX2ppdC5jYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCBzY3JhdGNoMkdQUik7CiAg
ICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgbV9qaXQu
c3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaDFHUFIp
OwogICAgICAgICBtX2ppdC5uZWczMihzY3JhdGNoMUdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYxMjYsNiArNjEyNiwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ29uc3RhbnRTdG9yCiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlR1BSLCBub2RlKTsK
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBz
dG9yYWdlUmVnKQoreworI2lmIEdJR0FDQUdFX0VOQUJMRUQKKyAgICBpZiAoIUdpZ2FjYWdlOjpz
aG91bGRCZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChHaWdhY2Fn
ZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkpIHsKKyAgICAgICAgaWYgKG1faml0
LnZtKCktPnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS53YXRjaHBvaW50cygpLmFkZExhemlseShtX2ppdC52bSgpLT5w
cmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBz
dG9yYWdlUmVnKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0b3JhZ2VSZWcpOworI2VuZGlm
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CkBAIC02MTUwLDYgKzYxNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0SW5kZXhlZFByCiAgICAgICAgIEFTU0VSVChpc1R5cGVkVmlldyhub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZW
ZWN0b3IoKSksIHN0b3JhZ2VSZWcpOworICAgICAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2Uoc3Rv
cmFnZVJlZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAgLTYxNzIsNyArNjE5Miwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJhCiAgICAgICAgIFRy
dXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgp
KSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7
CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6
Olplcm8sIHZlY3RvckdQUik7CisgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKHZlY3RvckdQUik7
CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIo
KSksIGRhdGFHUFIpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YUdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CiAgICAgbV9q
aXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CkBAIC02OTcxLDYgKzY5OTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUmVzdChOCiAgICAgICAgIEdQUlJlZyBidXR0
ZXJmbHlHUFIgPSBidXR0ZXJmbHkuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheVJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgYnV0dGVyZmx5R1BSKTsKKyAgICAgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNW
YWx1ZSwgYnV0dGVyZmx5R1BSKTsKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2tpcExv
b3AgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGFycmF5TGVuZ3RoR1BS
LCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihhcnJh
eUxlbmd0aEdQUiwgY3VycmVudExlbmd0aEdQUik7CkBAIC03MDQwLDYgKzcwNjUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqCiAgICAgICAgIHNsb3dQYXRoLmFw
cGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNjcmF0Y2gxR1BSLCBU
cnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBlIC0gSW50MzJTaGFwZSkpKTsKIAogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFyZ3VtZW50LCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCBsZW5ndGhHUFIpOworICAgICAgICBtX2ppdC5jYWdlKEdpZ2Fj
YWdlOjpKU1ZhbHVlLCBsZW5ndGhHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MobGVuZ3RoR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpLCBsZW5ndGhHUFIpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1ZhbHVlKSA9
PSA4ICYmIDEgPDwgMyA9PSA4LCAiVGhpcyBpcyBzdHJvbmdseSBhc3N1bWVkIGluIHRoZSBjb2Rl
IGJlbG93LiIpOwogICAgICAgICBtX2ppdC5tb3ZlKGxlbmd0aEdQUiwgc2NyYXRjaDFHUFIpOwpA
QCAtNzA1MCw2ICs3MDc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChO
b2RlKgogICAgICAgICBtX2ppdC5zdG9yZTMyKGxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0ZpeGVkQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSk7CiAKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcmd1bWVudCwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaDFHUFIpOworICAgICAgICBtX2ppdC5jYWdl
KEdpZ2FjYWdlOjpKU1ZhbHVlLCBzY3JhdGNoMUdQUik7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IGRvbmU7CiAKQEAgLTcxNTksNiArNzE4Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGgKIAogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgaW5kZXhHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFn
ZUdQUik7CisgICAgICAgIG1faml0LmNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHN0b3JhZ2VHUFIp
OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1DaGlsZHJlbigp
OyArK2kpIHsKICAgICAgICAgICAgIEVkZ2UgdXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCBpKTsKQEAgLTc0MTUsNiArNzQ0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKE4KICAgICBHUFJSZWcgcmVzdWx0QnV0dGVyZmx5ID0gdGVtcDIuZ3By
KCk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVzdWx0QnV0dGVyZmx5KTsKKyAgICBt
X2ppdC5jYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCByZXN1bHRCdXR0ZXJmbHkpOwogICAgIG1faml0
Lnplcm9FeHRlbmQzMlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOwogICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKGxvYWRJbmRleCwgbG9hZEluZGV4KTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgbG9hZEluZGV4LCB0ZW1wR1BS
KTsKQEAgLTc5ODMsOSArODAxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
dXR0ZXJmbHkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIAogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGNhZ2luZyEKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc0OTE4CisgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgcmVzdWx0R1BSKTsK
IAogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIyMDQy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzA0NSw2ICszMDQ1LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGJv
b2wgc3RyaWN0PgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlLCBE
YXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpOwogICAgIAorICAgIHZvaWQgY2FnZVR5cGVkQXJyYXlT
dG9yYWdlKEdQUlJlZyk7CisgICAgCiAgICAgLy8gSXQgaXMgcG9zc2libGUsIGR1cmluZyBzcGVj
dWxhdGl2ZSBnZW5lcmF0aW9uLCB0byByZWFjaCBhIHNpdHVhdGlvbiBpbiB3aGljaCB3ZQogICAg
IC8vIGNhbiBzdGF0aWNhbGx5IGRldGVybWluZSBhIHNwZWN1bGF0aW9uIHdpbGwgZmFpbCAoZm9y
IGV4YW1wbGUsIHdoZW4gdHdvIG5vZGVzCiAgICAgLy8gd2lsbCBtYWtlIGNvbmZsaWN0aW5nIHNw
ZWN1bGF0aW9ucyBhYm91dCB0aGUgc2FtZSBvcGVyYW5kKS4gSW4gc3VjaCBjYXNlcyB0aGlzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAyMjA0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMDksNiArMzMwOSw4IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBjb250aW51YXRpb24pOwogCisg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGRvIGNhZ2luZy4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM2NgogICAgICAgICBMVmFs
dWUgdmVjdG9yUHRyID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X3ZlY3Rvcik7CiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlQdHIgPSBtX291dC5sb2Fk
UHRyKGJhc2VQdHIsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKICAgICAgICAgTFZhbHVl
IGFycmF5QnVmZmVyUHRyID0gbV9vdXQubG9hZFB0cihidXR0ZXJmbHlQdHIsIG1faGVhcHMuQnV0
dGVyZmx5X2FycmF5QnVmZmVyKTsK
</data>
<flag name="review"
          id="338192"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>