<?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>120996</bug_id>
          
          <creation_ts>2013-09-07 22:09:48 -0700</creation_ts>
          <short_desc>run-jsc-stress-tests should run tests in parallel if possible</short_desc>
          <delta_ts>2013-09-08 12:30:45 -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>Tools / Tests</component>
          <version>528+ (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>
          <dependson>120994</dependson>
          <blocked>120696</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926374</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 22:09:48 -0700</bug_when>
    <thetext>And it should do so with horrible dirty makefile hacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926376</commentid>
    <comment_count>1</comment_count>
      <attachid>210962</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 22:11:24 -0700</bug_when>
    <thetext>Created attachment 210962
the patch

This needs a rebase after https://bugs.webkit.org/show_bug.cgi?id=120994 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926380</commentid>
    <comment_count>2</comment_count>
      <attachid>210963</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 22:33:07 -0700</bug_when>
    <thetext>Created attachment 210963
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926382</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 22:35:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=210963) [details]
&gt; the patch

This patch needs a rebase after https://bugs.webkit.org/show_bug.cgi?id=120994 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926450</commentid>
    <comment_count>4</comment_count>
      <attachid>210982</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-08 11:03:18 -0700</bug_when>
    <thetext>Created attachment 210982
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926451</commentid>
    <comment_count>5</comment_count>
      <attachid>210983</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-08 11:04:03 -0700</bug_when>
    <thetext>Created attachment 210983
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926460</commentid>
    <comment_count>6</comment_count>
      <attachid>210983</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-08 11:14:48 -0700</bug_when>
    <thetext>Comment on attachment 210983
the patch

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

&gt; Tools/Scripts/run-jsc-stress-tests:39
&gt; +numProcessors = `sysctl -n hw.availcpu`.to_i

