<?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>181177</bug_id>
          
          <creation_ts>2017-12-27 12:46:49 -0800</creation_ts>
          <short_desc>CheckStructure can be incorrectly subsumed by CheckStructureOrEmpty</short_desc>
          <delta_ts>2018-01-12 12:47:50 -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>JavaScriptCore</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384832</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-27 12:46:49 -0800</bug_when>
    <thetext>The semantics of CheckStructure are such that it does not allow the empty value to flow through it. However, we may eliminate a CheckStructure if it&apos;s preceded by a CheckStructureOrEmpty. This doesn&apos;t have semantic consequences when validation is turned off. However,  with validation on, this trips up our OSR exit machinery that says when an exit could happen.

An IR example is as such:

a: GetClosureVar // Or any other node that produces BytecodeTop
b: CheckStructure(Cell:@a, {s1})
...
c: CheckStructure(Cell:@a, {s2})
d: PutByOffset(KnownCell:@a, KnownCell:@a, @value)

However, in the TypeCheckHoistingPhase, we may insert CheckStructureOrEmptys like this:
a: GetClosureVar
e: CheckStructureOrEmpty(@a, {s1})
b: CheckStructure(Cell:@a, {s1})
...
f: CheckStructureOrEmpty(@a, {s2})
c: CheckStructure(Cell:@a, {s2})
d: PutByOffset(KnownCell:@a, KnownCell:@a, @value)

This will cause constant folding to change the IR to:
a: GetClosureVar
e: CheckStructureOrEmpty(@a, {s1})
...
f: CheckStructureOrEmpty(@a, {s2})
d: PutByOffset(KnownCell:@a, KnownCell:@a, @value)

The only value that could theoretically flow through the two CheckStructureOrEmtpy is the empty value. However, when we filter values based on edge types, KnownCell only allows SpecCell to flow through, not SpecCellCheck. Given the original IR, this is a correct assumption. KnownCell is correct because CheckStructure wouldn&apos;t allow the empty value to flow through (it would crash). (Note: when the above IR actually runs, it will OSR exit.)

I think a way to solve this IR wart is to introduce an AssertNotEmpty node. There are probably other ways, but this seems the cleanest to me.

Note: in this IR example, the GetClosureVar would not actually produce a TDZ value. If it did happen to produce the TDZ value, based on the assumption that we emit correct bytecode, before the PutByOffset, the bytecode would have a TDZ check node. Therefore, the DFG IR would have also had a CheckNotEmpty node prior to the PutByOffset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384833</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-27 13:10:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/36205704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384834</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-27 13:26:01 -0800</bug_when>
    <thetext>I think that I agree, AssertNotEmpty is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384836</commentid>
    <comment_count>3</comment_count>
      <attachid>330225</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-27 13:47:15 -0800</bug_when>
    <thetext>Created attachment 330225
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384837</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-27 13:50:08 -0800</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #2)
&gt; I think that I agree, AssertNotEmpty is the way to go.

Some other ideas I had just for posterity:

- KnownCell filters SpecCellCheck instead of SpecCell. I don&apos;t like this because it weakens what we mean by KnownCell
- Weaken what we do when validation is enabled in the DFG. Right now, if mayExit tells us we won&apos;t exit, we make sure that&apos;s true. This seems like a nice property to ensure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386842</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-08 12:27:50 -0800</bug_when>
    <thetext>ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388757</commentid>
    <comment_count>6</comment_count>
      <attachid>330225</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-12 02:46:38 -0800</bug_when>
    <thetext>Comment on attachment 330225
patch

Looks nice to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388916</commentid>
    <comment_count>7</comment_count>
      <attachid>330225</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-12 12:47:49 -0800</bug_when>
    <thetext>Comment on attachment 330225
patch

Clearing flags on attachment: 330225