Does this work everywhere?  Should we have a /proc fallback? (I really can&apos;t remember what&apos;s available in linux anymore :( )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926461</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-08 11:19:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 210983 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210983&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:39
&gt; &gt; +numProcessors = `sysctl -n hw.availcpu`.to_i
&gt; 
&gt; Does this work everywhere?  Should we have a /proc fallback? (I really can&apos;t remember what&apos;s available in linux anymore :( )

No, it doesn&apos;t. ;-)  Which is why I created this bug: https://bugs.webkit.org/show_bug.cgi?id=120809

Also, here&apos;s what happens on Linux if you do that:

irb(main):002:0&gt; `sysctl -n hw.availcpu`.to_i
error: &quot;hw.availcpu&quot; is an unknown key
=&gt; 0

I.e. that expression yields 0, which then disables parallel runs.  You also get that helpful warning on the console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926462</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-08 11:23:19 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/155307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926470</commentid>
    <comment_count>9</comment_count>
      <attachid>210983</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-08 12:15:24 -0700</bug_when>
    <thetext>Comment on attachment 210983
the patch

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

&gt; Tools/Scripts/run-jsc-stress-tests:245
&gt; +    # The goals of our parallel test runner are scalability and simplicity. The
&gt; +    # simplicity part is particularly important. We don&apos;t want to have to have
&gt; +    # a full-time contributor just philosophising about parallel testing.

+1

&gt; Tools/Scripts/run-jsc-stress-tests:248
&gt; +    # As such, we just pass off all of the hard work to &apos;make&apos;. This creates a
&gt; +    # dummy directory (&quot;$outputDir/.parallel&quot;) in which we create a dummy

Unrelated to this patch, this got me thinking about how I would examine passing and failing results.

&gt; $outputDir = Pathname.new(&quot;results&quot;) 

I think this would be slightly better named as jsc-stress-test-results, or some other meaningful prefix. I end up doing lots of testing with lots of results directories, so the prefix can help me know, at a glance, what&apos;s in the directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926475</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-08 12:24:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 210983 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210983&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:245
&gt; &gt; +    # The goals of our parallel test runner are scalability and simplicity. The
&gt; &gt; +    # simplicity part is particularly important. We don&apos;t want to have to have
&gt; &gt; +    # a full-time contributor just philosophising about parallel testing.
&gt; 
&gt; +1
&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:248
&gt; &gt; +    # As such, we just pass off all of the hard work to &apos;make&apos;. This creates a
&gt; &gt; +    # dummy directory (&quot;$outputDir/.parallel&quot;) in which we create a dummy
&gt; 
&gt; Unrelated to this patch, this got me thinking about how I would examine passing and failing results.

The stress tests are meant to be silent.  This tool doesn&apos;t intercept or pipe output.  Hence any failure output will go to the console.

For every test failure, this tool will create a WebKitBuild/&lt;blah&gt;/jsc-stress-results/&lt;testname&gt; script (for example &lt;testname&gt; might be regress/script-tests/adapt-to-double-divide.default) that can be used to reexecute the failing test exactly the way the tool ran it, *except for* the environment.  So you usually run it like:

DYLD_FRAMEWORK_PATH=$PWD/WebKitBuild/Debug sh WebKitBuild/Debug/jsc-stress-results/regress/script-tests/adapto-to-double-divide.default

Note that &quot;$PWD/&quot; because the script will chdir, so the path needs to be absolute.

&gt; 
&gt; &gt; $outputDir = Pathname.new(&quot;results&quot;) 
&gt; 
&gt; I think this would be slightly better named as jsc-stress-test-results, or some other meaningful prefix. I end up doing lots of testing with lots of results directories, so the prefix can help me know, at a glance, what&apos;s in the directory.

That&apos;s just the default if you invoke this script directly.  When you run it via run-javascriptcore-tests (what you&apos;re supposed to do usually) then you get a results directory in $productDir/jsc-stress-results.  See run-javascriptcore-tests for how that&apos;s done - it&apos;s just passing the -o option to run-jsc-stress-tests.

My thinking was that if you *do* run the script directly, then it&apos;s great for it to create a results directory in the most tersely named way possible.  It&apos;s kind of convenient: &quot;where are the results of the magical thing I just ran?&quot; &quot;oh, they&apos;re in a directory called &apos;results&apos;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926477</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-08 12:30:45 -0700</bug_when>
    <thetext>&gt; For every test failure, this tool will create a WebKitBuild/&lt;blah&gt;/jsc-stress-results/&lt;testname&gt; script (for example &lt;testname&gt; might be regress/script-tests/adapt-to-double-divide.default) that can be used to reexecute the failing test exactly the way the tool ran it

That&apos;s pretty fantastic. I wonder if run-webkit-tests can take a page from this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210962</attachid>
            <date>2013-09-07 22:11:24 -0700</date>
            <delta_ts>2013-09-07 22:33:07 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9988</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTI4MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMyIEBACisyMDEzLTA5LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIHNtYXJ0IGVub3VnaCB0byBj
YWxsIEpTUmVncmVzcyAicmVncmVzcy9zY3JpcHQtdGVzdHMiIHJhdGhlciB0aGFuICJzY3JpcHQt
dGVzdHMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIGFjY2VwdHMgYSBsaXN0IG9mIGRpcmVjdG9yaWVz
IGNvbnRhaW5pbmcgdGVzdHMuICBJdCBuZWVkcyB0bworICAgICAgICBjb21lIHVwIHdpdGggbmFt
ZXMgZm9yIGFsbCBvZiB0aGVtLiAgQ3VycmVudGx5IGl0IHVzZXMgdGhlIGJhc2VuYW1lIG9mIHRo
ZSB0ZXN0CisgICAgICAgIGRpcmVjdG9yeS4gIEJ1dCB0aGF0IG1lYW5zIHRoYXQgSlNSZWdyZXNz
IGdldHMgY2FsbGVkICJzY3JpcHQtdGVzdHMiLCB3aGljaCBpcworICAgICAgICB1bmZvcnR1bmF0
ZSBzaW5jZSBhbnkgZGlyZWN0b3J5IGluIExheW91dFRlc3RzIGNvbnRhaW5pbmcgLmpzIGZpbGVz
IHdpbGwgYmUKKyAgICAgICAgY2FsbGVkICJzY3JpcHQtdGVzdHMiLiAgU28sIHRoaXMgY2hhbmdl
cyBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB1c2UgbW9yZSB0aGFuCisgICAgICAgIGp1c3QgdGhl
IGJhc2VuYW1lIGlmIHRoZSBiYXNlbmFtZSBoYXMgdGhlIHdvcmQgInRlc3RzIiBpbiBpdC4gIFRo
aXMgY2F1c2VzCisgICAgICAgIEpTUmVncmVzcyB0byBiZSBjYWxsZWQgInJlZ3Jlc3Mvc2NyaXB0
LXRlc3RzIi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKKzIw
MTMtMDktMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBydW4t
anNjLXN0cmVzcy10ZXN0cyBzaG91bGQgcnVuIHRlc3RzIGluIHBhcmFsbGVsIGlmIHBvc3NpYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBieSB1c2luZyBNYWtlZmlsZSBoYWNrcy4gVGhpcyBsZXRz
IG1ha2UgdGFrZSBjYXJlIG9mIGFsbCBsb2FkCisgICAgICAgIGJhbGFuY2luZy4gSXQncyBhIHJl
YWxseSBhd2Vzb21lIHNwZWVkLXVwIGZvciB0aGVzZSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTMtMDktMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBydW4tanNjLXN0cmVzcy10ZXN0cyBzaG91bGQgYmUg
c21hcnQgZW5vdWdoIHRvIGNhbGwgSlNSZWdyZXNzICJyZWdyZXNzL3NjcmlwdC10ZXN0cyIgcmF0
aGVyIHRoYW4gInNjcmlwdC10ZXN0cyIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0
cwkocmV2aXNpb24gMTU1MjgxKQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0
cwkod29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDMwIEBACiByZXF1aXJlICdnZXRvcHRsb25n
JwogcmVxdWlyZSAncGF0aG5hbWUnCiAKKyRoYXZlU2hlbGx3b3JkcyA9IGZhbHNlCisKIGJlZ2lu
CiAgICAgcmVxdWlyZSAnc2hlbGx3b3JkcycKKyAgICAkaGF2ZVNoZWxsd29yZHMgPSB0cnVlCiBy
ZXNjdWUgPT4gZQogICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogZGlkIG5vdCBmaW5kIHNoZWxs
d29yZHM7IHNvbWUgZmVhdHVyZXMgd2lsbCBiZSBkaXNhYmxlZC4iCiAgICAgJHN0ZGVyci5wdXRz
ICJFcnJvcjogI3tlLmluc3BlY3R9IgogZW5kCiAKK1BBUkFMTEVMX1JFVFJJRVMgPSAyMAorCiAk
anNjUGF0aCA9IG5pbAogJGVuYWJsZUZUTCA9IGZhbHNlCiAkY29sbGVjdGlvbnMgPSBbXQogJG91
dHB1dERpciA9IFBhdGhuYW1lLm5ldygicmVzdWx0cyIpCiskcGFyYWxsZWwgPSAkaGF2ZVNoZWxs
d29yZHMKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNo
ZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCiAg
ICAgcHV0cwogICAgIHB1dHMgIi0tanNjICAgICAgICAgICAgKC1qKSAgIFBhdGggdG8gSmF2YVNj
cmlwdENvcmUuIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkLiIKICAgICBwdXRzICItLWZ0bC1qaXQg
ICAgICAgICAgICAgICBJbmRpY2F0ZSB0aGF0IHdlIGhhdmUgdGhlIEZUTCBKSVQuIgorICAgIHB1
dHMgIi0tW25vLV1wYXJhbGxlbCAgICAgICAgIFJ1biBpbiBwYXJhbGxlbCwgb3Igbm90LiBEZWZh
dWx0IGlzICN7JHBhcmFsbGVsfS4iCiAgICAgcHV0cyAiLS1vdXRwdXQtZGlyICAgICAoLW8pICAg
UGF0aCB3aGVyZSB0byBwdXQgcmVzdWx0cy4gRGVmYXVsdCBpcyAjeyRvdXRwdXREaXJ9LiIKICAg
ICBwdXRzICItLWhlbHAgICAgICAgICAgICgtaCkgICBQcmludCB0aGlzIG1lc3NhZ2UuIgogICAg
IGV4aXQgMQpAQCAtNjIsNiArNjksMTAgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgn
LCBHZXRvcHRMbwogICAgICAgICAkb3V0cHV0RGlyID0gUGF0aG5hbWUubmV3KGFyZykKICAgICB3
aGVuICctLWZ0bC1qaXQnCiAgICAgICAgICRlbmFibGVGVEwgPSB0cnVlCisgICAgd2hlbiAnLS1w
YXJhbGxlbCcKKyAgICAgICAgJHBhcmFsbGVsID0gdHJ1ZQorICAgIHdoZW4gJy0tbm8tcGFyYWxs
ZWwnCisgICAgICAgICRwYXJhbGxlbCA9IGZhbHNlCiAgICAgZW5kCiB9CiAKQEAgLTc0LDMyICs4
NSwzNSBAQCAkbnVtRmFpbHVyZXMgPSAwCiAKIEVBR0VSX09QVElPTlMgPSBbIi0tZW5hYmxlQ29u
Y3VycmVudEpJVD1mYWxzZSIsICItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwIiwgIi0t
dGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJt
VXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD0yMCIsICItLXRo
cmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0
ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb249MjAiXQogCi1kZWYg
cnVuKGtpbmQsICpvcHRpb25zKQotICAgIG5hbWUgPSAiI3skYmVuY2htYXJrfS4je2tpbmR9Igot
ICAgIHByaW50ICIjeyRjb2xsZWN0aW9uTmFtZX0vI3tuYW1lfTogIgotICAgIGFyZ3VtZW50cyA9
IFskanNjUGF0aC50b19zXSArIG9wdGlvbnMgKyBbJGJlbmNobWFya10KLSAgICBpZiBzeXN0ZW0o
KmFyZ3VtZW50cykKLSAgICAgICAgcHV0cyAiT0suIgotICAgIGVsc2UKLSAgICAgICAgcHV0cyAi
RkFJTDogI3skPy5pbnNwZWN0fSIKLSAgICAgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFp
bGVkIiwgImEiKSB7CiskcnVubGlzdCA9IFtdCisKK2NsYXNzIFBsYW4KKyAgICBhdHRyX3JlYWRl
ciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6bmFtZQorICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4
CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIG5hbWUpCisg
ICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkucmVhbHBhdGgKKyAgICAgICAgQGFyZ3VtZW50
cyA9IGFyZ3VtZW50cworICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgd3JpdGVUZXN0U2NyaXB0KGZpbGVuYW1lLCBmYWlsQ29tbWFuZCkKKyAgICAgICAgRmlsZS5v
cGVuKGZpbGVuYW1lLCAidyIpIHsKICAgICAgICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICAgICBv
dXRwLnB1dHMgIiN7JGNvbGxlY3Rpb25OYW1lfS8je25hbWV9IgorICAgICAgICAgICAgb3V0cC5w
dXRzICJlY2hvIFJ1bm5pbmcgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0iCisgICAg
ICAgICAgICBvdXRwLnB1dHMoIihjZCAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9y
eSl9ICYmICIgKworICAgICAgICAgICAgICAgICAgICAgIEBhcmd1bWVudHMubWFwe3x2fCBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKHYpfS5qb2luKCcgJykgKworICAgICAgICAgICAgICAgICAgICAg
ICIpIHx8ICN7ZmFpbENvbW1hbmR9IikKICAgICAgICAgfQotICAgICAgICAkbnVtRmFpbHVyZXMg
Kz0gMQotICAgICAgICBmaWxlbmFtZSA9ICRvdXRwdXREaXIgKyAkY29sbGVjdGlvbk5hbWUgKyBu
YW1lCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3Iikg
ewotICAgICAgICAgICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJj
ZCAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRGlyLnB3ZCl9IikKLSAgICAgICAgICAgICAgICBv
dXRwLnB1dHMoYXJndW1lbnRzLm1hcHt8dnwgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2KX0uam9p
bignICcpKQotICAgICAgICAgICAgfQotICAgICAgICByZXNjdWUgPT4gZQotICAgICAgICAgICAg
JHN0ZGVyci5wdXRzICJXYXJuaW5nOiBmYWlsZWQgdG8gY3JlYXRlIHJlcHJvIGZpbGUgYXQgI3tm
aWxlbmFtZX06ICN7ZS5pbnNwZWN0fSIKLSAgICAgICAgZW5kCiAgICAgZW5kCiBlbmQKIAorZGVm
IHJ1bihraW5kLCAqb3B0aW9ucykKKyAgICAkcnVubGlzdCA8PCBQbGFuLm5ldygkY29sbGVjdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJGpzY1BhdGgudG9fc10gKyBvcHRpb25zICsg
WyRiZW5jaG1hcmtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICIjeyRjb2xsZWN0aW9uTmFt
ZX0vI3skYmVuY2htYXJrfS4je2tpbmR9IikKK2VuZAorCiBkZWYgcnVuRGVmYXVsdAogICAgIHJ1
bigiZGVmYXVsdCIpCiBlbmQKQEAgLTEzNyw3ICsxNTEsNyBAQCBkZWYgZGVmYXVsdFJ1bgogZW5k
CiAKIGRlZiBza2lwCi0gICAgcHV0cyAiU2tpcHBpbmcgI3skYmVuY2htYXJrfSIKKyAgICBwdXRz
ICJTa2lwcGluZyAjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSIKIGVuZAogCiBjb2xs
ZWN0aW9uTmFtZXMgPSB7fQpAQCAtMTUyLDM4ICsxNjYsMTMzIEBAICRvdXRwdXREaXIgPSAkb3V0
cHV0RGlyLnJlYWxwYXRoCiAKIEFSR1YuZWFjaCB7CiAgICAgfCBjb2xsZWN0aW9uIHwKLSAgICAk
Y29sbGVjdGlvbiA9IGNvbGxlY3Rpb24KLSAgICAkY29sbGVjdGlvbk5hbWUgPSBGaWxlLmJhc2Vu
YW1lKGNvbGxlY3Rpb24pCisgICAgJGNvbGxlY3Rpb24gPSBQYXRobmFtZS5uZXcoY29sbGVjdGlv
bikKKyAgICBvdXRlckRpciA9ICRjb2xsZWN0aW9uLmRpcm5hbWUKKyAgICBuYW1lID0gJGNvbGxl
Y3Rpb24uYmFzZW5hbWUKKyAgICBsYXN0TmFtZSA9IG5hbWUKKyAgICB3aGlsZSBsYXN0TmFtZS50
b19zID1+IC90ZXN0LworICAgICAgICBsYXN0TmFtZSA9IG91dGVyRGlyLmJhc2VuYW1lCisgICAg
ICAgIG5hbWUgPSBsYXN0TmFtZSArIG5hbWUKKyAgICAgICAgb3V0ZXJEaXIgPSBvdXRlckRpci5k
aXJuYW1lCisgICAgZW5kCisgICAgJGNvbGxlY3Rpb25OYW1lID0gbmFtZS50b19zCiAgICAgdG9B
ZGQgPSAxCiAgICAgd2hpbGUgY29sbGVjdGlvbk5hbWVzWyRjb2xsZWN0aW9uTmFtZV0KLSAgICAg
ICAgJGNvbGxlY3Rpb25OYW1lID0gRmlsZS5iYXNlbmFtZShjb2xsZWN0aW9uKSArICItI3t0b0Fk
ZH0iCisgICAgICAgICRjb2xsZWN0aW9uTmFtZSA9IEZpbGUuYmFzZW5hbWUobmFtZS50b19zKSAr
ICItI3t0b0FkZH0iCiAgICAgICAgIHRvQWRkICs9IDEKICAgICBlbmQKICAgICBjb2xsZWN0aW9u
TmFtZXNbJGNvbGxlY3Rpb25OYW1lXSA9IHRydWUKLSAgICBkaXIgPSAkb3V0cHV0RGlyICsgJGNv
bGxlY3Rpb25OYW1lCi0gICAgRGlyLm1rZGlyKGRpcikgdW5sZXNzIGRpci5kaXJlY3Rvcnk/Ci0g
ICAgRGlyLmNoZGlyKGNvbGxlY3Rpb24pIHsKLSAgICAgICAgRGlyLmZvcmVhY2goJy4nKSB7Ci0g
ICAgICAgICAgICB8IGJlbmNobWFyayB8Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBiZW5jaG1h
cmsgPX4gL1wuanMkLwotICAgICAgICAgICAgbmV4dCB1bmxlc3MgRmlsZVRlc3QuZmlsZT8gYmVu
Y2htYXJrCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICRiZW5jaG1hcmsgPSBiZW5jaG1hcmsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgZGlkUnVuID0gZmFsc2UKLSAgICAgICAgICAgIEZp
bGUub3BlbihiZW5jaG1hcmspIHsKLSAgICAgICAgICAgICAgICB8IGlucCB8Ci0gICAgICAgICAg
ICAgICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgICAgICAgICAgICAgIHwgbGluZSB8Ci0gICAg
ICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGxpbmUgPX4gL15cL1wvQC8KLSAgICAgICAgICAg
ICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCi0gICAgICAgICAgICAgICAgICAgIGRpZFJ1biA9
IHRydWUKLSAgICAgICAgICAgICAgICB9CisgICAgZGlyID0gJG91dHB1dERpcgorICAgIG5hbWUu
ZWFjaF9maWxlbmFtZSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBkaXIgPSBkaXIg
KyBmaWxlbmFtZQorICAgICAgICBEaXIubWtkaXIoZGlyKSB1bmxlc3MgZGlyLmRpcmVjdG9yeT8K
KyAgICB9CisKKyAgICBEaXIuZm9yZWFjaCgkY29sbGVjdGlvbikgeworICAgICAgICB8IGJlbmNo
bWFyayB8CisgICAgICAgIG5leHQgdW5sZXNzIGJlbmNobWFyayA9fiAvXC5qcyQvCisgICAgICAg
IG5leHQgdW5sZXNzICgkY29sbGVjdGlvbiArIGJlbmNobWFyaykuZmlsZT8KKyAgICAgICAgCisg
ICAgICAgICRiZW5jaG1hcmsgPSBiZW5jaG1hcmsKKyAgICAgICAgCisgICAgICAgIGRpZFJ1biA9
IGZhbHNlCisgICAgICAgIEZpbGUub3BlbigkY29sbGVjdGlvbiArIGJlbmNobWFyaykgeworICAg
ICAgICAgICAgfCBpbnAgfAorICAgICAgICAgICAgaW5wLmVhY2hfbGluZSB7CisgICAgICAgICAg
ICAgICAgfCBsaW5lIHwKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBsaW5lID1+IC9eXC9c
L0AvCisgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCisgICAgICAgICAgICAgICAg
ZGlkUnVuID0gdHJ1ZQogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBk
ZWZhdWx0UnVuIHVubGVzcyBkaWRSdW4KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGVm
YXVsdFJ1biB1bmxlc3MgZGlkUnVuCiAgICAgfQogfQogCitkZWYgYXBwZW5kRmFpbHVyZShwbGFu
KQorICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsgImZhaWxlZCIsICJhIikgeworICAgICAgICB8
IG91dHAgfAorICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCisgICAgfQorICAgICRudW1GYWls
dXJlcyArPSAxCitlbmQKKworaWYgJHBhcmFsbGVsCisgICAgcnVuSW5kaWNlcyA9IFtdCisgICAg
JHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBwbGFuLCBpbmRleCB8CisgICAg
ICAgIHJ1bkluZGljZXMgPDwgaW5kZXgKKyAgICAgICAgcGxhbi5pbmRleCA9IGluZGV4CisgICAg
fQorICAgIAorICAgIHBhcmFsbGVsRGlyID0gJG91dHB1dERpciArICIucGFyYWxsZWwiCisgICAg
RGlyLm1rZGlyKHBhcmFsbGVsRGlyKSB1bmxlc3MgcGFyYWxsZWxEaXIuZGlyZWN0b3J5PworICAg
IHRvRGVsZXRlID0gW10KKyAgICBEaXIuZm9yZWFjaChwYXJhbGxlbERpcikgeworICAgICAgICB8
IGZpbGVuYW1lIHwKKyAgICAgICAgaWYgZmlsZW5hbWUgPX4gL150ZXN0Xy8KKyAgICAgICAgICAg
IHRvRGVsZXRlIDw8IGZpbGVuYW1lCisgICAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICB0b0Rl
bGV0ZS5lYWNoIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIEZpbGUudW5saW5rKHBh
cmFsbGVsRGlyICsgZmlsZW5hbWUpCisgICAgfQorICAgIAorICAgICRydW5saXN0LmVhY2ggewor
ICAgICAgICB8IHBsYW4gfAorICAgICAgICBmYWlsQ29tbWFuZCAgPSAie1xuIgorICAgICAgICBm
YWlsQ29tbWFuZCArPSAiICAgIGVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHBs
YW4ubmFtZSl9XG4iCisgICAgICAgIGZhaWxDb21tYW5kICs9ICIgICAgbXYgdGVzdF9zY3JpcHRf
I3twbGFuLmluZGV4fSAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoJG91dHB1dERpciArIHBsYW4u
bmFtZSl9XG4iCisgICAgICAgIGZhaWxDb21tYW5kICs9ICIgICAgdG91Y2ggdGVzdF9mYWlsXyN7
cGxhbi5pbmRleH1cbiIKKyAgICAgICAgZmFpbENvbW1hbmQgKz0gIn0iCisgICAgICAgIHBsYW4u
d3JpdGVUZXN0U2NyaXB0KHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0i
LCBmYWlsQ29tbWFuZCkKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKHBhcmFsbGVsRGlyICsg
Ik1ha2VmaWxlIiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAgICAgIG91dHAucHV0cygi
YWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9LmpvaW4oJyAnKSkK
KyAgICAgICAgcnVuSW5kaWNlcy5lYWNoIHsKKyAgICAgICAgICAgIHwgaW5kZXggfAorICAgICAg
ICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQorICAgICAgICAgICAgb3V0cC5wdXRzICJ0ZXN0
X2RvbmVfI3tpbmRleH06IgorICAgICAgICAgICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0
XyN7cGxhbi5pbmRleH0iCisgICAgICAgICAgICBvdXRwLnB1dHMgIlx0dG91Y2ggdGVzdF9kb25l
XyN7aW5kZXh9IgorICAgICAgICB9CisgICAgfQorICAgIAorICAgIERpci5jaGRpcihwYXJhbGxl
bERpcikgeworICAgICAgICBzeXN0ZW0oIm1ha2UiLCAiLWoiLCBgc3lzY3RsIC1uIGh3LmF2YWls
Y3B1YC5jaG9tcCwgIi1zIiwgIi1mIiwgIk1ha2VmaWxlIikKKyAgICB9CisgICAgCisgICAgRGly
LmZvcmVhY2gocGFyYWxsZWxEaXIpIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIG5l
eHQgdW5sZXNzIGZpbGVuYW1lID1+IC90ZXN0X2ZhaWxfLworICAgICAgICBhcHBlbmRGYWlsdXJl
KCRydW5saXN0WyR+LnBvc3RfbWF0Y2gudG9faV0pCisgICAgfQorZWxzZQorICAgICRydW5saXN0
LmVhY2ggeworICAgICAgICB8IHBsYW4gfAorICAgICAgICBwcmludCAiI3twbGFuLm5hbWV9OiAi
CisgICAgICAgIAorICAgICAgICBEaXIuY2hkaXIocGxhbi5kaXJlY3RvcnkpIHsKKyAgICAgICAg
ICAgIGlmIHN5c3RlbSgqcGxhbi5hcmd1bWVudHMpCisgICAgICAgICAgICAgICAgcHV0cyAiT0su
IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHB1dHMgIkZBSUw6ICN7JD8uaW5z
cGVjdH0iCisgICAgICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gJG91dHB1dERpciArIHBsYW4ubmFtZQorICAgICAgICAgICAgICAgIGJl
Z2luCisgICAgICAgICAgICAgICAgICAgIHBsYW4ud3JpdGVUZXN0U2NyaXB0KGZpbGVuYW1lLCAi
ZXhpdCAxIikKKyAgICAgICAgICAgICAgICByZXNjdWUgPT4gZQorICAgICAgICAgICAgICAgICAg
ICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IGZhaWxlZCB0byBjcmVhdGUgcmVwcm8gZmlsZSBhdCAj
e2ZpbGVuYW1lfTogI3tlLmluc3BlY3R9IgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgZW5kCisgICAgICAgIH0KKyAgICB9CitlbmQKKwogcHV0cyAiRmFpbGVkICN7JG51bUZhaWx1
cmVzfSB0ZXN0cy4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210963</attachid>
            <date>2013-09-07 22:33:07 -0700</date>
            <delta_ts>2013-09-08 11:03:18 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10843</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTI4MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDEzLTA5LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIHNtYXJ0IGVub3VnaCB0byBj
YWxsIEpTUmVncmVzcyAicmVncmVzcy9zY3JpcHQtdGVzdHMiIHJhdGhlciB0aGFuICJzY3JpcHQt
dGVzdHMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIGFjY2VwdHMgYSBsaXN0IG9mIGRpcmVjdG9yaWVz
IGNvbnRhaW5pbmcgdGVzdHMuICBJdCBuZWVkcyB0bworICAgICAgICBjb21lIHVwIHdpdGggbmFt
ZXMgZm9yIGFsbCBvZiB0aGVtLiAgQ3VycmVudGx5IGl0IHVzZXMgdGhlIGJhc2VuYW1lIG9mIHRo
ZSB0ZXN0CisgICAgICAgIGRpcmVjdG9yeS4gIEJ1dCB0aGF0IG1lYW5zIHRoYXQgSlNSZWdyZXNz
IGdldHMgY2FsbGVkICJzY3JpcHQtdGVzdHMiLCB3aGljaCBpcworICAgICAgICB1bmZvcnR1bmF0
ZSBzaW5jZSBhbnkgZGlyZWN0b3J5IGluIExheW91dFRlc3RzIGNvbnRhaW5pbmcgLmpzIGZpbGVz
IHdpbGwgYmUKKyAgICAgICAgY2FsbGVkICJzY3JpcHQtdGVzdHMiLiAgU28sIHRoaXMgY2hhbmdl
cyBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB1c2UgbW9yZSB0aGFuCisgICAgICAgIGp1c3QgdGhl
IGJhc2VuYW1lIGlmIHRoZSBiYXNlbmFtZSBoYXMgdGhlIHdvcmQgInRlc3RzIiBpbiBpdC4gIFRo
aXMgY2F1c2VzCisgICAgICAgIEpTUmVncmVzcyB0byBiZSBjYWxsZWQgInJlZ3Jlc3Mvc2NyaXB0
LXRlc3RzIi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKKzIw
MTMtMDktMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBydW4t
anNjLXN0cmVzcy10ZXN0cyBzaG91bGQgcnVuIHRlc3RzIGluIHBhcmFsbGVsIGlmIHBvc3NpYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBieSB1c2luZyBNYWtlZmlsZSBoYWNrcy4gVGhpcyBsZXRz
IG1ha2UgdGFrZSBjYXJlIG9mIGFsbCBsb2FkCisgICAgICAgIGJhbGFuY2luZy4gSXQncyBhIHJl
YWxseSBhd2Vzb21lIHNwZWVkLXVwIGZvciB0aGVzZSB0ZXN0cy4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgcmVkdWNlcyB0aGUgRlRMIGRlYnVnIGJ1aWxkIHN0cmVzcyB0ZXN0IHJ1biB0aW1lIGZy
b20gOG0xOHMgdG8gMm0xMXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzOgorCiAyMDEzLTA5LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIHNtYXJ0IGVub3VnaCB0byBjYWxs
IEpTUmVncmVzcyAicmVncmVzcy9zY3JpcHQtdGVzdHMiIHJhdGhlciB0aGFuICJzY3JpcHQtdGVz
dHMiCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDE1NTI4MSkK
KysrIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDIzICsyNiwzMiBAQAogcmVxdWlyZSAnZ2V0b3B0bG9uZycKIHJlcXVpcmUgJ3BhdGhuYW1l
JwogCiskaGF2ZVNoZWxsd29yZHMgPSBmYWxzZQorCiBiZWdpbgogICAgIHJlcXVpcmUgJ3NoZWxs
d29yZHMnCisgICAgJGhhdmVTaGVsbHdvcmRzID0gdHJ1ZQogcmVzY3VlID0+IGUKICAgICAkc3Rk
ZXJyLnB1dHMgIldhcm5pbmc6IGRpZCBub3QgZmluZCBzaGVsbHdvcmRzOyBzb21lIGZlYXR1cmVz
IHdpbGwgYmUgZGlzYWJsZWQuIgogICAgICRzdGRlcnIucHV0cyAiRXJyb3I6ICN7ZS5pbnNwZWN0
fSIKIGVuZAogCitQQVJBTExFTF9SRVRSSUVTID0gMjAKKworbnVtUHJvY2Vzc29ycyA9IGBzeXNj
dGwgLW4gaHcuYXZhaWxjcHVgLnRvX2kKKwogJGpzY1BhdGggPSBuaWwKICRlbmFibGVGVEwgPSBm
YWxzZQogJGNvbGxlY3Rpb25zID0gW10KICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoInJlc3Vs
dHMiKQorJHBhcmFsbGVsID0gKCRoYXZlU2hlbGx3b3JkcyBhbmQgbnVtUHJvY2Vzc29ycyA+IDEp
CiAKIGRlZiB1c2FnZQogICAgIHB1dHMgInJ1bi1qc2Mtc3RyZXNzLXRlc3RzIC1qIDxzaGVsbCBw
YXRoPiA8Y29sbGVjdGlvbnMgcGF0aD4gWzxjb2xsZWN0aW9ucyBwYXRoPiAuLi5dIgogICAgIHB1
dHMKICAgICBwdXRzICItLWpzYyAgICAgICAgICAgICgtaikgICBQYXRoIHRvIEphdmFTY3JpcHRD
b3JlLiBUaGlzIG9wdGlvbiBpcyByZXF1aXJlZC4iCiAgICAgcHV0cyAiLS1mdGwtaml0ICAgICAg
ICAgICAgICAgSW5kaWNhdGUgdGhhdCB3ZSBoYXZlIHRoZSBGVEwgSklULiIKKyAgICBwdXRzICIt
LVtuby1dcGFyYWxsZWwgICAgICAgICBSdW4gaW4gcGFyYWxsZWwsIG9yIG5vdC4gRGVmYXVsdCBp
cyAjeyRwYXJhbGxlbH0uIgogICAgIHB1dHMgIi0tb3V0cHV0LWRpciAgICAgKC1vKSAgIFBhdGgg
d2hlcmUgdG8gcHV0IHJlc3VsdHMuIERlZmF1bHQgaXMgI3skb3V0cHV0RGlyfS4iCiAgICAgcHV0
cyAiLS1oZWxwICAgICAgICAgICAoLWgpICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIKICAgICBleGl0
IDEKQEAgLTUxLDYgKzYwLDggQEAgZW5kCiBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcs
IEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1qc2MnLCAnLWon
LCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tZnRs
LWppdCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1wYXJh
bGxlbCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1uby1w
YXJhbGxlbCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1v
dXRwdXQtZGlyJywgJy1vJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdKS5lYWNoIHsK
ICAgICB8IG9wdCwgYXJnIHwKICAgICBjYXNlIG9wdApAQCAtNjIsNiArNzMsMTAgQEAgR2V0b3B0
TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMbwogICAgICAgICAkb3V0cHV0RGlyID0g
UGF0aG5hbWUubmV3KGFyZykKICAgICB3aGVuICctLWZ0bC1qaXQnCiAgICAgICAgICRlbmFibGVG
VEwgPSB0cnVlCisgICAgd2hlbiAnLS1wYXJhbGxlbCcKKyAgICAgICAgJHBhcmFsbGVsID0gdHJ1
ZQorICAgIHdoZW4gJy0tbm8tcGFyYWxsZWwnCisgICAgICAgICRwYXJhbGxlbCA9IGZhbHNlCiAg
ICAgZW5kCiB9CiAKQEAgLTc0LDMyICs4OSwzNSBAQCAkbnVtRmFpbHVyZXMgPSAwCiAKIEVBR0VS
X09QVElPTlMgPSBbIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSIsICItLXRocmVzaG9sZEZv
ckpJVEFmdGVyV2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVz
aG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRo
cmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExP
cHRpbWl6ZVNvb249MjAiXQogCi1kZWYgcnVuKGtpbmQsICpvcHRpb25zKQotICAgIG5hbWUgPSAi
I3skYmVuY2htYXJrfS4je2tpbmR9IgotICAgIHByaW50ICIjeyRjb2xsZWN0aW9uTmFtZX0vI3tu
YW1lfTogIgotICAgIGFyZ3VtZW50cyA9IFskanNjUGF0aC50b19zXSArIG9wdGlvbnMgKyBbJGJl
bmNobWFya10KLSAgICBpZiBzeXN0ZW0oKmFyZ3VtZW50cykKLSAgICAgICAgcHV0cyAiT0suIgot
ICAgIGVsc2UKLSAgICAgICAgcHV0cyAiRkFJTDogI3skPy5pbnNwZWN0fSIKLSAgICAgICAgRmls
ZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFpbGVkIiwgImEiKSB7CiskcnVubGlzdCA9IFtdCisKK2Ns
YXNzIFBsYW4KKyAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6bmFtZQor
ICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoZGlyZWN0
b3J5LCBhcmd1bWVudHMsIG5hbWUpCisgICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkucmVh
bHBhdGgKKyAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cworICAgICAgICBAbmFtZSA9IG5h
bWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd3JpdGVUZXN0U2NyaXB0KGZpbGVuYW1lLCBmYWls
Q29tbWFuZCkKKyAgICAgICAgRmlsZS5vcGVuKGZpbGVuYW1lLCAidyIpIHsKICAgICAgICAgICAg
IHwgb3V0cCB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMgIiN7JGNvbGxlY3Rpb25OYW1lfS8je25h
bWV9IgorICAgICAgICAgICAgb3V0cC5wdXRzICJlY2hvIFJ1bm5pbmcgI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKEBuYW1lKX0iCisgICAgICAgICAgICBvdXRwLnB1dHMoIihjZCAje1NoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeSl9ICYmICIgKworICAgICAgICAgICAgICAgICAgICAg
IEBhcmd1bWVudHMubWFwe3x2fCBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHYpfS5qb2luKCcgJykg
KworICAgICAgICAgICAgICAgICAgICAgICIpIHx8ICN7ZmFpbENvbW1hbmR9IikKICAgICAgICAg
fQotICAgICAgICAkbnVtRmFpbHVyZXMgKz0gMQotICAgICAgICBmaWxlbmFtZSA9ICRvdXRwdXRE
aXIgKyAkY29sbGVjdGlvbk5hbWUgKyBuYW1lCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgICBG
aWxlLm9wZW4oZmlsZW5hbWUsICJ3IikgewotICAgICAgICAgICAgICAgIHwgb3V0cCB8Ci0gICAg
ICAgICAgICAgICAgb3V0cC5wdXRzKCJjZCAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRGlyLnB3
ZCl9IikKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMoYXJndW1lbnRzLm1hcHt8dnwgU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSh2KX0uam9pbignICcpKQotICAgICAgICAgICAgfQotICAgICAgICBy
ZXNjdWUgPT4gZQotICAgICAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiBmYWlsZWQgdG8g
Y3JlYXRlIHJlcHJvIGZpbGUgYXQgI3tmaWxlbmFtZX06ICN7ZS5pbnNwZWN0fSIKLSAgICAgICAg
ZW5kCiAgICAgZW5kCiBlbmQKIAorZGVmIHJ1bihraW5kLCAqb3B0aW9ucykKKyAgICAkcnVubGlz
dCA8PCBQbGFuLm5ldygkY29sbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJGpz
Y1BhdGgudG9fc10gKyBvcHRpb25zICsgWyRiZW5jaG1hcmtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICIjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfS4je2tpbmR9IikKK2VuZAor
CiBkZWYgcnVuRGVmYXVsdAogICAgIHJ1bigiZGVmYXVsdCIpCiBlbmQKQEAgLTEzNyw3ICsxNTUs
NyBAQCBkZWYgZGVmYXVsdFJ1bgogZW5kCiAKIGRlZiBza2lwCi0gICAgcHV0cyAiU2tpcHBpbmcg
I3skYmVuY2htYXJrfSIKKyAgICBwdXRzICJTa2lwcGluZyAjeyRjb2xsZWN0aW9uTmFtZX0vI3sk
YmVuY2htYXJrfSIKIGVuZAogCiBjb2xsZWN0aW9uTmFtZXMgPSB7fQpAQCAtMTUyLDM4ICsxNzAs
MTM5IEBAICRvdXRwdXREaXIgPSAkb3V0cHV0RGlyLnJlYWxwYXRoCiAKIEFSR1YuZWFjaCB7CiAg
ICAgfCBjb2xsZWN0aW9uIHwKLSAgICAkY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24KLSAgICAkY29s
bGVjdGlvbk5hbWUgPSBGaWxlLmJhc2VuYW1lKGNvbGxlY3Rpb24pCisgICAgJGNvbGxlY3Rpb24g
PSBQYXRobmFtZS5uZXcoY29sbGVjdGlvbikKKyAgICBvdXRlckRpciA9ICRjb2xsZWN0aW9uLmRp
cm5hbWUKKyAgICBuYW1lID0gJGNvbGxlY3Rpb24uYmFzZW5hbWUKKyAgICBsYXN0TmFtZSA9IG5h
bWUKKyAgICB3aGlsZSBsYXN0TmFtZS50b19zID1+IC90ZXN0LworICAgICAgICBsYXN0TmFtZSA9
IG91dGVyRGlyLmJhc2VuYW1lCisgICAgICAgIG5hbWUgPSBsYXN0TmFtZSArIG5hbWUKKyAgICAg
ICAgb3V0ZXJEaXIgPSBvdXRlckRpci5kaXJuYW1lCisgICAgZW5kCisgICAgJGNvbGxlY3Rpb25O
YW1lID0gbmFtZS50b19zCiAgICAgdG9BZGQgPSAxCiAgICAgd2hpbGUgY29sbGVjdGlvbk5hbWVz
WyRjb2xsZWN0aW9uTmFtZV0KLSAgICAgICAgJGNvbGxlY3Rpb25OYW1lID0gRmlsZS5iYXNlbmFt
ZShjb2xsZWN0aW9uKSArICItI3t0b0FkZH0iCisgICAgICAgICRjb2xsZWN0aW9uTmFtZSA9IEZp
bGUuYmFzZW5hbWUobmFtZS50b19zKSArICItI3t0b0FkZH0iCiAgICAgICAgIHRvQWRkICs9IDEK
ICAgICBlbmQKICAgICBjb2xsZWN0aW9uTmFtZXNbJGNvbGxlY3Rpb25OYW1lXSA9IHRydWUKLSAg
ICBkaXIgPSAkb3V0cHV0RGlyICsgJGNvbGxlY3Rpb25OYW1lCi0gICAgRGlyLm1rZGlyKGRpcikg
dW5sZXNzIGRpci5kaXJlY3Rvcnk/Ci0gICAgRGlyLmNoZGlyKGNvbGxlY3Rpb24pIHsKLSAgICAg
ICAgRGlyLmZvcmVhY2goJy4nKSB7Ci0gICAgICAgICAgICB8IGJlbmNobWFyayB8Ci0gICAgICAg
ICAgICBuZXh0IHVubGVzcyBiZW5jaG1hcmsgPX4gL1wuanMkLwotICAgICAgICAgICAgbmV4dCB1
bmxlc3MgRmlsZVRlc3QuZmlsZT8gYmVuY2htYXJrCi0gICAgICAgICAgICAKLSAgICAgICAgICAg
ICRiZW5jaG1hcmsgPSBiZW5jaG1hcmsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZGlkUnVu
ID0gZmFsc2UKLSAgICAgICAgICAgIEZpbGUub3BlbihiZW5jaG1hcmspIHsKLSAgICAgICAgICAg
ICAgICB8IGlucCB8Ci0gICAgICAgICAgICAgICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGxpbmUg
PX4gL15cL1wvQC8KLSAgICAgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCi0gICAg
ICAgICAgICAgICAgICAgIGRpZFJ1biA9IHRydWUKLSAgICAgICAgICAgICAgICB9CisgICAgZGly
ID0gJG91dHB1dERpcgorICAgIG5hbWUuZWFjaF9maWxlbmFtZSB7CisgICAgICAgIHwgZmlsZW5h
bWUgfAorICAgICAgICBkaXIgPSBkaXIgKyBmaWxlbmFtZQorICAgICAgICBEaXIubWtkaXIoZGly
KSB1bmxlc3MgZGlyLmRpcmVjdG9yeT8KKyAgICB9CisKKyAgICBEaXIuZm9yZWFjaCgkY29sbGVj
dGlvbikgeworICAgICAgICB8IGJlbmNobWFyayB8CisgICAgICAgIG5leHQgdW5sZXNzIGJlbmNo
bWFyayA9fiAvXC5qcyQvCisgICAgICAgIG5leHQgdW5sZXNzICgkY29sbGVjdGlvbiArIGJlbmNo
bWFyaykuZmlsZT8KKyAgICAgICAgCisgICAgICAgICRiZW5jaG1hcmsgPSBiZW5jaG1hcmsKKyAg
ICAgICAgCisgICAgICAgIGRpZFJ1biA9IGZhbHNlCisgICAgICAgIEZpbGUub3BlbigkY29sbGVj
dGlvbiArIGJlbmNobWFyaykgeworICAgICAgICAgICAgfCBpbnAgfAorICAgICAgICAgICAgaW5w
LmVhY2hfbGluZSB7CisgICAgICAgICAgICAgICAgfCBsaW5lIHwKKyAgICAgICAgICAgICAgICBu
ZXh0IHVubGVzcyBsaW5lID1+IC9eXC9cL0AvCisgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0
X21hdGNoCisgICAgICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0UnVuIHVubGVzcyBkaWRSdW4KICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgZGVmYXVsdFJ1biB1bmxlc3MgZGlkUnVuCiAgICAgfQogfQog
CitkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsgImZh
aWxlZCIsICJhIikgeworICAgICAgICB8IG91dHAgfAorICAgICAgICBvdXRwLnB1dHMgcGxhbi5u
YW1lCisgICAgfQorICAgICRudW1GYWlsdXJlcyArPSAxCitlbmQKKworaWYgJHBhcmFsbGVsCisg
ICAgaWYgRU5WWyJKU0NfdGltZW91dCJdCisgICAgICAgICMgSW4gdGhlIHdvcnN0IGNhc2UsIHRo
ZSBwcm9jZXNzb3JzIGp1c3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KKyAgICAgICAgIyBJ
bmNyZWFzZSB0aGUgdGltZW91dCBwcm9wb3J0aW9uYWxseSB0byB0aGUgbnVtYmVyIG9mIHByb2Nl
c3NvcnMuCisgICAgICAgIEVOVlsiSlNDX3RpbWVvdXQiXSA9IChFTlZbIkpTQ190aW1lb3V0Il0u
dG9faSAqIG51bVByb2Nlc3NvcnMpLnRvX3MKKyAgICBlbmQKKyAgICAKKyAgICBydW5JbmRpY2Vz
ID0gW10KKyAgICAkcnVubGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IHBsYW4sIGlu
ZGV4IHwKKyAgICAgICAgcnVuSW5kaWNlcyA8PCBpbmRleAorICAgICAgICBwbGFuLmluZGV4ID0g
aW5kZXgKKyAgICB9CisgICAgCisgICAgcGFyYWxsZWxEaXIgPSAkb3V0cHV0RGlyICsgIi5wYXJh
bGxlbCIKKyAgICBEaXIubWtkaXIocGFyYWxsZWxEaXIpIHVubGVzcyBwYXJhbGxlbERpci5kaXJl
Y3Rvcnk/CisgICAgdG9EZWxldGUgPSBbXQorICAgIERpci5mb3JlYWNoKHBhcmFsbGVsRGlyKSB7
CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwor
ICAgICAgICAgICAgdG9EZWxldGUgPDwgZmlsZW5hbWUKKyAgICAgICAgZW5kCisgICAgfQorICAg
IAorICAgIHRvRGVsZXRlLmVhY2ggeworICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgRmls
ZS51bmxpbmsocGFyYWxsZWxEaXIgKyBmaWxlbmFtZSkKKyAgICB9CisgICAgCisgICAgJHJ1bmxp
c3QuZWFjaCB7CisgICAgICAgIHwgcGxhbiB8CisgICAgICAgIGZhaWxDb21tYW5kICA9ICJ7XG4i
CisgICAgICAgIGZhaWxDb21tYW5kICs9ICIgICAgZWNobyBGQUlMOiAje1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUocGxhbi5uYW1lKX1cbiIKKyAgICAgICAgZmFpbENvbW1hbmQgKz0gIiAgICBtdiB0
ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgkb3V0cHV0
RGlyICsgcGxhbi5uYW1lKX1cbiIKKyAgICAgICAgZmFpbENvbW1hbmQgKz0gIiAgICB0b3VjaCB0
ZXN0X2ZhaWxfI3twbGFuLmluZGV4fVxuIgorICAgICAgICBmYWlsQ29tbWFuZCArPSAifSIKKyAg
ICAgICAgcGxhbi53cml0ZVRlc3RTY3JpcHQocGFyYWxsZWxEaXIgKyAidGVzdF9zY3JpcHRfI3tw
bGFuLmluZGV4fSIsIGZhaWxDb21tYW5kKQorICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4ocGFy
YWxsZWxEaXIgKyAiTWFrZWZpbGUiLCAidyIpIHsKKyAgICAgICAgfCBvdXRwIHwKKyAgICAgICAg
b3V0cC5wdXRzKCJhbGw6ICIgKyBydW5JbmRpY2VzLm1hcHt8dnwgInRlc3RfZG9uZV8je3Z9In0u
am9pbignICcpKQorICAgICAgICBydW5JbmRpY2VzLmVhY2ggeworICAgICAgICAgICAgfCBpbmRl
eCB8CisgICAgICAgICAgICBwbGFuID0gJHJ1bmxpc3RbaW5kZXhdCisgICAgICAgICAgICBvdXRw
LnB1dHMgInRlc3RfZG9uZV8je2luZGV4fToiCisgICAgICAgICAgICBvdXRwLnB1dHMgIlx0c2gg
dGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiXHR0b3Vj
aCB0ZXN0X2RvbmVfI3tpbmRleH0iCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgRGlyLmNo
ZGlyKHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHN5c3RlbSgibWFrZSIsICItaiIsIG51bVByb2Nl
c3NvcnMudG9fcywgIi1zIiwgIi1mIiwgIk1ha2VmaWxlIikKKyAgICB9CisgICAgCisgICAgRGly
LmZvcmVhY2gocGFyYWxsZWxEaXIpIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIG5l
eHQgdW5sZXNzIGZpbGVuYW1lID1+IC90ZXN0X2ZhaWxfLworICAgICAgICBhcHBlbmRGYWlsdXJl
KCRydW5saXN0WyR+LnBvc3RfbWF0Y2gudG9faV0pCisgICAgfQorZWxzZQorICAgICRydW5saXN0
LmVhY2ggeworICAgICAgICB8IHBsYW4gfAorICAgICAgICBwcmludCAiI3twbGFuLm5hbWV9OiAi
CisgICAgICAgIAorICAgICAgICBEaXIuY2hkaXIocGxhbi5kaXJlY3RvcnkpIHsKKyAgICAgICAg
ICAgIGlmIHN5c3RlbSgqcGxhbi5hcmd1bWVudHMpCisgICAgICAgICAgICAgICAgcHV0cyAiT0su
IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHB1dHMgIkZBSUw6ICN7JD8uaW5z
cGVjdH0iCisgICAgICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gJG91dHB1dERpciArIHBsYW4ubmFtZQorICAgICAgICAgICAgICAgIGJl
Z2luCisgICAgICAgICAgICAgICAgICAgIHBsYW4ud3JpdGVUZXN0U2NyaXB0KGZpbGVuYW1lLCAi
ZXhpdCAxIikKKyAgICAgICAgICAgICAgICByZXNjdWUgPT4gZQorICAgICAgICAgICAgICAgICAg
ICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IGZhaWxlZCB0byBjcmVhdGUgcmVwcm8gZmlsZSBhdCAj
e2ZpbGVuYW1lfTogI3tlLmluc3BlY3R9IgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgZW5kCisgICAgICAgIH0KKyAgICB9CitlbmQKKwogcHV0cyAiRmFpbGVkICN7JG51bUZhaWx1
cmVzfSB0ZXN0cy4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210982</attachid>
            <date>2013-09-08 11:03:18 -0700</date>
            <delta_ts>2013-09-08 11:04:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11357</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTMwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDEzLTA5LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIHJ1biB0ZXN0cyBpbiBwYXJhbGxl
bCBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwOTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBSdW4gdGVzdHMgaW4gcGFyYWxsZWwgYnkgdXNpbmcgTWFrZWZpbGUgaGFj
a3MuIFRoaXMgbGV0cyBtYWtlIHRha2UgY2FyZSBvZiBhbGwgbG9hZAorICAgICAgICBiYWxhbmNp
bmcuIEl0J3MgYSByZWFsbHkgYXdlc29tZSBzcGVlZC11cCBmb3IgdGhlc2UgdGVzdHMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIEZUTCBkZWJ1ZyBidWlsZCBzdHJlc3MgdGVz
dCBydW4gdGltZSBmcm9tIDhtMThzIHRvIDJtMTFzLiBUaGUgCisgICAgICAgIG5vLUZUTCBkZWJ1
ZyBidWlsZCBzdHJlc3MgdGVzdCB0aW1lIGdvZXMgZnJvbSAxbTExcyB0byAxNnMuIFRoaXMgcGF0
Y2ggaXMgcHJldHR5CisgICAgICAgIG11Y2ggYXdlc29tZS4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTMtMDktMDggIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBydW4tanNjLXN0cmVzcy10ZXN0cyBzaG91bGQgYmUgc21h
cnQgZW5vdWdoIHRvIGNhbGwgSlNSZWdyZXNzICJyZWdyZXNzL3NjcmlwdC10ZXN0cyIgcmF0aGVy
IHRoYW4gInNjcmlwdC10ZXN0cyIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwko
cmV2aXNpb24gMTU1MzA1KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwko
d29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDMyIEBACiByZXF1aXJlICdnZXRvcHRsb25nJwog
cmVxdWlyZSAncGF0aG5hbWUnCiAKKyRoYXZlU2hlbGx3b3JkcyA9IGZhbHNlCisKIGJlZ2luCiAg
ICAgcmVxdWlyZSAnc2hlbGx3b3JkcycKKyAgICAkaGF2ZVNoZWxsd29yZHMgPSB0cnVlCiByZXNj
dWUgPT4gZQogICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogZGlkIG5vdCBmaW5kIHNoZWxsd29y
ZHM7IHNvbWUgZmVhdHVyZXMgd2lsbCBiZSBkaXNhYmxlZC4iCiAgICAgJHN0ZGVyci5wdXRzICJF
cnJvcjogI3tlLmluc3BlY3R9IgogZW5kCiAKK1BBUkFMTEVMX1JFVFJJRVMgPSAyMAorCitudW1Q
cm9jZXNzb3JzID0gYHN5c2N0bCAtbiBody5hdmFpbGNwdWAudG9faQorCiAkanNjUGF0aCA9IG5p
bAogJGVuYWJsZUZUTCA9IGZhbHNlCiAkY29sbGVjdGlvbnMgPSBbXQogJG91dHB1dERpciA9IFBh
dGhuYW1lLm5ldygicmVzdWx0cyIpCiskcGFyYWxsZWwgPSAoJGhhdmVTaGVsbHdvcmRzIGFuZCBu
dW1Qcm9jZXNzb3JzID4gMSkKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3Mt
dGVzdHMgLWogPHNoZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBh
dGg+IC4uLl0iCiAgICAgcHV0cwogICAgIHB1dHMgIi0tanNjICAgICAgICAgICAgKC1qKSAgIFBh
dGggdG8gSmF2YVNjcmlwdENvcmUuIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkLiIKICAgICBwdXRz
ICItLWZ0bC1qaXQgICAgICAgICAgICAgICBJbmRpY2F0ZSB0aGF0IHdlIGhhdmUgdGhlIEZUTCBK
SVQuIgorICAgIHB1dHMgIi0tW25vLV1wYXJhbGxlbCAgICAgICAgIFJ1biBpbiBwYXJhbGxlbCwg
b3Igbm90LiBEZWZhdWx0IGlzICN7JHBhcmFsbGVsfS4iCiAgICAgcHV0cyAiLS1vdXRwdXQtZGly
ICAgICAoLW8pICAgUGF0aCB3aGVyZSB0byBwdXQgcmVzdWx0cy4gRGVmYXVsdCBpcyAjeyRvdXRw
dXREaXJ9LiIKICAgICBwdXRzICItLWhlbHAgICAgICAgICAgICgtaCkgICBQcmludCB0aGlzIG1l
c3NhZ2UuIgogICAgIGV4aXQgMQpAQCAtNTEsNiArNjAsOCBAQCBlbmQKIEdldG9wdExvbmcubmV3
KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAg
ICAgWyctLWpzYycsICctaicsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAg
ICAgICAgICAgIFsnLS1mdGwtaml0JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgWyctLXBhcmFsbGVsJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgWyctLW5vLXBhcmFsbGVsJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAg
ICAgICAgICAgICAgWyctLW91dHB1dC1kaXInLCAnLW8nLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9B
UkdVTUVOVF0pLmVhY2ggewogICAgIHwgb3B0LCBhcmcgfAogICAgIGNhc2Ugb3B0CkBAIC02Miw2
ICs3MywxMCBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9wdExvCiAgICAg
ICAgICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoYXJnKQogICAgIHdoZW4gJy0tZnRsLWppdCcK
ICAgICAgICAgJGVuYWJsZUZUTCA9IHRydWUKKyAgICB3aGVuICctLXBhcmFsbGVsJworICAgICAg
ICAkcGFyYWxsZWwgPSB0cnVlCisgICAgd2hlbiAnLS1uby1wYXJhbGxlbCcKKyAgICAgICAgJHBh
cmFsbGVsID0gZmFsc2UKICAgICBlbmQKIH0KIApAQCAtNzQsMzIgKzg5LDM1IEBAICRudW1GYWls
dXJlcyA9IDAKIAogRUFHRVJfT1BUSU9OUyA9IFsiLS1lbmFibGVDb25jdXJyZW50SklUPWZhbHNl
IiwgIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hvbGRGb3JKSVRT
b29uPTEwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVz
aG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1p
emVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICIt
LXRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj0yMCJdCiAKLWRlZiBydW4oa2luZCwgKm9wdGlv
bnMpCi0gICAgbmFtZSA9ICIjeyRiZW5jaG1hcmt9LiN7a2luZH0iCi0gICAgcHJpbnQgIiN7JGNv
bGxlY3Rpb25OYW1lfS8je25hbWV9OiAiCi0gICAgYXJndW1lbnRzID0gWyRqc2NQYXRoLnRvX3Nd
ICsgb3B0aW9ucyArIFskYmVuY2htYXJrXQotICAgIGlmIHN5c3RlbSgqYXJndW1lbnRzKQotICAg
ICAgICBwdXRzICJPSy4iCi0gICAgZWxzZQotICAgICAgICBwdXRzICJGQUlMOiAjeyQ/Lmluc3Bl
Y3R9IgotICAgICAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJmYWlsZWQiLCAiYSIpIHsKKyRy
dW5saXN0ID0gW10KKworY2xhc3MgUGxhbgorICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDph
cmd1bWVudHMsIDpuYW1lCisgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgbmFtZSkKKyAgICAgICAgQGRpcmVjdG9y
eSA9IGRpcmVjdG9yeS5yZWFscGF0aAorICAgICAgICBAYXJndW1lbnRzID0gYXJndW1lbnRzCisg
ICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiB3cml0ZVRlc3RTY3Jp
cHQoZmlsZW5hbWUsIGZhaWxDb21tYW5kKQorICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3
IikgewogICAgICAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAiI3skY29s
bGVjdGlvbk5hbWV9LyN7bmFtZX0iCisgICAgICAgICAgICBvdXRwLnB1dHMgImVjaG8gUnVubmlu
ZyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSIKKyAgICAgICAgICAgIG91dHAucHV0
cygiKGNkICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAZGlyZWN0b3J5KX0gJiYgIiArCisgICAg
ICAgICAgICAgICAgICAgICAgQGFyZ3VtZW50cy5tYXB7fHZ8IFNoZWxsd29yZHMuc2hlbGxlc2Nh
cGUodil9LmpvaW4oJyAnKSArCisgICAgICAgICAgICAgICAgICAgICAgIikgfHwgI3tmYWlsQ29t
bWFuZH0iKQogICAgICAgICB9Ci0gICAgICAgICRudW1GYWlsdXJlcyArPSAxCi0gICAgICAgIGZp
bGVuYW1lID0gJG91dHB1dERpciArICRjb2xsZWN0aW9uTmFtZSArIG5hbWUKLSAgICAgICAgYmVn
aW4KLSAgICAgICAgICAgIEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7Ci0gICAgICAgICAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMoImNkICN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShEaXIucHdkKX0iKQotICAgICAgICAgICAgICAgIG91dHAucHV0cyhhcmd1bWVu
dHMubWFwe3x2fCBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHYpfS5qb2luKCcgJykpCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIHJlc2N1ZSA9PiBlCi0gICAgICAgICAgICAkc3RkZXJyLnB1dHMgIldh
cm5pbmc6IGZhaWxlZCB0byBjcmVhdGUgcmVwcm8gZmlsZSBhdCAje2ZpbGVuYW1lfTogI3tlLmlu
c3BlY3R9IgotICAgICAgICBlbmQKICAgICBlbmQKIGVuZAogCitkZWYgcnVuKGtpbmQsICpvcHRp
b25zKQorICAgICRydW5saXN0IDw8IFBsYW4ubmV3KCRjb2xsZWN0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFskanNjUGF0aC50b19zXSArIG9wdGlvbnMgKyBbJGJlbmNobWFya10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIiN7JGNvbGxlY3Rpb25OYW1lfS8jeyRiZW5jaG1hcmt9
LiN7a2luZH0iKQorZW5kCisKIGRlZiBydW5EZWZhdWx0CiAgICAgcnVuKCJkZWZhdWx0IikKIGVu
ZApAQCAtMTc0LDI4ICsxOTIsMTU3IEBAIEFSR1YuZWFjaCB7CiAgICAgICAgIGRpciA9IGRpciAr
IGZpbGVuYW1lCiAgICAgICAgIERpci5ta2RpcihkaXIpIHVubGVzcyBkaXIuZGlyZWN0b3J5Pwog
ICAgIH0KLSAgICBEaXIuY2hkaXIoJGNvbGxlY3Rpb24pIHsKLSAgICAgICAgRGlyLmZvcmVhY2go
Jy4nKSB7Ci0gICAgICAgICAgICB8IGJlbmNobWFyayB8Ci0gICAgICAgICAgICBuZXh0IHVubGVz
cyBiZW5jaG1hcmsgPX4gL1wuanMkLwotICAgICAgICAgICAgbmV4dCB1bmxlc3MgRmlsZVRlc3Qu
ZmlsZT8gYmVuY2htYXJrCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICRiZW5jaG1hcmsgPSBi
ZW5jaG1hcmsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZGlkUnVuID0gZmFsc2UKLSAgICAg
ICAgICAgIEZpbGUub3BlbihiZW5jaG1hcmspIHsKLSAgICAgICAgICAgICAgICB8IGlucCB8Ci0g
ICAgICAgICAgICAgICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgICAgICAgICAgICAgIHwgbGlu
ZSB8Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGxpbmUgPX4gL15cL1wvQC8KLSAg
ICAgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCi0gICAgICAgICAgICAgICAgICAg
IGRpZFJ1biA9IHRydWUKLSAgICAgICAgICAgICAgICB9CisKKyAgICBEaXIuZm9yZWFjaCgkY29s
bGVjdGlvbikgeworICAgICAgICB8IGJlbmNobWFyayB8CisgICAgICAgIG5leHQgdW5sZXNzIGJl
bmNobWFyayA9fiAvXC5qcyQvCisgICAgICAgIG5leHQgdW5sZXNzICgkY29sbGVjdGlvbiArIGJl
bmNobWFyaykuZmlsZT8KKyAgICAgICAgCisgICAgICAgICRiZW5jaG1hcmsgPSBiZW5jaG1hcmsK
KyAgICAgICAgCisgICAgICAgIGRpZFJ1biA9IGZhbHNlCisgICAgICAgIEZpbGUub3BlbigkY29s
bGVjdGlvbiArIGJlbmNobWFyaykgeworICAgICAgICAgICAgfCBpbnAgfAorICAgICAgICAgICAg
aW5wLmVhY2hfbGluZSB7CisgICAgICAgICAgICAgICAgfCBsaW5lIHwKKyAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyBsaW5lID1+IC9eXC9cL0AvCisgICAgICAgICAgICAgICAgZXZhbCAkfi5w
b3N0X21hdGNoCisgICAgICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0UnVuIHVubGVzcyBkaWRSdW4KICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZGVmYXVsdFJ1biB1bmxlc3MgZGlkUnVuCiAgICAgfQog
fQogCitkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsg
ImZhaWxlZCIsICJhIikgeworICAgICAgICB8IG91dHAgfAorICAgICAgICBvdXRwLnB1dHMgcGxh
bi5uYW1lCisgICAgfQorICAgIGZpbGVuYW1lID0gJG91dHB1dERpciArIHBsYW4ubmFtZQorICAg
IGJlZ2luCisgICAgICAgIHBsYW4ud3JpdGVUZXN0U2NyaXB0KGZpbGVuYW1lLCAiZXhpdCAxIikK
KyAgICByZXNjdWUgPT4gZQorICAgICAgICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IGZhaWxlZCB0
byBjcmVhdGUgcmVwcm8gZmlsZSBhdCAje2ZpbGVuYW1lfTogI3tlLmluc3BlY3R9IgorICAgIGVu
ZAorICAgICRudW1GYWlsdXJlcyArPSAxCitlbmQKKworaWYgJGVuYWJsZUZUTCBhbmQgRU5WWyJK
U0NfdGltZW91dCJdCisgICAgIyBDdXJyZW50bHksIHVzaW5nIHRoZSBGVEwgaXMgYSBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9uIHBhcnRpY3VsYXJseSBpbiByZWFsCisgICAgIyAoaS5lLiBub24tbG9v
cHkpIGJlbmNobWFya3MuIEFjY291bnQgZm9yIHRoaXMgaW4gdGhlIHRpbWVvdXQuCisgICAgRU5W
WyJKU0NfdGltZW91dCJdID0gKEVOVlsiSlNDX3RpbWVvdXQiXS50b19pICogMikudG9fcworZW5k
CisKK2lmICRwYXJhbGxlbAorICAgIGlmIEVOVlsiSlNDX3RpbWVvdXQiXQorICAgICAgICAjIElu
IHRoZSB3b3JzdCBjYXNlLCB0aGUgcHJvY2Vzc29ycyBqdXN0IGludGVyZmVyZSB3aXRoIGVhY2gg
b3RoZXIuCisgICAgICAgICMgSW5jcmVhc2UgdGhlIHRpbWVvdXQgcHJvcG9ydGlvbmFsbHkgdG8g
dGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLgorICAgICAgICBFTlZbIkpTQ190aW1lb3V0Il0gPSAo
RU5WWyJKU0NfdGltZW91dCJdLnRvX2kudG9fZiAqIE1hdGguc3FydChudW1Qcm9jZXNzb3JzKSku
dG9faS50b19zCisgICAgZW5kCisgICAgCisgICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVs
IHRlc3QgcnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCisgICAgIyBz
aW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0
byBoYXZlIHRvIGhhdmUKKyAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9z
b3BoaXNpbmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4KKyAgICAjCisgICAgIyBBcyBzdWNoLCB3
ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcyBjcmVh
dGVzIGEKKyAgICAjIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnBhcmFsbGVsIikgaW4g
d2hpY2ggd2UgY3JlYXRlIGEgZHVtbXkKKyAgICAjIE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFz
IGFuICdhbGwnIHJ1bGUgdGhhdCBkZXBlbmRzIG9uIGFsbCBvZiB0aGUgdGVzdHMuCisgICAgIyBU
aGF0IGlzLCBmb3IgZWFjaCB0ZXN0IHdlIGtub3cgd2Ugd2lsbCBydW4sIHRoZXJlIGlzIGEgcnVs
ZSBpbiB0aGUKKyAgICAjIE1ha2VmaWxlIGFuZCAnYWxsJyBkZXBlbmRzIG9uIGl0LiBSdW5uaW5n
ICdtYWtlIC1qIDx3aGF0ZXZlcj4nIG9uIHRoaXMKKyAgICAjIE1ha2VmaWxlIHJlc3VsdHMgaW4g
J21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgorICAgICMKKyAgICAjIC0gTG9hZCBi
YWxhbmNpbmcganVzdCB3b3Jrcy4gTW9zdCBzeXN0ZW1zIGhhdmUgYSBncmVhdCBsb2FkIGJhbGFu
Y2VyIGluCisgICAgIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3Qg
aW5zdGFsbCBhIHJlYWwgJ21ha2UnLgorICAgICMKKyAgICAjIC0gSW50ZXJydXB0aW9ucyBqdXN0
IHdvcmsuIEZvciBleGFtcGxlIEN0cmwtQyBoYW5kbGluZyBpbiAnbWFrZScgaXMKKyAgICAjICAg
ZXhhY3RseSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nl
c3Nlcy4KKyAgICAjCisgICAgIyBXZSB0aGVuIGRvIHNvbWUgdHJpY2tzIHRvIG1ha2UgZmFpbHVy
ZSBkZXRlY3Rpb24gd29yayBhbmQgdG8gbWFrZSB0aGlzCisgICAgIyB0b3RhbGx5IHNvdW5kLiBJ
ZiBhIHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KKyAg
ICAjIHN0b3AuIFdlIGFsc28gZG9uJ3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVz
Y2FwaW5nIG9mIHBhdGggbmFtZXMuCisgICAgIyBXZSBkbyBoYXZlIHN1Y2ggYSB0aGluZyBmb3Ig
c2hlbGwtZXNjYXBpbmcsIHRob3VnaC4gV2UgZml4IGJvdGggcHJvYmxlbXMKKyAgICAjIGJ5IGhh
dmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBp
biBhIHNoZWxsCisgICAgIyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNj
cmlwdCBwZXIgdGVzdC4gVGhlIHNjcmlwdCByZXNwb25kcworICAgICMgdG8gZmFpbHVyZSBieSBw
cmludGluZyBzb21ldGhpbmcgb24gdGhlIGNvbnNvbGUgYW5kIHRoZW4gdG91Y2hpbmcgYQorICAg
ICMgZmFpbHVyZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4g
VGhpcyBtYWtlcyAnbWFrZScKKyAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFuZCBj
b21wbGV0ZSBhbGwgdGhlIHRlc3RzIGFueXdheS4KKyAgICAjCisgICAgIyBJbiB0aGUgZW5kLCB0
aGlzIHNjcmlwdCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IK
KyAgICAjIGZpbGVzIGluIHRoZSAucGFyYWxsZWwgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hl
cyAvXnRlc3RfZmFpbF8vLCB3aGVyZQorICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8n
IGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAjIHdvdWxk
IGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBX
ZSdyZQorICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFzIGEgY29uY3VycmVu
dCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgorICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFp
bCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAorICAg
ICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCisgICAgCisgICAgcnVuSW5kaWNl
cyA9IFtdCisgICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBwbGFuLCBp
bmRleCB8CisgICAgICAgIHJ1bkluZGljZXMgPDwgaW5kZXgKKyAgICAgICAgcGxhbi5pbmRleCA9
IGluZGV4CisgICAgfQorICAgIAorICAgIHBhcmFsbGVsRGlyID0gJG91dHB1dERpciArICIucGFy
YWxsZWwiCisgICAgRGlyLm1rZGlyKHBhcmFsbGVsRGlyKSB1bmxlc3MgcGFyYWxsZWxEaXIuZGly
ZWN0b3J5PworICAgIHRvRGVsZXRlID0gW10KKyAgICBEaXIuZm9yZWFjaChwYXJhbGxlbERpcikg
eworICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgaWYgZmlsZW5hbWUgPX4gL150ZXN0Xy8K
KyAgICAgICAgICAgIHRvRGVsZXRlIDw8IGZpbGVuYW1lCisgICAgICAgIGVuZAorICAgIH0KKyAg
ICAKKyAgICB0b0RlbGV0ZS5lYWNoIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIEZp
bGUudW5saW5rKHBhcmFsbGVsRGlyICsgZmlsZW5hbWUpCisgICAgfQorICAgIAorICAgICRydW5s
aXN0LmVhY2ggeworICAgICAgICB8IHBsYW4gfAorICAgICAgICBmYWlsQ29tbWFuZCAgPSAie1xu
IgorICAgICAgICBmYWlsQ29tbWFuZCArPSAiICAgIGVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKHBsYW4ubmFtZSl9XG4iCisgICAgICAgIGZhaWxDb21tYW5kICs9ICIgICAgdG91
Y2ggdGVzdF9mYWlsXyN7cGxhbi5pbmRleH1cbiIKKyAgICAgICAgZmFpbENvbW1hbmQgKz0gIn0i
CisgICAgICAgIHBsYW4ud3JpdGVUZXN0U2NyaXB0KHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0
XyN7cGxhbi5pbmRleH0iLCBmYWlsQ29tbWFuZCkKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVu
KHBhcmFsbGVsRGlyICsgIk1ha2VmaWxlIiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgIG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2
fSJ9LmpvaW4oJyAnKSkKKyAgICAgICAgcnVuSW5kaWNlcy5lYWNoIHsKKyAgICAgICAgICAgIHwg
aW5kZXggfAorICAgICAgICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQorICAgICAgICAgICAg
b3V0cC5wdXRzICJ0ZXN0X2RvbmVfI3tpbmRleH06IgorICAgICAgICAgICAgb3V0cC5wdXRzICJc
dHNoIHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iCisgICAgICAgICAgICBvdXRwLnB1dHMgIlx0
dG91Y2ggdGVzdF9kb25lXyN7aW5kZXh9IgorICAgICAgICB9CisgICAgfQorICAgIAorICAgIERp
ci5jaGRpcihwYXJhbGxlbERpcikgeworICAgICAgICBzeXN0ZW0oIm1ha2UiLCAiLWoiLCBudW1Q
cm9jZXNzb3JzLnRvX3MsICItcyIsICItZiIsICJNYWtlZmlsZSIpCisgICAgfQorICAgIAorICAg
IERpci5mb3JlYWNoKHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAg
ICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVzdF9mYWlsXy8KKyAgICAgICAgYXBwZW5kRmFp
bHVyZSgkcnVubGlzdFskfi5wb3N0X21hdGNoLnRvX2ldKQorICAgIH0KK2Vsc2UKKyAgICAkcnVu
bGlzdC5lYWNoIHsKKyAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgcHJpbnQgIiN7cGxhbi5uYW1l
fTogIgorICAgICAgICAKKyAgICAgICAgRGlyLmNoZGlyKHBsYW4uZGlyZWN0b3J5KSB7CisgICAg
ICAgICAgICBpZiBzeXN0ZW0oKnBsYW4uYXJndW1lbnRzKQorICAgICAgICAgICAgICAgIHB1dHMg
Ik9LLiIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwdXRzICJGQUlMOiAjeyQ/
Lmluc3BlY3R9IgorICAgICAgICAgICAgICAgIGFwcGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgfQorZW5kCisKIHB1dHMgIkZhaWxlZCAjeyRudW1GYWls
dXJlc30gdGVzdHMuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210983</attachid>
            <date>2013-09-08 11:04:03 -0700</date>
            <delta_ts>2013-09-08 12:15:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11332</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTMwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDEzLTA5LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIHJ1biB0ZXN0cyBpbiBwYXJhbGxl
bCBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwOTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBSdW4gdGVzdHMgaW4gcGFyYWxsZWwgYnkgdXNpbmcgTWFrZWZpbGUgaGFj
a3MuIFRoaXMgbGV0cyBtYWtlIHRha2UgY2FyZSBvZiBhbGwgbG9hZAorICAgICAgICBiYWxhbmNp
bmcuIEl0J3MgYSByZWFsbHkgYXdlc29tZSBzcGVlZC11cCBmb3IgdGhlc2UgdGVzdHMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIEZUTCBkZWJ1ZyBidWlsZCBzdHJlc3MgdGVz
dCBydW4gdGltZSBmcm9tIDhtMThzIHRvIDJtMTFzLiBUaGUgCisgICAgICAgIG5vLUZUTCBkZWJ1
ZyBidWlsZCBzdHJlc3MgdGVzdCB0aW1lIGdvZXMgZnJvbSAxbTExcyB0byAxNnMuIFRoaXMgcGF0
Y2ggaXMgcHJldHR5CisgICAgICAgIG11Y2ggYXdlc29tZS4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTMtMDktMDggIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBydW4tanNjLXN0cmVzcy10ZXN0cyBzaG91bGQgYmUgc21h
cnQgZW5vdWdoIHRvIGNhbGwgSlNSZWdyZXNzICJyZWdyZXNzL3NjcmlwdC10ZXN0cyIgcmF0aGVy
IHRoYW4gInNjcmlwdC10ZXN0cyIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwko
cmV2aXNpb24gMTU1MzA1KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwko
d29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDMwIEBACiByZXF1aXJlICdnZXRvcHRsb25nJwog
cmVxdWlyZSAncGF0aG5hbWUnCiAKKyRoYXZlU2hlbGx3b3JkcyA9IGZhbHNlCisKIGJlZ2luCiAg
ICAgcmVxdWlyZSAnc2hlbGx3b3JkcycKKyAgICAkaGF2ZVNoZWxsd29yZHMgPSB0cnVlCiByZXNj
dWUgPT4gZQogICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogZGlkIG5vdCBmaW5kIHNoZWxsd29y
ZHM7IHNvbWUgZmVhdHVyZXMgd2lsbCBiZSBkaXNhYmxlZC4iCiAgICAgJHN0ZGVyci5wdXRzICJF
cnJvcjogI3tlLmluc3BlY3R9IgogZW5kCiAKK251bVByb2Nlc3NvcnMgPSBgc3lzY3RsIC1uIGh3
LmF2YWlsY3B1YC50b19pCisKICRqc2NQYXRoID0gbmlsCiAkZW5hYmxlRlRMID0gZmFsc2UKICRj
b2xsZWN0aW9ucyA9IFtdCiAkb3V0cHV0RGlyID0gUGF0aG5hbWUubmV3KCJyZXN1bHRzIikKKyRw
YXJhbGxlbCA9ICgkaGF2ZVNoZWxsd29yZHMgYW5kIG51bVByb2Nlc3NvcnMgPiAxKQogCiBkZWYg
dXNhZ2UKICAgICBwdXRzICJydW4tanNjLXN0cmVzcy10ZXN0cyAtaiA8c2hlbGwgcGF0aD4gPGNv
bGxlY3Rpb25zIHBhdGg+IFs8Y29sbGVjdGlvbnMgcGF0aD4gLi4uXSIKICAgICBwdXRzCiAgICAg
cHV0cyAiLS1qc2MgICAgICAgICAgICAoLWopICAgUGF0aCB0byBKYXZhU2NyaXB0Q29yZS4gVGhp
cyBvcHRpb24gaXMgcmVxdWlyZWQuIgogICAgIHB1dHMgIi0tZnRsLWppdCAgICAgICAgICAgICAg
IEluZGljYXRlIHRoYXQgd2UgaGF2ZSB0aGUgRlRMIEpJVC4iCisgICAgcHV0cyAiLS1bbm8tXXBh
cmFsbGVsICAgICAgICAgUnVuIGluIHBhcmFsbGVsLCBvciBub3QuIERlZmF1bHQgaXMgI3skcGFy
YWxsZWx9LiIKICAgICBwdXRzICItLW91dHB1dC1kaXIgICAgICgtbykgICBQYXRoIHdoZXJlIHRv
IHB1dCByZXN1bHRzLiBEZWZhdWx0IGlzICN7JG91dHB1dERpcn0uIgogICAgIHB1dHMgIi0taGVs
cCAgICAgICAgICAgKC1oKSAgIFByaW50IHRoaXMgbWVzc2FnZS4iCiAgICAgZXhpdCAxCkBAIC01
MSw2ICs1OCw4IEBAIGVuZAogR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRM
b25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tanNjJywgJy1qJywgR2V0b3B0
TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLWZ0bC1qaXQnLCBH
ZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tcGFyYWxsZWwnLCBH
ZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tbm8tcGFyYWxsZWwn
LCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tb3V0cHV0LWRp
cicsICctbycsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSkuZWFjaCB7CiAgICAgfCBv
cHQsIGFyZyB8CiAgICAgY2FzZSBvcHQKQEAgLTYyLDYgKzcxLDEwIEBAIEdldG9wdExvbmcubmV3
KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG8KICAgICAgICAgJG91dHB1dERpciA9IFBhdGhuYW1l
Lm5ldyhhcmcpCiAgICAgd2hlbiAnLS1mdGwtaml0JwogICAgICAgICAkZW5hYmxlRlRMID0gdHJ1
ZQorICAgIHdoZW4gJy0tcGFyYWxsZWwnCisgICAgICAgICRwYXJhbGxlbCA9IHRydWUKKyAgICB3
aGVuICctLW5vLXBhcmFsbGVsJworICAgICAgICAkcGFyYWxsZWwgPSBmYWxzZQogICAgIGVuZAog
fQogCkBAIC03NCwzMiArODcsMzUgQEAgJG51bUZhaWx1cmVzID0gMAogCiBFQUdFUl9PUFRJT05T
ID0gWyItLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiLCAiLS10aHJlc2hvbGRGb3JKSVRBZnRl
cldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JP
cHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRG
b3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVT
b29uPTIwIl0KIAotZGVmIHJ1bihraW5kLCAqb3B0aW9ucykKLSAgICBuYW1lID0gIiN7JGJlbmNo
bWFya30uI3traW5kfSIKLSAgICBwcmludCAiI3skY29sbGVjdGlvbk5hbWV9LyN7bmFtZX06ICIK
LSAgICBhcmd1bWVudHMgPSBbJGpzY1BhdGgudG9fc10gKyBvcHRpb25zICsgWyRiZW5jaG1hcmtd
Ci0gICAgaWYgc3lzdGVtKCphcmd1bWVudHMpCi0gICAgICAgIHB1dHMgIk9LLiIKLSAgICBlbHNl
Ci0gICAgICAgIHB1dHMgIkZBSUw6ICN7JD8uaW5zcGVjdH0iCi0gICAgICAgIEZpbGUub3Blbigk
b3V0cHV0RGlyICsgImZhaWxlZCIsICJhIikgeworJHJ1bmxpc3QgPSBbXQorCitjbGFzcyBQbGFu
CisgICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50cywgOm5hbWUKKyAgICBhdHRy
X2FjY2Vzc29yIDppbmRleAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJn
dW1lbnRzLCBuYW1lKQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnJlYWxwYXRoCisg
ICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHMKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAg
ZW5kCisgICAgCisgICAgZGVmIHdyaXRlVGVzdFNjcmlwdChmaWxlbmFtZSwgZmFpbENvbW1hbmQp
CisgICAgICAgIEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7CiAgICAgICAgICAgICB8IG91dHAg
fAotICAgICAgICAgICAgb3V0cC5wdXRzICIjeyRjb2xsZWN0aW9uTmFtZX0vI3tuYW1lfSIKKyAg
ICAgICAgICAgIG91dHAucHV0cyAiZWNobyBSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZShAbmFtZSl9IgorICAgICAgICAgICAgb3V0cC5wdXRzKCIoY2QgI3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKEBkaXJlY3RvcnkpfSAmJiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBAYXJndW1l
bnRzLm1hcHt8dnwgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2KX0uam9pbignICcpICsKKyAgICAg
ICAgICAgICAgICAgICAgICAiKSB8fCAje2ZhaWxDb21tYW5kfSIpCiAgICAgICAgIH0KLSAgICAg
ICAgJG51bUZhaWx1cmVzICs9IDEKLSAgICAgICAgZmlsZW5hbWUgPSAkb3V0cHV0RGlyICsgJGNv
bGxlY3Rpb25OYW1lICsgbmFtZQotICAgICAgICBiZWdpbgotICAgICAgICAgICAgRmlsZS5vcGVu
KGZpbGVuYW1lLCAidyIpIHsKLSAgICAgICAgICAgICAgICB8IG91dHAgfAotICAgICAgICAgICAg
ICAgIG91dHAucHV0cygiY2QgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKERpci5wd2QpfSIpCi0g
ICAgICAgICAgICAgICAgb3V0cC5wdXRzKGFyZ3VtZW50cy5tYXB7fHZ8IFNoZWxsd29yZHMuc2hl
bGxlc2NhcGUodil9LmpvaW4oJyAnKSkKLSAgICAgICAgICAgIH0KLSAgICAgICAgcmVzY3VlID0+
IGUKLSAgICAgICAgICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogZmFpbGVkIHRvIGNyZWF0ZSBy
ZXBybyBmaWxlIGF0ICN7ZmlsZW5hbWV9OiAje2UuaW5zcGVjdH0iCi0gICAgICAgIGVuZAogICAg
IGVuZAogZW5kCiAKK2RlZiBydW4oa2luZCwgKm9wdGlvbnMpCisgICAgJHJ1bmxpc3QgPDwgUGxh
bi5uZXcoJGNvbGxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyRqc2NQYXRoLnRv
X3NdICsgb3B0aW9ucyArIFskYmVuY2htYXJrXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAi
I3skY29sbGVjdGlvbk5hbWV9LyN7JGJlbmNobWFya30uI3traW5kfSIpCitlbmQKKwogZGVmIHJ1
bkRlZmF1bHQKICAgICBydW4oImRlZmF1bHQiKQogZW5kCkBAIC0xNzQsMjggKzE5MCwxNTcgQEAg
QVJHVi5lYWNoIHsKICAgICAgICAgZGlyID0gZGlyICsgZmlsZW5hbWUKICAgICAgICAgRGlyLm1r
ZGlyKGRpcikgdW5sZXNzIGRpci5kaXJlY3Rvcnk/CiAgICAgfQotICAgIERpci5jaGRpcigkY29s
bGVjdGlvbikgewotICAgICAgICBEaXIuZm9yZWFjaCgnLicpIHsKLSAgICAgICAgICAgIHwgYmVu
Y2htYXJrIHwKLSAgICAgICAgICAgIG5leHQgdW5sZXNzIGJlbmNobWFyayA9fiAvXC5qcyQvCi0g
ICAgICAgICAgICBuZXh0IHVubGVzcyBGaWxlVGVzdC5maWxlPyBiZW5jaG1hcmsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgJGJlbmNobWFyayA9IGJlbmNobWFyawotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBkaWRSdW4gPSBmYWxzZQotICAgICAgICAgICAgRmlsZS5vcGVuKGJlbmNobWFy
aykgewotICAgICAgICAgICAgICAgIHwgaW5wIHwKLSAgICAgICAgICAgICAgICBpbnAuZWFjaF9s
aW5lIHsKLSAgICAgICAgICAgICAgICAgICAgfCBsaW5lIHwKLSAgICAgICAgICAgICAgICAgICAg
bmV4dCB1bmxlc3MgbGluZSA9fiAvXlwvXC9ALwotICAgICAgICAgICAgICAgICAgICBldmFsICR+
LnBvc3RfbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQotICAgICAgICAg
ICAgICAgIH0KKworICAgIERpci5mb3JlYWNoKCRjb2xsZWN0aW9uKSB7CisgICAgICAgIHwgYmVu
Y2htYXJrIHwKKyAgICAgICAgbmV4dCB1bmxlc3MgYmVuY2htYXJrID1+IC9cLmpzJC8KKyAgICAg
ICAgbmV4dCB1bmxlc3MgKCRjb2xsZWN0aW9uICsgYmVuY2htYXJrKS5maWxlPworICAgICAgICAK
KyAgICAgICAgJGJlbmNobWFyayA9IGJlbmNobWFyaworICAgICAgICAKKyAgICAgICAgZGlkUnVu
ID0gZmFsc2UKKyAgICAgICAgRmlsZS5vcGVuKCRjb2xsZWN0aW9uICsgYmVuY2htYXJrKSB7Cisg
ICAgICAgICAgICB8IGlucCB8CisgICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKKyAgICAgICAg
ICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGxpbmUgPX4gL15c
L1wvQC8KKyAgICAgICAgICAgICAgICBldmFsICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAg
ICBkaWRSdW4gPSB0cnVlCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGRlZmF1bHRSdW4gdW5sZXNzIGRpZFJ1bgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBk
ZWZhdWx0UnVuIHVubGVzcyBkaWRSdW4KICAgICB9CiB9CiAKK2RlZiBhcHBlbmRGYWlsdXJlKHBs
YW4pCisgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFpbGVkIiwgImEiKSB7CisgICAgICAg
IHwgb3V0cCB8CisgICAgICAgIG91dHAucHV0cyBwbGFuLm5hbWUKKyAgICB9CisgICAgZmlsZW5h
bWUgPSAkb3V0cHV0RGlyICsgcGxhbi5uYW1lCisgICAgYmVnaW4KKyAgICAgICAgcGxhbi53cml0
ZVRlc3RTY3JpcHQoZmlsZW5hbWUsICJleGl0IDEiKQorICAgIHJlc2N1ZSA9PiBlCisgICAgICAg
ICRzdGRlcnIucHV0cyAiV2FybmluZzogZmFpbGVkIHRvIGNyZWF0ZSByZXBybyBmaWxlIGF0ICN7
ZmlsZW5hbWV9OiAje2UuaW5zcGVjdH0iCisgICAgZW5kCisgICAgJG51bUZhaWx1cmVzICs9IDEK
K2VuZAorCitpZiAkZW5hYmxlRlRMIGFuZCBFTlZbIkpTQ190aW1lb3V0Il0KKyAgICAjIEN1cnJl
bnRseSwgdXNpbmcgdGhlIEZUTCBpcyBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gcGFydGljdWxh
cmx5IGluIHJlYWwKKyAgICAjIChpLmUuIG5vbi1sb29weSkgYmVuY2htYXJrcy4gQWNjb3VudCBm
b3IgdGhpcyBpbiB0aGUgdGltZW91dC4KKyAgICBFTlZbIkpTQ190aW1lb3V0Il0gPSAoRU5WWyJK
U0NfdGltZW91dCJdLnRvX2kgKiAyKS50b19zCitlbmQKKworaWYgJHBhcmFsbGVsCisgICAgaWYg
RU5WWyJKU0NfdGltZW91dCJdCisgICAgICAgICMgSW4gdGhlIHdvcnN0IGNhc2UsIHRoZSBwcm9j
ZXNzb3JzIGp1c3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KKyAgICAgICAgIyBJbmNyZWFz
ZSB0aGUgdGltZW91dCBwcm9wb3J0aW9uYWxseSB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMu
CisgICAgICAgIEVOVlsiSlNDX3RpbWVvdXQiXSA9IChFTlZbIkpTQ190aW1lb3V0Il0udG9faS50
b19mICogTWF0aC5zcXJ0KG51bVByb2Nlc3NvcnMpKS50b19pLnRvX3MKKyAgICBlbmQKKyAgICAK
KyAgICAjIFRoZSBnb2FscyBvZiBvdXIgcGFyYWxsZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmls
aXR5IGFuZCBzaW1wbGljaXR5LiBUaGUKKyAgICAjIHNpbXBsaWNpdHkgcGFydCBpcyBwYXJ0aWN1
bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZQorICAgICMgYSBm
dWxsLXRpbWUgY29udHJpYnV0b3IganVzdCBwaGlsb3NvcGhpc2luZyBhYm91dCBwYXJhbGxlbCB0
ZXN0aW5nLgorICAgICMKKyAgICAjIEFzIHN1Y2gsIHdlIGp1c3QgcGFzcyBvZmYgYWxsIG9mIHRo
ZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzIGNyZWF0ZXMgYQorICAgICMgZHVtbXkgZGlyZWN0
b3J5ICgiJG91dHB1dERpci8ucGFyYWxsZWwiKSBpbiB3aGljaCB3ZSBjcmVhdGUgYSBkdW1teQor
ICAgICMgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBoYXMgYW4gJ2FsbCcgcnVsZSB0aGF0IGRlcGVu
ZHMgb24gYWxsIG9mIHRoZSB0ZXN0cy4KKyAgICAjIFRoYXQgaXMsIGZvciBlYWNoIHRlc3Qgd2Ug
a25vdyB3ZSB3aWxsIHJ1biwgdGhlcmUgaXMgYSBydWxlIGluIHRoZQorICAgICMgTWFrZWZpbGUg
YW5kICdhbGwnIGRlcGVuZHMgb24gaXQuIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24g
dGhpcworICAgICMgTWFrZWZpbGUgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBo
YXJkIHdvcms6CisgICAgIworICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0
IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAgICAjICAgJ21ha2UnLiBJ
ZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCisg
ICAgIworICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1D
IGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3Qg
aGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUgcHJvY2Vzc2VzLgorICAgICMKKyAgICAjIFdlIHRo
ZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBmYWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBt
YWtlIHRoaXMKKyAgICAjIHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qg
d2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bworICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBo
YXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KKyAg
ICAjIFdlIGRvIGhhdmUgc3VjaCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBX
ZSBmaXggYm90aCBwcm9ibGVtcworICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3Ig
ZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKKyAgICAjIHNjcmlwdCBv
biB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0
IHJlc3BvbmRzCisgICAgIyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUg
Y29uc29sZSBhbmQgdGhlbiB0b3VjaGluZyBhCisgICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQg
dGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJworICAgICMg
Y29udGludWUgcGFzdCB0aGF0IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55
d2F5LgorICAgICMKKyAgICAjIEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBv
ZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNoaW5nIGZvcgorICAgICMgZmlsZXMgaW4gdGhlIC5wYXJh
bGxlbCBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJlCisg
ICAgIyB0aGUgdGhpbmcgYWZ0ZXIgdGhlICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3Nl
IGFyZSB0aGUgZmlsZXMgdGhhdAorICAgICMgd291bGQgYmUgY3JlYXRlZCBieSB0aGUgdGVzdCBz
Y3JpcHRzIGlmIHRoZXkgZGV0ZWN0IGZhaWx1cmUuIFdlJ3JlCisgICAgIyBiYXNpY2FsbHkgdXNp
bmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVy
ZXMuCisgICAgIyBFdmVuIGlmIHR3byB0ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNl
IHRoZXkncmUgdG91Y2hpbmcgZGlmZmVyZW50CisgICAgIyBmaWxlcyB3ZSB3b24ndCBtaXNzIGFu
eSBmYWlsdXJlcy4KKyAgICAKKyAgICBydW5JbmRpY2VzID0gW10KKyAgICAkcnVubGlzdC5lYWNo
X3dpdGhfaW5kZXggeworICAgICAgICB8IHBsYW4sIGluZGV4IHwKKyAgICAgICAgcnVuSW5kaWNl
cyA8PCBpbmRleAorICAgICAgICBwbGFuLmluZGV4ID0gaW5kZXgKKyAgICB9CisgICAgCisgICAg
cGFyYWxsZWxEaXIgPSAkb3V0cHV0RGlyICsgIi5wYXJhbGxlbCIKKyAgICBEaXIubWtkaXIocGFy
YWxsZWxEaXIpIHVubGVzcyBwYXJhbGxlbERpci5kaXJlY3Rvcnk/CisgICAgdG9EZWxldGUgPSBb
XQorICAgIERpci5mb3JlYWNoKHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAor
ICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgdG9EZWxldGUgPDwg
ZmlsZW5hbWUKKyAgICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHRvRGVsZXRlLmVhY2ggewor
ICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgRmlsZS51bmxpbmsocGFyYWxsZWxEaXIgKyBm
aWxlbmFtZSkKKyAgICB9CisgICAgCisgICAgJHJ1bmxpc3QuZWFjaCB7CisgICAgICAgIHwgcGxh
biB8CisgICAgICAgIGZhaWxDb21tYW5kICA9ICJ7XG4iCisgICAgICAgIGZhaWxDb21tYW5kICs9
ICIgICAgZWNobyBGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUocGxhbi5uYW1lKX1cbiIK
KyAgICAgICAgZmFpbENvbW1hbmQgKz0gIiAgICB0b3VjaCB0ZXN0X2ZhaWxfI3twbGFuLmluZGV4
fVxuIgorICAgICAgICBmYWlsQ29tbWFuZCArPSAifSIKKyAgICAgICAgcGxhbi53cml0ZVRlc3RT
Y3JpcHQocGFyYWxsZWxEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIsIGZhaWxDb21t
YW5kKQorICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4ocGFyYWxsZWxEaXIgKyAiTWFrZWZpbGUi
LCAidyIpIHsKKyAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICIgKyBy
dW5JbmRpY2VzLm1hcHt8dnwgInRlc3RfZG9uZV8je3Z9In0uam9pbignICcpKQorICAgICAgICBy
dW5JbmRpY2VzLmVhY2ggeworICAgICAgICAgICAgfCBpbmRleCB8CisgICAgICAgICAgICBwbGFu
ID0gJHJ1bmxpc3RbaW5kZXhdCisgICAgICAgICAgICBvdXRwLnB1dHMgInRlc3RfZG9uZV8je2lu
ZGV4fToiCisgICAgICAgICAgICBvdXRwLnB1dHMgIlx0c2ggdGVzdF9zY3JpcHRfI3twbGFuLmlu
ZGV4fSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiXHR0b3VjaCB0ZXN0X2RvbmVfI3tpbmRleH0i
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgRGlyLmNoZGlyKHBhcmFsbGVsRGlyKSB7Cisg
ICAgICAgIHN5c3RlbSgibWFrZSIsICItaiIsIG51bVByb2Nlc3NvcnMudG9fcywgIi1zIiwgIi1m
IiwgIk1ha2VmaWxlIikKKyAgICB9CisgICAgCisgICAgRGlyLmZvcmVhY2gocGFyYWxsZWxEaXIp
IHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+
IC90ZXN0X2ZhaWxfLworICAgICAgICBhcHBlbmRGYWlsdXJlKCRydW5saXN0WyR+LnBvc3RfbWF0
Y2gudG9faV0pCisgICAgfQorZWxzZQorICAgICRydW5saXN0LmVhY2ggeworICAgICAgICB8IHBs
YW4gfAorICAgICAgICBwcmludCAiI3twbGFuLm5hbWV9OiAiCisgICAgICAgIAorICAgICAgICBE
aXIuY2hkaXIocGxhbi5kaXJlY3RvcnkpIHsKKyAgICAgICAgICAgIGlmIHN5c3RlbSgqcGxhbi5h
cmd1bWVudHMpCisgICAgICAgICAgICAgICAgcHV0cyAiT0suIgorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHB1dHMgIkZBSUw6ICN7JD8uaW5zcGVjdH0iCisgICAgICAgICAgICAg
ICAgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICB9
CitlbmQKKwogcHV0cyAiRmFpbGVkICN7JG51bUZhaWx1cmVzfSB0ZXN0cy4iCg==
</data>
<flag name="review"
          id="233022"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>