Committed r226907: &lt;https://trac.webkit.org/changeset/226907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388917</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-12 12:47:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330225</attachid>
            <date>2017-12-27 13:47:15 -0800</date>
            <delta_ts>2018-01-12 12:47:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14350</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjYzMDIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE3LTEyLTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENoZWNrU3RydWN0dXJlIGNhbiBiZSBpbmNvcnJlY3RseSBzdWJzdW1l
ZCBieSBDaGVja1N0cnVjdHVyZU9yRW1wdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MTE3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYyMDU3
MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3MvY2hlY2stc3RydWN0dXJlLWlyLWVuc3VyZXMtZW1wdHktZG9lcy1ub3QtZmxvdy10aHJv
dWdoLmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1bk5lYXJTdGFja0xpbWl0LnQpOgorICAgICAgICAo
cnVuTmVhclN0YWNrTGltaXQpOgorICAgICAgICAodGVzdC5mKToKKyAgICAgICAgKHRlc3QpOgor
CiAyMDE3LTEyLTIxICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBTa2lwIHN0cmVzcy9zcGxheS1mbGFzaC1hY2Nlc3MgdGVzdHMgb24gbWVtb3J5IGxp
bWl0ZWQgcGxhdGZvcm1zCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jaGVjay1zdHJ1Y3R1cmUtaXIt
ZW5zdXJlcy1lbXB0eS1kb2VzLW5vdC1mbG93LXRocm91Z2guanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9zdHJlc3MvY2hlY2stc3RydWN0dXJlLWlyLWVuc3VyZXMtZW1wdHktZG9lcy1ub3QtZmxv
dy10aHJvdWdoLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2NoZWNrLXN0cnVj
dHVyZS1pci1lbnN1cmVzLWVtcHR5LWRvZXMtbm90LWZsb3ctdGhyb3VnaC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI2IEBACitmdW5jdGlvbiBydW5OZWFyU3RhY2tMaW1pdChmKSB7Cisg
ICAgZnVuY3Rpb24gdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiB0KCk7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHQoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZ1
bmN0aW9uIGYoYXJnKSB7CisgICAgICAgIGxldCBsb2MgPSBhcmc7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBsb2MucCA9IDA7CisgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIGFy
Zy5wID0gMTsKKyAgICB9CisgICAgbGV0IG9iaiA9IHt9OworICAgIHJ1bk5lYXJTdGFja0xpbWl0
KCgpID0+IHsKKyAgICAgICAgcmV0dXJuIGYob2JqKTsKKyAgICB9KTsKK30KK2ZvciAobGV0IGkg
PSAwOyBpIDwgNTA7ICsraSkKKyAgICB0ZXN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4OSBAQAorMjAxNy0xMi0yNyAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBDaGVja1N0cnVjdHVyZSBjYW4gYmUgaW5j
b3JyZWN0bHkgc3Vic3VtZWQgYnkgQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNzcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MjA1NzA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBzZW1hbnRpY3Mgb2YgQ2hlY2tTdHJ1Y3R1cmUgYXJlIHN1Y2ggdGhh
dCBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgZW1wdHkgdmFsdWUgdG8gZmxvdyB0aHJvdWdoIGl0Lgor
ICAgICAgICBIb3dldmVyLCB3ZSBtYXkgZWxpbWluYXRlIGEgQ2hlY2tTdHJ1Y3R1cmUgaWYgaXQn
cyBwcmVjZWRlZCBieSBhIENoZWNrU3RydWN0dXJlT3JFbXB0eS4gVGhpcyBkb2Vzbid0CisgICAg
ICAgIGhhdmUgc2VtYW50aWMgY29uc2VxdWVuY2VzIHdoZW4gdmFsaWRhdGlvbiBpcyB0dXJuZWQg
b2ZmLiBIb3dldmVyLCB3aXRoIHZhbGlkYXRpb24gb24sIHRoaXMgdHJpcHMgdXAKKyAgICAgICAg
b3VyIE9TUiBleGl0IG1hY2hpbmVyeSB0aGF0IHNheXMgd2hlbiBhbiBleGl0IGlzIGFsbG93ZWQg
dG8gaGFwcGVuLgorICAgICAgICAKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBJUjoK
KyAgICAgICAgCisgICAgICAgIGE6IEdldENsb3N1cmVWYXIgLy8gT3IgYW55IG90aGVyIG5vZGUg
dGhhdCBwcm9kdWNlcyBCeXRlY29kZVRvcAorICAgICAgICAuLi4KKyAgICAgICAgYzogQ2hlY2tT
dHJ1Y3R1cmUoQ2VsbDpAYSwge3MyfSkKKyAgICAgICAgZDogUHV0QnlPZmZzZXQoS25vd25DZWxs
OkBhLCBLbm93bkNlbGw6QGEsIEB2YWx1ZSkKKyAgICAgICAgCisgICAgICAgIEluIHRoZSBUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLCB3ZSBtYXkgaW5zZXJ0IENoZWNrU3RydWN0dXJlT3JFbXB0eXMg
bGlrZSB0aGlzOgorICAgICAgICBhOiBHZXRDbG9zdXJlVmFyCisgICAgICAgIGU6IENoZWNrU3Ry
dWN0dXJlT3JFbXB0eShAYSwge3MxfSkKKyAgICAgICAgLi4uCisgICAgICAgIGY6IENoZWNrU3Ry
dWN0dXJlT3JFbXB0eShAYSwge3MyfSkKKyAgICAgICAgYzogQ2hlY2tTdHJ1Y3R1cmUoQ2VsbDpA
YSwge3MyfSkKKyAgICAgICAgZDogUHV0QnlPZmZzZXQoS25vd25DZWxsOkBhLCBLbm93bkNlbGw6
QGEsIEB2YWx1ZSkKKyAgICAgICAgCisgICAgICAgIFRoaXMgd2lsbCBjYXVzZSBjb25zdGFudCBm
b2xkaW5nIHRvIGNoYW5nZSB0aGUgSVIgdG86CisgICAgICAgIGE6IEdldENsb3N1cmVWYXIKKyAg
ICAgICAgZTogQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5KEBhLCB7czF9KQorICAgICAgICAuLi4KKyAg
ICAgICAgZjogQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5KEBhLCB7czJ9KQorICAgICAgICBkOiBQdXRC
eU9mZnNldChLbm93bkNlbGw6QGEsIEtub3duQ2VsbDpAYSwgQHZhbHVlKQorICAgICAgICAKKyAg
ICAgICAgT3VyIG1heUV4aXQgYW5hbHlzaXMgZGV0ZXJtaW5lcyB0aGF0IHRoZSBQdXRCeU9mZnNl
dCBzaG91bGQgbm90IGV4aXQuIE5vdGUKKyAgICAgICAgdGhhdCBBSSB3aWxsIGRldGVybWluZSB0
aGUgb25seSB2YWx1ZSB0aGUgUHV0QnlPZmZzZXQgY2FuIHNlZSBpbiBAYSBpcyAKKyAgICAgICAg
dGhlIGVtcHR5IHZhbHVlLiBCZWNhdXNlIEtub3duQ2VsbCBmaWx0ZXJzIFNwZWNDZWxsIGFuZCBu
b3QgU3BlY0NlbGxDaGVjaywKKyAgICAgICAgd2hlbiBsb3dlcmluZyB0aGUgUHV0QnlPZmZzZXQs
IHdlIHJlYWNoIGEgY29udHJhZGljdGlvbiBpbiBBSSBhbmQgZW1pdAorICAgICAgICBhbiBPU1Ig
ZXhpdC4gSG93ZXZlciwgYmVjYXVzZSBtYXlFeGl0IHNhaWQgd2UgY291bGRuJ3QgZXhpdCwgd2Ug
YXNzZXJ0LgorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IGlmIHdlIGRpZCBub3QgcnVuIHRo
ZSBUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlIG9uIHRoaXMgSVIsIEFJCisgICAgICAgIHdvdWxkIGhh
dmUgZGV0ZXJtaW5lZCB3ZSB3b3VsZCBPU1IgZXhpdCBhdCB0aGUgc2Vjb25kIENoZWNrU3RydWN0
dXJlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBzbyBjb25zdGFudCBm
b2xkaW5nIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgSVI6CisgICAgICAgIGE6IEdldENsb3N1cmVW
YXIKKyAgICAgICAgZTogQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5KEBhLCB7czF9KQorICAgICAgICBn
OiBBc3NlcnROb3RFbXB0eShAYSkKKyAgICAgICAgLi4uCisgICAgICAgIGY6IENoZWNrU3RydWN0
dXJlT3JFbXB0eShAYSwge3MyfSkKKyAgICAgICAgaDogQXNzZXJ0Tm90RW1wdHkoQGEpCisgICAg
ICAgIGQ6IFB1dEJ5T2Zmc2V0KEtub3duQ2VsbDpAYSwgS25vd25DZWxsOkBhLCBAdmFsdWUpCisg
ICAgICAgIAorICAgICAgICBUaGlzIG1vZGlmaWNhdGlvbiB3aWxsIGNhdXNlIEFJIHRvIGtub3cg
d2Ugd2lsbCBPU1IgZXhpdCBiZWZvcmUgZXZlbiByZWFjaGluZworICAgICAgICB0aGUgUHV0QnlP
ZmZzZXQuIE5vdGUgdGhhdCBpbiB0aGUgb3JpZ2luYWwgSVIsIHRoZSBHZXRDbG9zdXJlVmFyIHdv
bid0CisgICAgICAgIGFjdHVhbGx5IHByb2R1Y2UgdGhlIFREWiB2YWx1ZS4gSWYgaXQgZGlkLCBi
eXRlY29kZSB3b3VsZCBoYXZlIGNhdXNlZCB1cworICAgICAgICB0byBlbWl0IGEgQ2hlY2tOb3RF
bXB0eSBiZWZvcmUgdGhlIENoZWNrU3RydWN0dXJlL1B1dEJ5T2Zmc2V0IGNvbWJvLiBUaGF0J3MK
KyAgICAgICAgd2h5IHRoaXMgYnVnIGlzIGFib3V0IElSIGJvb2trZWVwaW5nIGFuZCBub3QgYW4g
YWN0dWFsIGVycm9yIGluIElSIGFuYWx5c2lzLgorICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgQXNzZXJ0Tm90RW1wdHkgaW5zdGVhZCBvZiB1c2luZyBDaGVja05vdEVtcHR5IHRvIGJlCisg
ICAgICAgIG1vcmUgY29uZ3J1b3VzIHdpdGggQ2hlY2tTdHJ1Y3R1cmUncyBzZW1hbnRpY3Mgb2Yg
Y3Jhc2hpbmcgb24gdGhlIGVtcHR5IHZhbHVlCisgICAgICAgIGFzIGlucHV0IChvbiA2NCBiaXQg
cGxhdGZvcm1zKS4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUFzc2VydE5vdEVtcHR5KToKKwogMjAxNy0xMi0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgc3RkOjpjaHJvbm8gY29t
cGxldGVseQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI2Mjk3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTkxLDYgKzI5OTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQXNz
ZXJ0Tm90RW1wdHk6CiAgICAgY2FzZSBDaGVja05vdEVtcHR5OiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICghKHZh
bHVlLm1fdHlwZSAmIFNwZWNFbXB0eSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDYgKzQxNywx
MCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRl
ZihQdXJlVmFsdWUoQ2hlY2tOb3RFbXB0eSwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpG
aXhlZCwgbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgQXNz
ZXJ0Tm90RW1wdHk6CisgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsK
KwogICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVj
a1N0cmluZ0lkZW50LCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5j
aGlsZDEoKSksIG5vZGUtPnVpZE9wZXJhbmQoKSkpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjI2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw4ICsxNzUs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNl
dDsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJl
KQogICAgICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoKFNw
ZWNDZWxsQ2hlY2sgJiBTcGVjRW1wdHkpICYmIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlICYmIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0Vt
cHR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEFz
c2VydE5vdEVtcHR5LCBub2RlLT5vcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBV
bnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewog
ICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsg
Ly8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwpAQCAtMjkzLDYgKzI5OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2Ug
QXNzZXJ0Tm90RW1wdHk6CiAgICAgICAgICAgICBjYXNlIENoZWNrTm90RW1wdHk6IHsKICAgICAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiBT
cGVjRW1wdHkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjI2Mjk3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiAr
MTM0LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
UHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBDaGVja05v
dEVtcHR5OgorICAgIGNhc2UgQXNzZXJ0Tm90RW1wdHk6CiAgICAgY2FzZSBDaGVja1N0cmluZ0lk
ZW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIy
NjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMzgsNiArMjEzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgogICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBD
aGVja05vdEVtcHR5OgorICAgICAgICBjYXNlIEFzc2VydE5vdEVtcHR5OgogICAgICAgICBjYXNl
IENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAyMjYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhDaGVja0Nl
bGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja05vdEVtcHR5LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQXNzZXJ0Tm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJp
bmdJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIyNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYwLDYgKzExNjAs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNl
IENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5OgorICAgICAgICBjYXNlIEFz
c2VydE5vdEVtcHR5OgogICAgICAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CiAgICAgICAgIGNh
c2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjYy
OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICBjYXNlIENoZWNrQmFkQ2Vs
bDoKICAgICBjYXNlIENoZWNrTm90RW1wdHk6CisgICAgY2FzZSBBc3NlcnROb3RFbXB0eToKICAg
ICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2Ug
UmVnRXhwVGVzdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjI2Mjk3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTE4MSw2ICs1MTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICBjYXNlIEFzc2VydE5v
dEVtcHR5OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgInVuZXhwZWN0
ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDIyNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMTEsNiArNDIxMSwxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgQXNzZXJ0Tm90RW1wdHk6IHsKKyAgICAgICAgaWYgKHZhbGlkYXRpb25F
bmFibGVkKCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSUmVnIGlucHV0ID0gb3BlcmFuZC5ncHIoKTsK
KyAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgaW5wdXQpOworICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAg
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVu
dDoKICAgICAgICAgY29tcGlsZUNoZWNrU3RyaW5nSWRlbnQobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjI2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ2hlY2tDZWxsOgogICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKKyAgICBjYXNlIEFz
c2VydE5vdEVtcHR5OgogICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoKICAgICBjYXNlIENoZWNr
VHJhcHM6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjI2Mjk3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NjksNiArNjY5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja05vdEVt
cHR5OgogICAgICAgICAgICAgY29tcGlsZUNoZWNrTm90RW1wdHkoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEFzc2VydE5vdEVtcHR5OgorICAgICAgICAgICAgY29tcGlsZUFz
c2VydE5vdEVtcHR5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGVja0Jh
ZENlbGw6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI4OTIsNiArMjg5NSwyMyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGUo
VERaRmFpbHVyZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5pc1plcm82NChsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQXNzZXJ0Tm90
RW1wdHkoKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQg
PSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21l
UmVnaXN0ZXIobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBpbnB1dCA9ICBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuYnJhbmNoVGVzdDY0KENDYWxsSGVscGVy
czo6Tm9uWmVybywgaW5wdXQpOworICAgICAgICAgICAgICAgIGppdC5icmVha3BvaW50KCk7Cisg
ICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOworICAgICAgICAgICAgfSk7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJpbmdJZGVudCgpCiAgICAgewogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ub2RlLT51aWRPcGVyYW5kKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>