<?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>25710</bug_id>
          
          <creation_ts>2009-05-11 17:51:14 -0700</creation_ts>
          <short_desc>HTML5 Database stops executing transactions if the URL hash changes while a transaction is open and an XHR is in progress.</short_desc>
          <delta_ts>2009-06-05 07:00:36 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Grieve">agrieve</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benm</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120753</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Grieve">agrieve</who>
    <bug_when>2009-05-11 17:51:14 -0700</bug_when>
    <thetext>Refer to attached test case to reproduce the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120754</commentid>
    <comment_count>1</comment_count>
      <attachid>30211</attachid>
    <who name="Andrew Grieve">agrieve</who>
    <bug_when>2009-05-11 17:52:09 -0700</bug_when>
    <thetext>Created attachment 30211
Test harness for reproducing the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123114</commentid>
    <comment_count>2</comment_count>
      <attachid>30666</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-05-26 03:18:05 -0700</bug_when>
    <thetext>Created attachment 30666
Patch to not stop databases when navigating the history to the same document with a fragment

This patch adds code to not stop the databases if we are navigating the history to a hash fragment on the same document and includes a layout test to verify. The test harness attached to this bug passes with this patch applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123133</commentid>
    <comment_count>3</comment_count>
      <attachid>30666</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-05-26 08:26:13 -0700</bug_when>
    <thetext>Comment on attachment 30666
Patch to not stop databases when navigating the history to the same document with a fragment

The layout test needs a little tweaking, will repost shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123286</commentid>
    <comment_count>4</comment_count>
      <attachid>30708</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-05-27 07:40:52 -0700</bug_when>
    <thetext>Created attachment 30708
Patch to not stop the databases if the navigation is to a hash fragment on the same document.

New patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123797</commentid>
    <comment_count>5</comment_count>
      <attachid>30708</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-01 00:38:36 -0700</bug_when>
    <thetext>Comment on attachment 30708
Patch to not stop the databases if the navigation is to a hash fragment on the same document.

This change looks OK, but I&apos;m disappointed about the way it uses state in the frame loader to make stopLoading not stop the databases. This seems a bit roundabout, making the already-fragile FrameLoader worse. I think that adding an argument to stopLoading would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123869</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-01 12:23:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 30708 [review])
&gt; This change looks OK, but I&apos;m disappointed about the way it uses state in the
&gt; frame loader to make stopLoading not stop the databases. This seems a bit
&gt; roundabout, making the already-fragile FrameLoader worse. I think that adding
&gt; an argument to stopLoading would be better.
&gt; 

OK, a new patch is one the way.

Cheers, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123871</commentid>
    <comment_count>7</comment_count>
      <attachid>30839</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-01 12:24:58 -0700</bug_when>
    <thetext>Created attachment 30839
New patch with argument rather than member variable.

New patch with an argument to the function rather than a member variable tracking state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123873</commentid>
    <comment_count>8</comment_count>
      <attachid>30840</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-01 12:34:45 -0700</bug_when>
    <thetext>Created attachment 30840
Replaces a couple of tabs with spaces in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123885</commentid>
    <comment_count>9</comment_count>
      <attachid>30840</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-01 15:36:15 -0700</bug_when>
    <thetext>Comment on attachment 30840
Replaces a couple of tabs with spaces in previous patch.

&gt; +        void stopLoading(DatabasePolicy databasePolicy = DatabasePolicyStop);

Can just say DatabasePolicy = DatabasePolicyStop -- no need for an argument name.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123952</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-02 00:43:22 -0700</bug_when>
    <thetext>Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123955</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-02 00:57:13 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/storage/hash-change-with-xhr-expected.txt
Adding         LayoutTests/storage/hash-change-with-xhr.html
Sending        WebCore/ChangeLog
Sending        WebCore/loader/DocumentLoader.cpp
Sending        WebCore/loader/DocumentLoader.h
Sending        WebCore/loader/FrameLoader.cpp
Sending        WebCore/loader/FrameLoader.h
Sending        WebCore/loader/FrameLoaderTypes.h
Sending        WebCore/page/Page.cpp
Transmitting file data ..........
Committed revision 44351.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123957</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-02 01:04:21 -0700</bug_when>
    <thetext>Patch applies but does not compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123958</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-02 01:05:03 -0700</bug_when>
    <thetext>Will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123971</commentid>
    <comment_count>14</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-02 04:17:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Patch applies but does not compile.
&gt; 

Ah, sorry. It was fine on Windows but needed to change the WebCore exports file on Mac to reflect the new method signatures. Fixed with the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123972</commentid>
    <comment_count>15</comment_count>
      <attachid>30862</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-02 04:18:43 -0700</bug_when>
    <thetext>Created attachment 30862
Updates WebCore.base.exp to fix build bustage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123974</commentid>
    <comment_count>16</comment_count>
      <attachid>30864</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-02 04:37:00 -0700</bug_when>
    <thetext>Created attachment 30864
Fix build bustage.

Updates the WebCore exports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124305</commentid>
    <comment_count>17</comment_count>
      <attachid>30864</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-04 07:35:40 -0700</bug_when>
    <thetext>Comment on attachment 30864
Fix build bustage.

Based on Darin&apos;s earlier review, this look good for landing

+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::stopLoading):
+        * loader/DocumentLoader.h:
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::stopLoading):
+        (WebCore::FrameLoader::stopAllLoaders):
+        * loader/FrameLoader.h:
+        * loader/FrameLoaderTypes.h:
+        (WebCore::):
+        * page/Page.cpp:
+        (WebCore::Page::goToItem):
+        * WebCore.base.exp:

We much prefer detailed per-function comments in ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124510</commentid>
    <comment_count>18</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-05 07:00:36 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/storage/hash-change-with-xhr-expected.txt
	A	LayoutTests/storage/hash-change-with-xhr.html
	M	WebCore/ChangeLog
	M	WebCore/WebCore.base.exp
	M	WebCore/loader/DocumentLoader.cpp
	M	WebCore/loader/DocumentLoader.h
	M	WebCore/loader/FrameLoader.cpp
	M	WebCore/loader/FrameLoader.h
	M	WebCore/loader/FrameLoaderTypes.h
	M	WebCore/page/Page.cpp
Committed r44468</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>30211</attachid>
            <date>2009-05-11 17:52:09 -0700</date>
            <delta_ts>2009-05-11 17:52:09 -0700</delta_ts>
            <desc>Test harness for reproducing the bug.</desc>
            <filename>html5dbbug.html</filename>
            <type>text/html</type>
            <size>4489</size>
            <attacher name="Andrew Grieve">agrieve</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+SFRNTCA1IERhdGFiYXNlIEJ1ZzwvdGl0bGU+CjwvaGVhZD4K
PGJvZHk+CjxoMT5IVE1MIDUgRGF0YWJhc2UgQnVnPC9oMT4KPHByZT4KVGhpcyBidWcgY2F1c2Vz
IHRoZSBIVE1MNSBkYXRhYmFzZSB0byBzdG9wIHdvcmtpbmcgYW5kIGlzIG9mdGVuIGV4cG9zZWQg
YnkgR21haWwuCgpJIG5vdGljZWQgdGhlIGJ1ZyBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvLiAg
SSBhbSBpbiB0aGUgbWlkc3Qgb2YgbG9hZGluZwphIHZpZXcsIHdoaWNoIGlzIGZldGNoaW5nIGRh
dGEgZnJvbSB0aGUgc2VydmVyIHdpdGggeGhyIHJlcXVlc3RzIGFuZCB3cml0aW5nCnJlc3VsdHMg
dG8gdGhlIGRhdGFiYXNlIHdoZW4gdGhlIHJlc3BvbnNlIGFycml2ZXMuIEkgdGhlbiBoaXQgdGhl
IGJyb3dzZXIKYmFjayBidXR0b24gdG8gZ28gYmFjayB0byB0aGUgcHJldmlvdXMgdmlldyAoYmVj
YXVzZSBpIGFtIGltcGF0aWVudCkgYW5kCmFueSBmdXJ0aGVyIGNhbGxzIHRvIGRiLnRyYW5zYWN0
aW9uKCkgbm8gbG9uZ2VyIHRyaWdnZXIgdHJhbnNhY3Rpb24KY2FsbGJhY2tzLCBkYXRhIGhhbmRs
ZXJzLCBub3IgZXJyb3IgaGFuZGxlcnMuCgpUaGUgYnVnIGhlcmUgc2VlbXMgdG8gYmUgdGhhdCB0
aGUgc3RvcERhdGFiYXNlcyBjYWxsIGlzIHRvbyBhZ2dyZXNzaXZlLCBpdApnZXRzIGludm9rZWQg
ZXZlbiB3aGVuIHdlIGp1c3QgY2hhbmdlIHRoZSBoYXNoIG9mIHRoZSB1cmwuCgpPbiBhIGJyb3dz
ZXIgcmVmcmVzaCwgdGhlIGRhdGFiYXNlIGlzIHJlc3BvbnNpdmUgYWdhaW4uCgpJIGhhdmUgd3Jp
dHRlbiBzb21lIHNpbXBsZSBqYXZhc2NyaXB0IGNvZGUgdGhhdCBjb25zaXN0ZW50bHkgcmVwcm9k
dWNlcyB0aGlzIGJ1Zy4KPC9wcmU+Cgo8YnV0dG9uIG9uY2xpY2s9InJ1blRlc3QoKSI+VGVzdCBm
b3IgYnVnPC9idXR0b24+CjxidXR0b24gb25jbGljaz0ic3RvcFRlc3QoJ1Rlc3QgQ2FuY2VsZWQn
KSI+U3RvcDwvYnV0dG9uPgo8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJlbmFibGVoYXNoIiBj
aGVja2VkPiBFbmFibGUgSGFzaCBDaGFuZ2luZwo8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJl
bmFibGV4aHIiIGNoZWNrZWQ+IEVuYWJsZSBYSFJzCjxkaXYgaWQ9Im1zZ3MiPjwvZGl2Pgo8c2Ny
aXB0PgoKdmFyIERCX1VQREFURV9JTlRFUlZBTCA9IDEwMDA7CnZhciBTRU5EX1hIUl9JTlRFUlZB
TCA9IDEwMDA7CnZhciBCQUNLX0lOVEVSVkFMID0gMTAwMDsKdmFyIE5VTUJFUl9DT05TRUNfRkFJ
TFVSRVNfQUxMT1dFRCA9IDU7Cgp2YXIgZGIgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCdkYmJ1Zycs
ICcnLCAnZGJidWcnLCAxMDI0MDApOwp2YXIgYmFja0l0ZXJhdGlvbnM7CnZhciBjb25zZWN1dGl2
ZUZhaWx1cmVzOwp2YXIgaW5Qcm9ncmVzczsKdmFyIG1zZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdtc2dzJyk7CnZhciB4aHJGY3RJbnRlcnZhbElkOwp2YXIgYmFja0ZjdEludGVydmFs
SWQ7CnZhciBkYkZjdEludGVydmFsSWQ7Cgp2YXIgQ1JFQVRFX0hFQUxUSF9UQUJMRSA9CiAgICAn
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgaGVhbHRoIChrZXkgVkFSQ0hBUigxNikgUFJJTUFS
WSBLRVkpOyc7Cgp2YXIgVVBEQVRFX0RBVEEgPSAnUkVQTEFDRSBJTlRPIGhlYWx0aCBWQUxVRVMo
ImhlYWx0aC1jaGVjay1rZXkiKTsnOwoKZnVuY3Rpb24gbG9nKG1zZykgewogIHZhciBuZXdNc2cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICBuZXdNc2cuaW5uZXJUZXh0ID0gbXNn
OwogIG1zZ0Rpdi5hcHBlbmRDaGlsZChuZXdNc2cpOwp9CgpmdW5jdGlvbiB1cGRhdGVEYXRhYmFz
ZSgpIHsKICBpZiAoY29uc2VjdXRpdmVGYWlsdXJlcyA+PSBOVU1CRVJfQ09OU0VDX0ZBSUxVUkVT
X0FMTE9XRUQpIHsKICAgIHN0b3BUZXN0KCdEQiBDT05TSVNURU5UTFkgRkFJTFMhJyk7CiAgfSBl
bHNlIGlmIChjb25zZWN1dGl2ZUZhaWx1cmVzID4gMCkgewogICAgbG9nKCdIZWFsdGggY2hlY2sg
ZmFpbGVkICcgKyBjb25zZWN1dGl2ZUZhaWx1cmVzICsgJyB0aW1lcy4gVHJ5aW5nIGFnYWluLicp
OwogIH0gZWxzZSB7CiAgICBsb2coJ0hlYWx0aCBjaGVjayBwYXNzZWQuJyk7CiAgfQogIC8vIFRo
aXMgaXMgcmVzZXQgYWZ0ZXIgZWFjaCB0cmFuc2FjdGlvbiB3aGVuIGRiIGlzIG5vdCBicm9rZW4u
CiAgY29uc2VjdXRpdmVGYWlsdXJlcysrOwoKICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0cmFu
c2FjdGlvbikgewogICAgdHJhbnNhY3Rpb24uZXhlY3V0ZVNxbChVUERBVEVfREFUQSk7CiAgfSwg
ZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKICAgIGNvbnNlY3V0aXZlRmFpbHVyZXMgPSAwOwog
IH0pOwp9CgpmdW5jdGlvbiBlcnJvckhhbmRsZXIoZXJyb3IpIHsKICBsb2coJ0RCIHRyYW5zYWN0
aW9uIGVycm9yLCBjb2RlOiAnICsgZXJyb3IuY29kZSArICcsIG1zZzogJyArIGVycm9yLm1lc3Nh
Z2UpOwp9CgpmdW5jdGlvbiBzZW5kWGhyKCkgewogIGxvZygnc2VuZGluZyBHRVQgeGhyIHJlcXVl
c3QuJyk7CiAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgewogICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQpIHsKICAgICAg
bG9nKCdYSFIgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJyArIHhoci5zdGF0dXMpOwogICAgfQogIH07
CgogIHhoci5vcGVuKCdHRVQnLCBsb2NhdGlvbi5ocmVmLCB0cnVlKTsKICB4aHIuc2VuZCgnJyk7
Cn0KCmZ1bmN0aW9uIGludm9rZUJhY2soKSB7CiAgYmFja0l0ZXJhdGlvbnMtLTsKICBpZiAoYmFj
a0l0ZXJhdGlvbnMpIHsKICAgIGhpc3RvcnkuYmFjaygpOwogIH0gZWxzZSB7CiAgICBzdG9wVGVz
dCgnQlVHIElTIE5PVCBQUkVTRU5UIScpOwogIH0KfQoKZnVuY3Rpb24gc3RvcFRlc3QobWVzc2Fn
ZSkgewogIHdpbmRvdy5jbGVhckludGVydmFsKHhockZjdEludGVydmFsSWQpOwogIHdpbmRvdy5j
bGVhckludGVydmFsKGJhY2tGY3RJbnRlcnZhbElkKTsKICB3aW5kb3cuY2xlYXJJbnRlcnZhbChk
YkZjdEludGVydmFsSWQpOwogIGxvZyhtZXNzYWdlKTsKICBpblByb2dyZXNzID0gZmFsc2U7Cn0K
CmZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgaWYgKGluUHJvZ3Jlc3MpIHsKICAgIHJldHVybjsKICB9
CiAgaW5Qcm9ncmVzcyA9IHRydWU7CiAgdmFyIGVuYWJsZUhhc2ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZW5hYmxlaGFzaCcpLmNoZWNrZWQ7CiAgdmFyIGVuYWJsZVhociA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdlbmFibGV4aHInKS5jaGVja2VkOwoKICBtc2dEaXYuaW5uZXJIVE1M
ID0gJyc7CiAgYmFja0l0ZXJhdGlvbnMgPSA2MDsKICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsK
CiAgLy8gQ3JlYXRlIHNvbWUgaGFzaGVzIHNvIHdlIGNhbiBjYWxsIGhpc3RvcnkuYmFjaygpLgog
IGlmIChlbmFibGVIYXNoKSB7CiAgICBsb2coJ0NoYW5naW5nIHRoZSBoYXNoIHRvIGNyZWF0ZSBo
aXN0b3J5IGVudHJpZXMuJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tJdGVyYXRpb25z
OyBpKyspIHsKICAgICAgbG9jYXRpb24uaGFzaCA9IGk7CiAgICB9CiAgfQogIAogIC8vIEluaXQg
dGhlIGRhdGFiYXNlLgogIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7CiAg
ICB0cmFuc2FjdGlvbi5leGVjdXRlU3FsKENSRUFURV9IRUFMVEhfVEFCTEUpOwogIH0sIGVycm9y
SGFuZGxlciwgZnVuY3Rpb24oKSB7CiAgICBsb2coJ1RhYmxlIHN1Y2Nlc3NmdWxseSBjcmVhdGVk
LiBTdGFydGluZyBwZXJpb2RpYyBkYiB1cGRhdGUuJyk7CiAgICBkYkZjdEludGVydmFsSWQgPSB3
aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7Cgog
ICAgLy8gR2l2ZSBhIGxpdHRsZSBmb3IgdGhlIGRhdGFiYXNlIHRvICd3YXJtIHVwJyBiZWZvcmUg
bWFraW5nIHhociByZXF1ZXN0cwogICAgLy8gYW5kIGNhbGxpbmcgaGlzdG9yeS5iYWNrKCkuCiAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgbG9nKCdEYiBpcyB3YXJtZWQg
dXAsIG5hdmlnYXRpbmc9JyArIGVuYWJsZUhhc2ggKyAnLCBzZW5kaW5nIHhocnM9JyArIGVuYWJs
ZVhocik7CgogICAgICAvLyBOT1RFOiBJZiB3ZSBkb24ndCBtYWtlIGFueSB4aHIgcmVxdWVzdHMs
IHRoZW4gdGhlIHRlc3QKICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAoY29tbWVudCB0aGlz
IGxpbmUgb3V0KS4KICAgICAgaWYgKGVuYWJsZVhocikgewogICAgICAgIHhockZjdEludGVydmFs
SWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoc2VuZFhociwgU0VORF9YSFJfSU5URVJWQUwpOwogICAg
ICB9CiAgICAgIGlmIChlbmFibGVIYXNoKSB7CiAgICAgICAgYmFja0ZjdEludGVydmFsSWQgPSB3
aW5kb3cuc2V0SW50ZXJ2YWwoaW52b2tlQmFjaywgQkFDS19JTlRFUlZBTCk7CiAgICAgIH0KICAg
IH0sIDUwMCk7CiAgfSk7Cn0KPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30666</attachid>
            <date>2009-05-26 03:18:05 -0700</date>
            <delta_ts>2009-05-27 07:40:52 -0700</delta_ts>
            <desc>Patch to not stop databases when navigating the history to the same document with a fragment</desc>
            <filename>25710-final.txt</filename>
            <type>text/plain</type>
            <size>9124</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDA1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMjIgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBh
IGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gZmFpbCBpZiBhIGhpc3Rv
cnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhlIHNhbWUgZG9jdW1lbnQgaXMg
bWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUgbG9hZGluZy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzEwCisgICAgICAgIAor
ICAgICAgICBUZXN0OiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0bWwKKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c3RvcExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFNob3VsZFN0b3BEYXRhYmFzZXMpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpnb1RvSXRlbSk6CisK
IDIwMDktMDUtMjIgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDQzODMyKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDkgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZy
YW1lKiBmcmFtZSwgRgogI2lmIEVOQUJMRShXTUwpCiAgICAgLCBtX2ZvcmNlUmVsb2FkV21sRGVj
ayhmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAsIG1fc2hvdWxkU3Rv
cERhdGFiYXNlcyh0cnVlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTY0MCw3ICs2NDMsMTQgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICAgICAgY2FjaGUo
KS0+bG9hZGVyKCktPmNhbmNlbFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKICNpZiBFTkFCTEUoREFU
QUJBU0UpCi0gICAgICAgIGRvYy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBpZiAobV9zaG91
bGRTdG9wRGF0YWJhc2VzKQorCQkgICAgIGRvYy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBsYXN0IG5hdmlnYXRpb24gd2FzIGEgaGlzdG9yeSBu
YXZpZ2F0aW9uIGJ5IGZyYWdtZW50IG9uIHRoZSBzYW1lIGRvY3VtZW50LCBzbworICAgICAgICAg
ICAgLy8gd2UgZGlkbid0IHdhbnQgdG8gc3RvcCB0aGUgZGF0YWJhc2VzLiBUaGUgbmV4dCBuYXZp
Z2F0aW9uIG1heSBub3QgYmUsIHNvIHJlc2V0CisgICAgICAgICAgICAvLyB0aGUgZmxhZyBub3cu
CisgICAgICAgICAgICBtX3Nob3VsZFN0b3BEYXRhYmFzZXMgPSB0cnVlOworICAgICAgICB9CiAj
ZW5kaWYKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNDM4MzIpCisr
KyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNiAr
Mzg0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKIAor
I2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAgICAgdm9pZCBzZXRTaG91bGRTdG9wRGF0YWJhc2Vz
KGJvb2wgc2hvdWxkU3RvcERhdGFiYXNlcykgeyBtX3Nob3VsZFN0b3BEYXRhYmFzZXMgPSBzaG91
bGRTdG9wRGF0YWJhc2VzOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhc3NS
ZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUhpc3RvcnlJdGVtKGJvb2wgdXNlT3JpZ2luYWwpOwog
ICAgICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVIaXN0b3J5SXRlbVRyZWUoRnJh
bWUqIHRhcmdldEZyYW1lLCBib29sIGNsaXBBdFRhcmdldCk7CkBAIC02MzUsNiArNjM5LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgICAgICBib29sIG1fZm9y
Y2VSZWxvYWRXbWxEZWNrOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgICAg
IGJvb2wgbV9zaG91bGRTdG9wRGF0YWJhc2VzOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNDM4MzIpCisrKyBXZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsMTQgQEAgYm9vbCBQYWdlOjpn
b0ZvcndhcmQoKQogdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVM
b2FkVHlwZSB0eXBlKQogewogICAgIC8vIEFib3J0IGFueSBjdXJyZW50IGxvYWQgaWYgd2UncmUg
Z29pbmcgdG8gYSBoaXN0b3J5IGl0ZW0KKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgLy8gSWYg
d2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBk
b2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4KKyAgICBjb25z
dCBLVVJMJiBjdXJyZW50VVJMID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBj
b25zdCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51cmwoKTsKKworICAgIGlmIChuZXdVUkwuaGFzUmVm
KCkgJiYgZXF1YWxJZ25vcmluZ1JlZihjdXJyZW50VVJMLCBuZXdVUkwpKQorICAgICAgICBtX21h
aW5GcmFtZS0+bG9hZGVyKCktPnNldFNob3VsZFN0b3BEYXRhYmFzZXMoZmFsc2UpOworI2VuZGlm
CiAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwogICAgIG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS0+Z29Ub0l0ZW0oaXRlbSwgdHlwZSk7CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0NDA1MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA5LTA1LTIyICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gZmFpbCBpZiBh
IGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhlIHNhbWUgZG9jdW1l
bnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUgbG9hZGluZy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzEwCisKKyAg
ICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sOiBBZGRlZC4KKwog
MjAwOS0wNS0yMiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlh
bnNlbkBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRo
LXhoci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2hh
c2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitDaGFuZ2luZyB0aGUgaGFzaCB0byBjcmVhdGUgaGlzdG9yeSBlbnRyaWVzLgorRGIgaXMg
d2FybWVkIHVwCitUZXN0IENvbXBsZXRlLCBTVUNDRVNTCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMzMgQEAKKzxodG1sPiAKKzxoZWFkPiAKKzx0aXRsZT5IYXNoIENoYW5n
ZSB3aXRoIGFuIE9wZW4gWEhSIHNob3VsZCBub3Qgc3RvcCBkYXRhYmFzZSB0cmFuc2FjdGlvbnM8
L3RpdGxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorIAordmFyIERCX1VQ
REFURV9JTlRFUlZBTCA9IDEwMDsKK3ZhciBTRU5EX1hIUl9JTlRFUlZBTCA9IDEwMDsKK3ZhciBC
QUNLX0lOVEVSVkFMID0gMTAwOwordmFyIE5VTUJFUl9DT05TRUNfRkFJTFVSRVNfQUxMT1dFRCA9
IDU7Cit2YXIgQ1JFQVRFX0hFQUxUSF9UQUJMRSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNU
UyBoZWFsdGggKGtleSBWQVJDSEFSKDE2KSBQUklNQVJZIEtFWSk7JzsKK3ZhciBVUERBVEVfREFU
QSA9ICdSRVBMQUNFIElOVE8gaGVhbHRoIFZBTFVFUygiaGVhbHRoLWNoZWNrLWtleSIpOyc7Cisg
Cit2YXIgZGIgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCdidWcyNTcxMCcsICcxLjAnLCAnTGF5b3V0
VGVzdCBmb3IgYnVnIDI1NzEwJywgMTAyNDAwKTsKK3ZhciBiYWNrSXRlcmF0aW9uczsKK3ZhciBt
c2dEaXY7Cit2YXIgeGhyRmN0SW50ZXJ2YWxJZDsKK3ZhciBiYWNrRmN0SW50ZXJ2YWxJZDsKK3Zh
ciBkYkZjdEludGVydmFsSWQ7Cit2YXIgc3VjY2Vzc2VzOwordmFyIGRhdGFiYXNlVXBkYXRlczsK
K3ZhciBzdG9wcGVkSW50ZXJ2YWxzOworIAorZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2YXIg
bmV3TXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgbmV3TXNnLmlubmVy
VGV4dCA9IG1zZzsKKyAgICBtc2dEaXYuYXBwZW5kQ2hpbGQobmV3TXNnKTsKK30KKworZnVuY3Rp
b24gc3RvcEludGVydmFscygpCit7CisgICAgc3RvcHBlZEludGVydmFscyA9IHRydWU7CisgICAg
d2luZG93LmNsZWFySW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xlYXJJ
bnRlcnZhbCh4aHJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChiYWNr
RmN0SW50ZXJ2YWxJZCk7Cit9CisKK2Z1bmN0aW9uIHN0b3BUZXN0KG1lc3NhZ2UpCit7CisgICAg
aWYgKCFzdG9wcGVkSW50ZXJ2YWxzKQorICAgICAgICBzdG9wSW50ZXJ2YWxzKCk7CisKKyAgICBs
b2cobWVzc2FnZSk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisgICAgCitmdW5jdGlv
biB1cGRhdGVEYXRhYmFzZSgpCit7CisgICAgZGF0YWJhc2VVcGRhdGVzKys7ICAKKyAgICBkYi50
cmFuc2FjdGlvbihmdW5jdGlvbih0cmFuc2FjdGlvbikgeworICAgICAgICB0cmFuc2FjdGlvbi5l
eGVjdXRlU3FsKFVQREFURV9EQVRBLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVyKTsK
KyAgICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgeworICAgICAgICBzdWNjZXNzZXMrKzsK
KyAgICAgICAgaWYgKHN0b3BwZWRJbnRlcnZhbHMgJiYgc3VjY2Vzc2VzID09IGRhdGFiYXNlVXBk
YXRlcykKKyAgICAgICAgICAgIHN0b3BUZXN0KCdUZXN0IENvbXBsZXRlLCBTVUNDRVNTJyk7Cisg
ICAgfSk7Cit9CisgCitmdW5jdGlvbiBlcnJvckhhbmRsZXIodHgsIGVycm9yKQoreworICAgIGxv
ZygnREIgZXJyb3IsIGNvZGU6ICcgKyBlcnJvci5jb2RlICsgJywgbXNnOiAnICsgZXJyb3IubWVz
c2FnZSk7CisgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIEZBSUxFRCcpOworfQorIAorZnVu
Y3Rpb24gc2VuZFhocigpCit7CisgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
eGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLmhyZWYsIHRydWUpOworICAgIHhoci5zZW5kKCcnKTsK
K30KKyAKK2Z1bmN0aW9uIGludm9rZUJhY2soKQoreworICAgIGJhY2tJdGVyYXRpb25zLS07Cisg
ICAgaWYgKGJhY2tJdGVyYXRpb25zKSB7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKyAgICAgICAgLy8gQWxsb3cgYSBsaXR0
bGUgdGltZSBmb3IgYWxsIHRoZSBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUgbm93
IHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHRoZW0uCisgICAgICAgIC8vIElmIHdlIGRvbid0IGZpbmlz
aCBiZWZvcmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNpZGVyIHRoZSB0ZXN0IGZhaWxlZC4KKyAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHN0b3BUZXN0KCdUaW1lZCBvdXQg
d2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLiBGQUlMRUQnKTsgfSwgMjAwMDAp
OworICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRGF0
YWJhc2VDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorICAKKyAgICBtc2dEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXNncycpOworCisg
ICAgbXNnRGl2LmlubmVySFRNTCA9ICcnOworICAgIGJhY2tJdGVyYXRpb25zID0gMzA7CisgICAg
Y29uc2VjdXRpdmVGYWlsdXJlcyA9IDA7CisgICAgc3VjY2Vzc2VzID0gMDsKKyAgICBkYXRhYmFz
ZVVwZGF0ZXMgPSAwOworICAgIHN0b3BwZWRJbnRlcnZhbHMgPSBmYWxzZTsKKworICAgIC8vIENy
ZWF0ZSBzb21lIGhhc2hlcyBzbyB3ZSBjYW4gY2FsbCBoaXN0b3J5LmJhY2soKS4KKyAgICBsb2co
J0NoYW5naW5nIHRoZSBoYXNoIHRvIGNyZWF0ZSBoaXN0b3J5IGVudHJpZXMuJyk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBiYWNrSXRlcmF0aW9uczsgaSsrKSB7CisgICAgICAgIGxvY2F0aW9u
Lmhhc2ggPSBpOworICAgIH0KKworICAgIC8vIEluaXQgdGhlIGRhdGFiYXNlLgorICAgIGRiLnRy
YW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmV4
ZWN1dGVTcWwoQ1JFQVRFX0hFQUxUSF9UQUJMRSwgW10sIGZ1bmN0aW9uKCkge30sIGVycm9ySGFu
ZGxlcik7CisgICAgfSwgZXJyb3JIYW5kbGVyLCBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gR2l2
ZSBhIGxpdHRsZSBmb3IgdGhlIGRhdGFiYXNlIHRvICd3YXJtIHVwJyBiZWZvcmUgbWFraW5nIHho
ciByZXF1ZXN0cworICAgICAgICAvLyBhbmQgY2FsbGluZyBoaXN0b3J5LmJhY2soKS4KKyAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsb2coJ0RiIGlz
IHdhcm1lZCB1cCcpOworCisgICAgICAgICAgICAvLyBOT1RFOiBJZiB3ZSBkb24ndCBtYWtlIGFu
eSB4aHIgcmVxdWVzdHMsIHRoZW4gdGhlIHRlc3QKKyAgICAgICAgICAgIC8vIHN1Y2Nlc3NmdWxs
eSBwYXNzZXMgKGNvbW1lbnQgdGhpcyBsaW5lIG91dCkuCisgICAgICAgICAgICB4aHJGY3RJbnRl
cnZhbElkID0gd2luZG93LnNldEludGVydmFsKHNlbmRYaHIsIFNFTkRfWEhSX0lOVEVSVkFMKTsK
KyAgICAgICAgICAgIGJhY2tGY3RJbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKGludm9r
ZUJhY2ssIEJBQ0tfSU5URVJWQUwpOworICAgICAgICAgICAgZGJGY3RJbnRlcnZhbElkID0gd2lu
ZG93LnNldEludGVydmFsKHVwZGF0ZURhdGFiYXNlLCBEQl9VUERBVEVfSU5URVJWQUwpOworICAg
ICAgICB9LCA1MDApOworICAgIH0pOworfQorPC9zY3JpcHQ+IAorPC9oZWFkPiAKKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4gCis8ZGl2IGlkPSJtc2dzIj48L2Rpdj4gCis8L2JvZHk+IAorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5n
ZS13aXRoLXhoci5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30708</attachid>
            <date>2009-05-27 07:40:52 -0700</date>
            <delta_ts>2009-06-01 12:24:58 -0700</delta_ts>
            <desc>Patch to not stop the databases if the navigation is to a hash fragment on the same document.</desc>
            <filename>25710-final1.txt</filename>
            <type>text/plain</type>
            <size>9191</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDE1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDUtMjYgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisgICAgICAgIAorICAgICAgICBUZXN0OiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgt
eGhyLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRTaG91bGRTdG9wRGF0YWJhc2VzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z29Ub0l0
ZW0pOgorCiAyMDA5LTA1LTI2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDQzODMyKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDkgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZy
YW1lKiBmcmFtZSwgRgogI2lmIEVOQUJMRShXTUwpCiAgICAgLCBtX2ZvcmNlUmVsb2FkV21sRGVj
ayhmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAsIG1fc2hvdWxkU3Rv
cERhdGFiYXNlcyh0cnVlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTY0MCw3ICs2NDMsMTQgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICAgICAgY2FjaGUo
KS0+bG9hZGVyKCktPmNhbmNlbFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKICNpZiBFTkFCTEUoREFU
QUJBU0UpCi0gICAgICAgIGRvYy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBpZiAobV9zaG91
bGRTdG9wRGF0YWJhc2VzKQorICAgICAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGxhc3QgbmF2aWdhdGlvbiB3YXMgYSBoaXN0
b3J5IG5hdmlnYXRpb24gYnkgZnJhZ21lbnQgb24gdGhlIHNhbWUgZG9jdW1lbnQsIHNvCisgICAg
ICAgICAgICAvLyB3ZSBkaWRuJ3Qgd2FudCB0byBzdG9wIHRoZSBkYXRhYmFzZXMuIFRoZSBuZXh0
IG5hdmlnYXRpb24gbWF5IG5vdCBiZSwgc28gcmVzZXQKKyAgICAgICAgICAgIC8vIHRoZSBmbGFn
IG5vdy4KKyAgICAgICAgICAgIG1fc2hvdWxkU3RvcERhdGFiYXNlcyA9IHRydWU7CisgICAgICAg
IH0KICNlbmRpZgogICAgIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA0Mzgz
MikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
NCw2ICszODQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYp
OwogCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgICAgICB2b2lkIHNldFNob3VsZFN0b3BEYXRh
YmFzZXMoYm9vbCBzaG91bGRTdG9wRGF0YWJhc2VzKSB7IG1fc2hvdWxkU3RvcERhdGFiYXNlcyA9
IHNob3VsZFN0b3BEYXRhYmFzZXM7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAg
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlSGlzdG9yeUl0ZW0oYm9vbCB1c2VPcmlnaW5h
bCk7CiAgICAgICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUhpc3RvcnlJdGVtVHJl
ZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKQEAgLTYzNSw2ICs2Mzks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgICAgIGJvb2wg
bV9mb3JjZVJlbG9hZFdtbERlY2s7CiAjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAg
ICAgICAgYm9vbCBtX3Nob3VsZFN0b3BEYXRhYmFzZXM7CisjZW5kaWYKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA0MzgzMikKKysrIFdlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCwxNCBAQCBib29sIFBh
Z2U6OmdvRm9yd2FyZCgpCiB2b2lkIFBhZ2U6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBG
cmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgLy8gQWJvcnQgYW55IGN1cnJlbnQgbG9hZCBpZiB3
ZSdyZSBnb2luZyB0byBhIGhpc3RvcnkgaXRlbQorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAv
LyBJZiB3ZSdyZSBuYXZpZ2F0aW5nIHRoZSBoaXN0b3J5IHZpYSBhIGZyYWdtZW50IG9uIHRoZSBz
YW1lIGRvY3VtZW50LCB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIHN0b3AgZGF0YWJhc2VzLgorICAg
IGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwgPSBtX21haW5GcmFtZS0+bG9hZGVyKCktPnVybCgpOwor
ICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9IGl0ZW0tPnVybCgpOworCisgICAgaWYgKG5ld1VSTC5o
YXNSZWYoKSAmJiBlcXVhbElnbm9yaW5nUmVmKGN1cnJlbnRVUkwsIG5ld1VSTCkpCisgICAgICAg
IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+c2V0U2hvdWxkU3RvcERhdGFiYXNlcyhmYWxzZSk7Cisj
ZW5kaWYKICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLT5nb1RvSXRlbShpdGVtLCB0eXBlKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDQ0MTU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjYgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUu
Y29tPgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlv
bnMgdG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2Yg
dGhlIHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBh
cmUgbG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI1NzEwCisKKyAgICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5o
dG1sOiBBZGRlZC4KKwogMjAwOS0wNS0yNiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9z
dG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NoYW5naW5nIHRoZSBoYXNo
IHRvIGNyZWF0ZSBoaXN0b3J5IGVudHJpZXMuCitEYiBpcyB3YXJtZWQgdXAKK1Rlc3QgQ29tcGxl
dGUsIFNVQ0NFU1MKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N0b3JhZ2UvaGFz
aC1jaGFuZ2Utd2l0aC14aHItZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdl
LXdpdGgteGhyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNo
YW5nZS13aXRoLXhoci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9o
YXNoLWNoYW5nZS13aXRoLXhoci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MSBAQAor
PGh0bWw+IAorPGhlYWQ+IAorPHRpdGxlPkhhc2ggQ2hhbmdlIHdpdGggYW4gT3BlbiBYSFIgc2hv
dWxkIG5vdCBzdG9wIGRhdGFiYXNlIHRyYW5zYWN0aW9uczwvdGl0bGU+CisKKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4gCisgCit2YXIgREJfVVBEQVRFX0lOVEVSVkFMID0gMTAwOwor
dmFyIFNFTkRfWEhSX0lOVEVSVkFMID0gMTAwOwordmFyIEJBQ0tfSU5URVJWQUwgPSAxMDA7Cit2
YXIgQ1JFQVRFX0hFQUxUSF9UQUJMRSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBoZWFs
dGggKGtleSBWQVJDSEFSKDE2KSBQUklNQVJZIEtFWSk7JzsKK3ZhciBVUERBVEVfREFUQSA9ICdS
RVBMQUNFIElOVE8gaGVhbHRoIFZBTFVFUygiaGVhbHRoLWNoZWNrLWtleSIpOyc7CisgCit2YXIg
ZGIgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCdidWcyNTcxMCcsICcxLjAnLCAnTGF5b3V0VGVzdCBm
b3IgYnVnIDI1NzEwJywgMTAyNDAwKTsKK3ZhciBiYWNrSXRlcmF0aW9uczsKK3ZhciBtc2dEaXY7
Cit2YXIgeGhyRmN0SW50ZXJ2YWxJZDsKK3ZhciBiYWNrRmN0SW50ZXJ2YWxJZDsKK3ZhciBzdWNj
ZXNzQ2hlY2tJbnRlcnZhbElkOwordmFyIGRiRmN0SW50ZXJ2YWxJZDsKK3ZhciBzdWNjZXNzZXM7
Cit2YXIgZGF0YWJhc2VVcGRhdGVzOwordmFyIHN0b3BwZWRJbnRlcnZhbHM7CisgCitmdW5jdGlv
biBsb2cobXNnKQoreworICAgIHZhciBuZXdNc2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICBuZXdNc2cuaW5uZXJUZXh0ID0gbXNnOworICAgIG1zZ0Rpdi5hcHBlbmRDaGls
ZChuZXdNc2cpOworfQorCitmdW5jdGlvbiBzdG9wSW50ZXJ2YWxzKCkKK3sKKyAgICBzdG9wcGVk
SW50ZXJ2YWxzID0gdHJ1ZTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChkYkZjdEludGVydmFs
SWQpOworICAgIHdpbmRvdy5jbGVhckludGVydmFsKHhockZjdEludGVydmFsSWQpOworICAgIHdp
bmRvdy5jbGVhckludGVydmFsKGJhY2tGY3RJbnRlcnZhbElkKTsKK30KKworZnVuY3Rpb24gc3Rv
cFRlc3QobWVzc2FnZSkKK3sKKyAgICBpZiAoIXN0b3BwZWRJbnRlcnZhbHMpCisgICAgICAgIHN0
b3BJbnRlcnZhbHMoKTsKKworICAgIGxvZyhtZXNzYWdlKTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKyAgICAKK2Z1bmN0aW9uIHVwZGF0ZURhdGFiYXNlKCkKK3sKKyAgICBkYXRhYmFz
ZVVwZGF0ZXMrKzsgIAorICAgIGRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7
CisgICAgICAgIHRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwoVVBEQVRFX0RBVEEsIFtdLCBmdW5jdGlv
bigpIHt9LCBlcnJvckhhbmRsZXIpOworICAgIH0sIGVycm9ySGFuZGxlciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIHN1Y2Nlc3NlcysrOworICAgIH0pOworfQorCitmdW5jdGlvbiBjaGVja0ZvclN1
Y2Nlc3MoKQoreworICAgIGlmIChzdWNjZXNzZXMgPT0gZGF0YWJhc2VVcGRhdGVzKSB7CisgICAg
ICAgIHN0b3BUZXN0KCdUZXN0IENvbXBsZXRlLCBTVUNDRVNTJyk7CisgICAgICAgIHdpbmRvdy5j
bGVhckludGVydmFsKHN1Y2Nlc3NDaGVja0ludGVydmFsSWQpOworICAgIH0KK30KKyAKK2Z1bmN0
aW9uIGVycm9ySGFuZGxlcih0eCwgZXJyb3IpCit7CisgICAgbG9nKCdEQiBlcnJvciwgY29kZTog
JyArIGVycm9yLmNvZGUgKyAnLCBtc2c6ICcgKyBlcnJvci5tZXNzYWdlKTsKKyAgICBzdG9wVGVz
dCgnVGVzdCBDb21wbGV0ZSwgRkFJTEVEJyk7Cit9CisgCitmdW5jdGlvbiBzZW5kWGhyKCkKK3sK
KyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbignR0VUJywgbG9j
YXRpb24uaHJlZiwgdHJ1ZSk7CisgICAgeGhyLnNlbmQoJycpOworfQorIAorZnVuY3Rpb24gaW52
b2tlQmFjaygpCit7CisgICAgYmFja0l0ZXJhdGlvbnMtLTsKKyAgICBpZiAoYmFja0l0ZXJhdGlv
bnMpIHsKKyAgICAgICAgaGlzdG9yeS5iYWNrKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3Rv
cEludGVydmFscygpOworICAgICAgICAvLyBBbGxvdyBhIGxpdHRsZSB0aW1lIGZvciBhbGwgdGhl
IGRhdGFiYXNlIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZSBub3cgd2UndmUgc3RvcHBlZCBtYWtp
bmcgdGhlbS4KKyAgICAgICAgc3VjY2Vzc0NoZWNrSW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRl
cnZhbChjaGVja0ZvclN1Y2Nlc3MsIDI1MCk7CisgICAgICAgIC8vIElmIHdlIGRvbid0IGZpbmlz
aCBiZWZvcmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNpZGVyIHRoZSB0ZXN0IGZhaWxlZC4KKyAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHN0b3BUZXN0KCdUaW1lZCBvdXQg
d2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLiBGQUlMRUQnKTsgfSwgMjAwMDAp
OworICAgICAgICAKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKyAgCisgICAgbXNnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21z
Z3MnKTsKKworICAgIG1zZ0Rpdi5pbm5lckhUTUwgPSAnJzsKKyAgICBiYWNrSXRlcmF0aW9ucyA9
IDEwOworICAgIGNvbnNlY3V0aXZlRmFpbHVyZXMgPSAwOworICAgIHN1Y2Nlc3NlcyA9IDA7Cisg
ICAgZGF0YWJhc2VVcGRhdGVzID0gMDsKKyAgICBzdG9wcGVkSW50ZXJ2YWxzID0gZmFsc2U7CisK
KyAgICAvLyBDcmVhdGUgc29tZSBoYXNoZXMgc28gd2UgY2FuIGNhbGwgaGlzdG9yeS5iYWNrKCku
CisgICAgbG9nKCdDaGFuZ2luZyB0aGUgaGFzaCB0byBjcmVhdGUgaGlzdG9yeSBlbnRyaWVzLicp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFja0l0ZXJhdGlvbnM7IGkrKykgeworICAgICAg
ICBsb2NhdGlvbi5oYXNoID0gaTsKKyAgICB9CisKKyAgICAvLyBJbml0IHRoZSBkYXRhYmFzZS4K
KyAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0cmFuc2FjdGlvbikgeworICAgICAgICB0cmFu
c2FjdGlvbi5leGVjdXRlU3FsKENSRUFURV9IRUFMVEhfVEFCTEUsIFtdLCBmdW5jdGlvbigpIHt9
LCBlcnJvckhhbmRsZXIpOworICAgIH0sIGVycm9ySGFuZGxlciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIC8vIEdpdmUgYSBsaXR0bGUgZm9yIHRoZSBkYXRhYmFzZSB0byAnd2FybSB1cCcgYmVmb3Jl
IG1ha2luZyB4aHIgcmVxdWVzdHMKKyAgICAgICAgLy8gYW5kIGNhbGxpbmcgaGlzdG9yeS5iYWNr
KCkuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
bG9nKCdEYiBpcyB3YXJtZWQgdXAnKTsKKworICAgICAgICAgICAgLy8gTk9URTogSWYgd2UgZG9u
J3QgbWFrZSBhbnkgeGhyIHJlcXVlc3RzLCB0aGVuIHRoZSB0ZXN0CisgICAgICAgICAgICAvLyBz
dWNjZXNzZnVsbHkgcGFzc2VzIChjb21tZW50IHRoaXMgbGluZSBvdXQpLgorICAgICAgICAgICAg
eGhyRmN0SW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChzZW5kWGhyLCBTRU5EX1hIUl9J
TlRFUlZBTCk7CisgICAgICAgICAgICBiYWNrRmN0SW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRl
cnZhbChpbnZva2VCYWNrLCBCQUNLX0lOVEVSVkFMKTsKKyAgICAgICAgICAgIGRiRmN0SW50ZXJ2
YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVEYXRhYmFzZSwgREJfVVBEQVRFX0lOVEVS
VkFMKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PiAKKzwvaGVhZD4g
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+IAorPGRpdiBpZD0ibXNncyI+PC9kaXY+IAorPC9i
b2R5PiAKKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N0b3JhZ2Uv
aGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgbmF0aXZlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30839</attachid>
            <date>2009-06-01 12:24:58 -0700</date>
            <delta_ts>2009-06-01 12:34:45 -0700</delta_ts>
            <desc>New patch with argument rather than member variable.</desc>
            <filename>25710-jun1-final.txt</filename>
            <type>text/plain</type>
            <size>12762</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMDEgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0U2hvdWxkU3RvcERhdGFiYXNl
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmdvVG9JdGVtKToKKwogMjAwOS0wNi0wMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLiAgTGFuZGVkIChhbmQgdHdl
YWtlZCkgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJl
dmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJl
Y2VpdmVkRXJyb3IoYwogLy8gb25lIGRvY3VtZW50IGF0IGEgdGltZSwgYnV0IG9uZSBkb2N1bWVu
dCBtYXkgaGF2ZSBtYW55IHJlbGF0ZWQgcmVzb3VyY2VzLiAKIC8vIHN0b3BMb2FkaW5nIHdpbGwg
c3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwgCiAvLyBidXQgbm90
IGxvYWRzIGluaXRpYXRlZCBieSBjaGlsZCBmcmFtZXMnIGRhdGEgc291cmNlcyAtLSB0aGF0J3Mg
dGhlIFdlYkZyYW1lJ3Mgam9iLgotdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQ
b2xpY3kpCiB7CiAgICAgLy8gSW4gc29tZSByYXJlIGNhc2VzLCBjYWxsaW5nIEZyYW1lTG9hZGVy
OjpzdG9wTG9hZGluZyBjb3VsZCBzZXQgbV9sb2FkaW5nIHRvIGZhbHNlLgogICAgIC8vIChUaGlz
IGNhbiBoYXBwZW4gd2hlbiB0aGVyZSdzIGEgc2luZ2xlIFhNTEh0dHBSZXF1ZXN0IGN1cnJlbnRs
eSBsb2FkaW5nIGFuZCBzdG9wTG9hZGluZyBjYXVzZXMgaXQKQEAgLTI5Miw3ICsyOTIsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgIERvY3VtZW50KiBkb2Mg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAKICAgICAgICAgaWYgKGxvYWRpbmcgfHwg
ZG9jLT5wYXJzaW5nKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RvcExvYWRp
bmcoZmFsc2UpOworICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKGZh
bHNlLCBkYXRhYmFzZVBvbGljeSk7CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIGNhbmNlbCBtdWx0
aXBhcnQgbG9hZGVycwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA0NDMy
MSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9p
ZCByZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChjb25zdCBLVVJMJik7CiAgICAgICAg
IGJvb2wgaXNTdG9wcGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wcGluZzsgfQotICAgICAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHZvaWQgc3RvcExvYWRpbmcoRGF0YWJhc2VQ
b2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgICAgICB2b2lk
IHNldENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRlZCA9IGNvbW1pdHRlZDsg
fQogICAgICAgICBib29sIGlzQ29tbWl0dGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWQ7
IH0KICAgICAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmc7IH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNyArNjAzLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS0+c2NoZWR1bGVGb3JtU3VibWlzc2lvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkKQordm9pZCBGcmFtZUxvYWRl
cjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkLCBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBv
bGljeSkKIHsKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVy
KCktPnN0b3BQYXJzaW5nKCk7CkBAIC02NDUsNyArNjQ1LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3RvcExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICAgICAgY2FjaGUoKS0+bG9hZGVyKCktPmNh
bmNlbFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAg
IGRvYy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBpZiAoZGF0YWJhc2VQb2xpY3kgPT0gRGF0
YWJhc2VQb2xpY3lTdG9wKQorICAgICAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKCk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTI2NTcsNyArMjY1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BM
b2FkaW5nU3ViZnJhbWVzKCkKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVy
cygpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycygpCit2b2lkIEZyYW1l
TG9hZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKIHsK
ICAgICBpZiAobV91bmxvYWRFdmVudEJlaW5nRGlzcGF0Y2hlZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjY3Miw5ICsyNjczLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoKQog
CiAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKQotICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2Fk
aW5nKCk7CisgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmco
ZGF0YWJhc2VQb2xpY3kpOwogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5z
dG9wTG9hZGluZyhkYXRhYmFzZVBvbGljeSk7CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKDApOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA0NDMyMSkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3
ICsxNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgY2FuSGFuZGxlUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgICAgICAvLyBBbHNvIG5vdCBjb29s
LgotICAgICAgICB2b2lkIHN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIHZvaWQgc3RvcEFsbExv
YWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3Ap
OwogICAgICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21w
bGV0ZSA9IGZhbHNlKTsKIAogICAgICAgICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNMb2FkaW5nTWFpblJlc291cmNlOyB9CkBAIC0yNjQsNyArMjY0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+KTsKIAogICAgICAgICB2b2lkIHN0b3AoKTsKLSAgICAgICAgdm9pZCBzdG9wTG9hZGlu
Zyhib29sIHNlbmRVbmxvYWQpOworICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKGJvb2wgc2VuZFVu
bG9hZCwgRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3Ap
OwogICAgICAgICBib29sIGNsb3NlVVJMKCk7CiAKICAgICAgICAgdm9pZCBkaWRFeHBsaWNpdE9w
ZW4oKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDQ0MzIxKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw2ICs2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdmlnYXRpb25UeXBl
T3RoZXIKICAgICB9OwogCisJZW51bSBEYXRhYmFzZVBvbGljeSB7CisJCURhdGFiYXNlUG9saWN5
U3RvcCwgICAgLy8gVGhlIGRhdGFiYXNlIHRocmVhZCBzaG91bGQgYmUgc3RvcHBlZCBhbmQgZGF0
YWJhc2UgY29ubmVjdGlvbnMgY2xvc2VkLgorCQlEYXRhYmFzZVBvbGljeUNvbnRpbnVlCisJfTsK
KwogICAgIGVudW0gT2JqZWN0Q29udGVudFR5cGUgewogICAgICAgICBPYmplY3RDb250ZW50Tm9u
ZSwKICAgICAgICAgT2JqZWN0Q29udGVudEltYWdlLApJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNDQzMjEp
CisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEs
MTkgQEAgYm9vbCBQYWdlOjpnb0ZvcndhcmQoKQogdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0b3J5
SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogewogICAgIC8vIEFib3J0IGFueSBjdXJy
ZW50IGxvYWQgaWYgd2UncmUgZ29pbmcgdG8gYSBoaXN0b3J5IGl0ZW0KLSAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisKKwkvLyBEZWZpbmUgd2hhdCB0byBkbyB3
aXRoIGFueSBvcGVuIGRhdGFiYXNlIGNvbm5lY3Rpb25zLiBCeSBkZWZhdWx0IHdlIHN0b3AgdGhl
bSBhbmQgdGVybWluYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisJRGF0YWJhc2VQb2xpY3kgZGF0
YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3A7CisKKyNpZiBFTkFCTEUoREFUQUJBU0Up
CisgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBv
biB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNl
cy4KKyAgICBjb25zdCBLVVJMJiBjdXJyZW50VVJMID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51
cmwoKTsKKyAgICBjb25zdCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51cmwoKTsKKworICAgIGlmIChu
ZXdVUkwuaGFzUmVmKCkgJiYgZXF1YWxJZ25vcmluZ1JlZihjdXJyZW50VVJMLCBuZXdVUkwpKQor
ICAgICAgICBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5Q29udGludWU7CisjZW5kaWYK
KyAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKGRhdGFiYXNlUG9saWN5
KTsKICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA0NDMyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA5LTA2LTAxICBCZW4gTXVyZG9jaCAgPGJl
bm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBGaXggYSBidWcgdGhhdCBjYXVzZXMgZGF0YWJhc2Ug
dHJhbnNhY3Rpb25zIHRvIGZhaWwgaWYgYSBoaXN0b3J5IG5hdmlnYXRpb24gdG8gYSBoYXNoIGZy
YWdtZW50IG9mIHRoZSBzYW1lIGRvY3VtZW50IGlzIG1hZGUgd2hpbGUgcmVzb3VyY2VzIChlLmcu
IGFuIFhIUikgYXJlIGxvYWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTcxMAorCisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRo
LXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaGFzaC1jaGFuZ2Ut
d2l0aC14aHIuaHRtbDogQWRkZWQuCisKIDIwMDktMDYtMDEgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4gIExhbmRl
ZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13
aXRoLXhoci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9o
YXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzIEBACitDaGFuZ2luZyB0aGUgaGFzaCB0byBjcmVhdGUgaGlzdG9yeSBl
bnRyaWVzLgorRGIgaXMgd2FybWVkIHVwCitUZXN0IENvbXBsZXRlLCBTVUNDRVNTCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4
cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJ
bmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDEgQEAKKzxodG1sPiAKKzxoZWFkPiAKKzx0
aXRsZT5IYXNoIENoYW5nZSB3aXRoIGFuIE9wZW4gWEhSIHNob3VsZCBub3Qgc3RvcCBkYXRhYmFz
ZSB0cmFuc2FjdGlvbnM8L3RpdGxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
IAorIAordmFyIERCX1VQREFURV9JTlRFUlZBTCA9IDEwMDsKK3ZhciBTRU5EX1hIUl9JTlRFUlZB
TCA9IDEwMDsKK3ZhciBCQUNLX0lOVEVSVkFMID0gMTAwOwordmFyIENSRUFURV9IRUFMVEhfVEFC
TEUgPSAnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgaGVhbHRoIChrZXkgVkFSQ0hBUigxNikg
UFJJTUFSWSBLRVkpOyc7Cit2YXIgVVBEQVRFX0RBVEEgPSAnUkVQTEFDRSBJTlRPIGhlYWx0aCBW
QUxVRVMoImhlYWx0aC1jaGVjay1rZXkiKTsnOworIAordmFyIGRiID0gd2luZG93Lm9wZW5EYXRh
YmFzZSgnYnVnMjU3MTAnLCAnMS4wJywgJ0xheW91dFRlc3QgZm9yIGJ1ZyAyNTcxMCcsIDEwMjQw
MCk7Cit2YXIgYmFja0l0ZXJhdGlvbnM7Cit2YXIgbXNnRGl2OwordmFyIHhockZjdEludGVydmFs
SWQ7Cit2YXIgYmFja0ZjdEludGVydmFsSWQ7Cit2YXIgc3VjY2Vzc0NoZWNrSW50ZXJ2YWxJZDsK
K3ZhciBkYkZjdEludGVydmFsSWQ7Cit2YXIgc3VjY2Vzc2VzOwordmFyIGRhdGFiYXNlVXBkYXRl
czsKK3ZhciBzdG9wcGVkSW50ZXJ2YWxzOworIAorZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2
YXIgbmV3TXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgbmV3TXNnLmlu
bmVyVGV4dCA9IG1zZzsKKyAgICBtc2dEaXYuYXBwZW5kQ2hpbGQobmV3TXNnKTsKK30KKworZnVu
Y3Rpb24gc3RvcEludGVydmFscygpCit7CisgICAgc3RvcHBlZEludGVydmFscyA9IHRydWU7Cisg
ICAgd2luZG93LmNsZWFySW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xl
YXJJbnRlcnZhbCh4aHJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChi
YWNrRmN0SW50ZXJ2YWxJZCk7Cit9CisKK2Z1bmN0aW9uIHN0b3BUZXN0KG1lc3NhZ2UpCit7Cisg
ICAgaWYgKCFzdG9wcGVkSW50ZXJ2YWxzKQorICAgICAgICBzdG9wSW50ZXJ2YWxzKCk7CisKKyAg
ICBsb2cobWVzc2FnZSk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisgICAgCitmdW5j
dGlvbiB1cGRhdGVEYXRhYmFzZSgpCit7CisgICAgZGF0YWJhc2VVcGRhdGVzKys7ICAKKyAgICBk
Yi50cmFuc2FjdGlvbihmdW5jdGlvbih0cmFuc2FjdGlvbikgeworICAgICAgICB0cmFuc2FjdGlv
bi5leGVjdXRlU3FsKFVQREFURV9EQVRBLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVy
KTsKKyAgICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgeworICAgICAgICBzdWNjZXNzZXMr
KzsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tGb3JTdWNjZXNzKCkKK3sKKyAgICBpZiAo
c3VjY2Vzc2VzID09IGRhdGFiYXNlVXBkYXRlcykgeworICAgICAgICBzdG9wVGVzdCgnVGVzdCBD
b21wbGV0ZSwgU1VDQ0VTUycpOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzdWNjZXNz
Q2hlY2tJbnRlcnZhbElkKTsKKyAgICB9Cit9CisgCitmdW5jdGlvbiBlcnJvckhhbmRsZXIodHgs
IGVycm9yKQoreworICAgIGxvZygnREIgZXJyb3IsIGNvZGU6ICcgKyBlcnJvci5jb2RlICsgJywg
bXNnOiAnICsgZXJyb3IubWVzc2FnZSk7CisgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIEZB
SUxFRCcpOworfQorIAorZnVuY3Rpb24gc2VuZFhocigpCit7CisgICAgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLmhyZWYsIHRydWUpOwor
ICAgIHhoci5zZW5kKCcnKTsKK30KKyAKK2Z1bmN0aW9uIGludm9rZUJhY2soKQoreworICAgIGJh
Y2tJdGVyYXRpb25zLS07CisgICAgaWYgKGJhY2tJdGVyYXRpb25zKSB7CisgICAgICAgIGhpc3Rv
cnkuYmFjaygpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKyAgICAg
ICAgLy8gQWxsb3cgYSBsaXR0bGUgdGltZSBmb3IgYWxsIHRoZSBkYXRhYmFzZSB0cmFuc2FjdGlv
bnMgdG8gY29tcGxldGUgbm93IHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHRoZW0uCisgICAgICAgIHN1
Y2Nlc3NDaGVja0ludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoY2hlY2tGb3JTdWNjZXNz
LCAyNTApOworICAgICAgICAvLyBJZiB3ZSBkb24ndCBmaW5pc2ggYmVmb3JlIHRoaXMgdGltZSwg
dGhlbiB3ZSBjb25zaWRlciB0aGUgdGVzdCBmYWlsZWQuCisgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzdG9wVGVzdCgnVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRyYW5zYWN0
aW9ucyB0byBjb21wbGV0ZS4gRkFJTEVEJyk7IH0sIDIwMDAwKTsKKyAgICAgICAgCisgICAgfQor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBEYXRhYmFzZUNhbGxi
YWNrcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgIAorICAg
IG1zZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc2dzJyk7CisKKyAgICBtc2dEaXYu
aW5uZXJIVE1MID0gJyc7CisgICAgYmFja0l0ZXJhdGlvbnMgPSAxMDsKKyAgICBjb25zZWN1dGl2
ZUZhaWx1cmVzID0gMDsKKyAgICBzdWNjZXNzZXMgPSAwOworICAgIGRhdGFiYXNlVXBkYXRlcyA9
IDA7CisgICAgc3RvcHBlZEludGVydmFscyA9IGZhbHNlOworCisgICAgLy8gQ3JlYXRlIHNvbWUg
aGFzaGVzIHNvIHdlIGNhbiBjYWxsIGhpc3RvcnkuYmFjaygpLgorICAgIGxvZygnQ2hhbmdpbmcg
dGhlIGhhc2ggdG8gY3JlYXRlIGhpc3RvcnkgZW50cmllcy4nKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGJhY2tJdGVyYXRpb25zOyBpKyspIHsKKyAgICAgICAgbG9jYXRpb24uaGFzaCA9IGk7
CisgICAgfQorCisgICAgLy8gSW5pdCB0aGUgZGF0YWJhc2UuCisgICAgZGIudHJhbnNhY3Rpb24o
ZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZXhlY3V0ZVNxbChD
UkVBVEVfSEVBTFRIX1RBQkxFLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVyKTsKKyAg
ICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBHaXZlIGEgbGl0dGxl
IGZvciB0aGUgZGF0YWJhc2UgdG8gJ3dhcm0gdXAnIGJlZm9yZSBtYWtpbmcgeGhyIHJlcXVlc3Rz
CisgICAgICAgIC8vIGFuZCBjYWxsaW5nIGhpc3RvcnkuYmFjaygpLgorICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxvZygnRGIgaXMgd2FybWVkIHVw
Jyk7CisKKyAgICAgICAgICAgIC8vIE5PVEU6IElmIHdlIGRvbid0IG1ha2UgYW55IHhociByZXF1
ZXN0cywgdGhlbiB0aGUgdGVzdAorICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAo
Y29tbWVudCB0aGlzIGxpbmUgb3V0KS4KKyAgICAgICAgICAgIHhockZjdEludGVydmFsSWQgPSB3
aW5kb3cuc2V0SW50ZXJ2YWwoc2VuZFhociwgU0VORF9YSFJfSU5URVJWQUwpOworICAgICAgICAg
ICAgYmFja0ZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoaW52b2tlQmFjaywgQkFD
S19JTlRFUlZBTCk7CisgICAgICAgICAgICBkYkZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50
ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7CisgICAgICAgIH0sIDUw
MCk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4gCis8L2hlYWQ+IAorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPiAKKzxkaXYgaWQ9Im1zZ3MiPjwvZGl2PiAKKzwvYm9keT4gCis8L2h0bWw+CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhy
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30840</attachid>
            <date>2009-06-01 12:34:45 -0700</date>
            <delta_ts>2009-06-02 04:18:43 -0700</delta_ts>
            <desc>Replaces a couple of tabs with spaces in previous patch.</desc>
            <filename>25710-jun1-final.txt</filename>
            <type>text/plain</type>
            <size>12723</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMDEgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmdvVG9JdGVtKToKKwogMjAwOS0wNi0wMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLiAgTGFuZGVkIChhbmQgdHdl
YWtlZCkgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJl
dmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJl
Y2VpdmVkRXJyb3IoYwogLy8gb25lIGRvY3VtZW50IGF0IGEgdGltZSwgYnV0IG9uZSBkb2N1bWVu
dCBtYXkgaGF2ZSBtYW55IHJlbGF0ZWQgcmVzb3VyY2VzLiAKIC8vIHN0b3BMb2FkaW5nIHdpbGwg
c3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwgCiAvLyBidXQgbm90
IGxvYWRzIGluaXRpYXRlZCBieSBjaGlsZCBmcmFtZXMnIGRhdGEgc291cmNlcyAtLSB0aGF0J3Mg
dGhlIFdlYkZyYW1lJ3Mgam9iLgotdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQ
b2xpY3kpCiB7CiAgICAgLy8gSW4gc29tZSByYXJlIGNhc2VzLCBjYWxsaW5nIEZyYW1lTG9hZGVy
OjpzdG9wTG9hZGluZyBjb3VsZCBzZXQgbV9sb2FkaW5nIHRvIGZhbHNlLgogICAgIC8vIChUaGlz
IGNhbiBoYXBwZW4gd2hlbiB0aGVyZSdzIGEgc2luZ2xlIFhNTEh0dHBSZXF1ZXN0IGN1cnJlbnRs
eSBsb2FkaW5nIGFuZCBzdG9wTG9hZGluZyBjYXVzZXMgaXQKQEAgLTI5Miw3ICsyOTIsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgIERvY3VtZW50KiBkb2Mg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAKICAgICAgICAgaWYgKGxvYWRpbmcgfHwg
ZG9jLT5wYXJzaW5nKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RvcExvYWRp
bmcoZmFsc2UpOworICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKGZh
bHNlLCBkYXRhYmFzZVBvbGljeSk7CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIGNhbmNlbCBtdWx0
aXBhcnQgbG9hZGVycwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA0NDMy
MSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9p
ZCByZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChjb25zdCBLVVJMJik7CiAgICAgICAg
IGJvb2wgaXNTdG9wcGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wcGluZzsgfQotICAgICAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHZvaWQgc3RvcExvYWRpbmcoRGF0YWJhc2VQ
b2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgICAgICB2b2lk
IHNldENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRlZCA9IGNvbW1pdHRlZDsg
fQogICAgICAgICBib29sIGlzQ29tbWl0dGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWQ7
IH0KICAgICAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmc7IH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNyArNjAzLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS0+c2NoZWR1bGVGb3JtU3VibWlzc2lvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkKQordm9pZCBGcmFtZUxvYWRl
cjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkLCBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBv
bGljeSkKIHsKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVy
KCktPnN0b3BQYXJzaW5nKCk7CkBAIC02NDUsNyArNjQ1LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3RvcExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICAgICAgY2FjaGUoKS0+bG9hZGVyKCktPmNh
bmNlbFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAg
IGRvYy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBpZiAoZGF0YWJhc2VQb2xpY3kgPT0gRGF0
YWJhc2VQb2xpY3lTdG9wKQorICAgICAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKCk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTI2NTcsNyArMjY1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BM
b2FkaW5nU3ViZnJhbWVzKCkKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVy
cygpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycygpCit2b2lkIEZyYW1l
TG9hZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKIHsK
ICAgICBpZiAobV91bmxvYWRFdmVudEJlaW5nRGlzcGF0Y2hlZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjY3Miw5ICsyNjczLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoKQog
CiAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKQotICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2Fk
aW5nKCk7CisgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmco
ZGF0YWJhc2VQb2xpY3kpOwogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5z
dG9wTG9hZGluZyhkYXRhYmFzZVBvbGljeSk7CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKDApOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA0NDMyMSkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3
ICsxNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgY2FuSGFuZGxlUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgICAgICAvLyBBbHNvIG5vdCBjb29s
LgotICAgICAgICB2b2lkIHN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIHZvaWQgc3RvcEFsbExv
YWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3Ap
OwogICAgICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21w
bGV0ZSA9IGZhbHNlKTsKIAogICAgICAgICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNMb2FkaW5nTWFpblJlc291cmNlOyB9CkBAIC0yNjQsNyArMjY0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+KTsKIAogICAgICAgICB2b2lkIHN0b3AoKTsKLSAgICAgICAgdm9pZCBzdG9wTG9hZGlu
Zyhib29sIHNlbmRVbmxvYWQpOworICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKGJvb2wgc2VuZFVu
bG9hZCwgRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3Ap
OwogICAgICAgICBib29sIGNsb3NlVVJMKCk7CiAKICAgICAgICAgdm9pZCBkaWRFeHBsaWNpdE9w
ZW4oKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDQ0MzIxKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw2ICs2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdmlnYXRpb25UeXBl
T3RoZXIKICAgICB9OwogCisgICAgZW51bSBEYXRhYmFzZVBvbGljeSB7CisgICAgICAgIERhdGFi
YXNlUG9saWN5U3RvcCwgICAgLy8gVGhlIGRhdGFiYXNlIHRocmVhZCBzaG91bGQgYmUgc3RvcHBl
ZCBhbmQgZGF0YWJhc2UgY29ubmVjdGlvbnMgY2xvc2VkLgorICAgICAgICBEYXRhYmFzZVBvbGlj
eUNvbnRpbnVlCisgICAgfTsKKwogICAgIGVudW0gT2JqZWN0Q29udGVudFR5cGUgewogICAgICAg
ICBPYmplY3RDb250ZW50Tm9uZSwKICAgICAgICAgT2JqZWN0Q29udGVudEltYWdlLApJbmRleDog
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNw
cAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMSw3ICsyMDEsMTkgQEAgYm9vbCBQYWdlOjpnb0ZvcndhcmQoKQogdm9pZCBQYWdl
Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogewogICAg
IC8vIEFib3J0IGFueSBjdXJyZW50IGxvYWQgaWYgd2UncmUgZ29pbmcgdG8gYSBoaXN0b3J5IGl0
ZW0KLSAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisKKwkvLyBE
ZWZpbmUgd2hhdCB0byBkbyB3aXRoIGFueSBvcGVuIGRhdGFiYXNlIGNvbm5lY3Rpb25zLiBCeSBk
ZWZhdWx0IHdlIHN0b3AgdGhlbSBhbmQgdGVybWluYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisJ
RGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3A7CisKKyNp
ZiBFTkFCTEUoREFUQUJBU0UpCisgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9y
eSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2Fu
dCB0byBzdG9wIGRhdGFiYXNlcy4KKyAgICBjb25zdCBLVVJMJiBjdXJyZW50VVJMID0gbV9tYWlu
RnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBjb25zdCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51
cmwoKTsKKworICAgIGlmIChuZXdVUkwuaGFzUmVmKCkgJiYgZXF1YWxJZ25vcmluZ1JlZihjdXJy
ZW50VVJMLCBuZXdVUkwpKQorICAgICAgICBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5
Q29udGludWU7CisjZW5kaWYKKyAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2Fk
ZXJzKGRhdGFiYXNlUG9saWN5KTsKICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPmdvVG9JdGVt
KGl0ZW0sIHR5cGUpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDMyMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA5LTA2LTAx
ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBGaXggYSBidWcgdGhh
dCBjYXVzZXMgZGF0YWJhc2UgdHJhbnNhY3Rpb25zIHRvIGZhaWwgaWYgYSBoaXN0b3J5IG5hdmln
YXRpb24gdG8gYSBoYXNoIGZyYWdtZW50IG9mIHRoZSBzYW1lIGRvY3VtZW50IGlzIG1hZGUgd2hp
bGUgcmVzb3VyY2VzIChlLmcuIGFuIFhIUikgYXJlIGxvYWRpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTcxMAorCisgICAgICAgICogc3RvcmFn
ZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbDogQWRkZWQuCisKIDIwMDktMDYtMDEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4gIExhbmRlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvc3Rv
cmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDaGFuZ2luZyB0aGUgaGFzaCB0
byBjcmVhdGUgaGlzdG9yeSBlbnRyaWVzLgorRGIgaXMgd2FybWVkIHVwCitUZXN0IENvbXBsZXRl
LCBTVUNDRVNTCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gt
Y2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13
aXRoLXhoci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFu
Z2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFz
aC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDEgQEAKKzxo
dG1sPiAKKzxoZWFkPiAKKzx0aXRsZT5IYXNoIENoYW5nZSB3aXRoIGFuIE9wZW4gWEhSIHNob3Vs
ZCBub3Qgc3RvcCBkYXRhYmFzZSB0cmFuc2FjdGlvbnM8L3RpdGxlPgorCis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+IAorIAordmFyIERCX1VQREFURV9JTlRFUlZBTCA9IDEwMDsKK3Zh
ciBTRU5EX1hIUl9JTlRFUlZBTCA9IDEwMDsKK3ZhciBCQUNLX0lOVEVSVkFMID0gMTAwOwordmFy
IENSRUFURV9IRUFMVEhfVEFCTEUgPSAnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgaGVhbHRo
IChrZXkgVkFSQ0hBUigxNikgUFJJTUFSWSBLRVkpOyc7Cit2YXIgVVBEQVRFX0RBVEEgPSAnUkVQ
TEFDRSBJTlRPIGhlYWx0aCBWQUxVRVMoImhlYWx0aC1jaGVjay1rZXkiKTsnOworIAordmFyIGRi
ID0gd2luZG93Lm9wZW5EYXRhYmFzZSgnYnVnMjU3MTAnLCAnMS4wJywgJ0xheW91dFRlc3QgZm9y
IGJ1ZyAyNTcxMCcsIDEwMjQwMCk7Cit2YXIgYmFja0l0ZXJhdGlvbnM7Cit2YXIgbXNnRGl2Owor
dmFyIHhockZjdEludGVydmFsSWQ7Cit2YXIgYmFja0ZjdEludGVydmFsSWQ7Cit2YXIgc3VjY2Vz
c0NoZWNrSW50ZXJ2YWxJZDsKK3ZhciBkYkZjdEludGVydmFsSWQ7Cit2YXIgc3VjY2Vzc2VzOwor
dmFyIGRhdGFiYXNlVXBkYXRlczsKK3ZhciBzdG9wcGVkSW50ZXJ2YWxzOworIAorZnVuY3Rpb24g
bG9nKG1zZykKK3sKKyAgICB2YXIgbmV3TXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgbmV3TXNnLmlubmVyVGV4dCA9IG1zZzsKKyAgICBtc2dEaXYuYXBwZW5kQ2hpbGQo
bmV3TXNnKTsKK30KKworZnVuY3Rpb24gc3RvcEludGVydmFscygpCit7CisgICAgc3RvcHBlZElu
dGVydmFscyA9IHRydWU7CisgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElk
KTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh4aHJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5k
b3cuY2xlYXJJbnRlcnZhbChiYWNrRmN0SW50ZXJ2YWxJZCk7Cit9CisKK2Z1bmN0aW9uIHN0b3BU
ZXN0KG1lc3NhZ2UpCit7CisgICAgaWYgKCFzdG9wcGVkSW50ZXJ2YWxzKQorICAgICAgICBzdG9w
SW50ZXJ2YWxzKCk7CisKKyAgICBsb2cobWVzc2FnZSk7CisKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisgICAgCitmdW5jdGlvbiB1cGRhdGVEYXRhYmFzZSgpCit7CisgICAgZGF0YWJhc2VV
cGRhdGVzKys7ICAKKyAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0cmFuc2FjdGlvbikgewor
ICAgICAgICB0cmFuc2FjdGlvbi5leGVjdXRlU3FsKFVQREFURV9EQVRBLCBbXSwgZnVuY3Rpb24o
KSB7fSwgZXJyb3JIYW5kbGVyKTsKKyAgICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBzdWNjZXNzZXMrKzsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tGb3JTdWNj
ZXNzKCkKK3sKKyAgICBpZiAoc3VjY2Vzc2VzID09IGRhdGFiYXNlVXBkYXRlcykgeworICAgICAg
ICBzdG9wVGVzdCgnVGVzdCBDb21wbGV0ZSwgU1VDQ0VTUycpOworICAgICAgICB3aW5kb3cuY2xl
YXJJbnRlcnZhbChzdWNjZXNzQ2hlY2tJbnRlcnZhbElkKTsKKyAgICB9Cit9CisgCitmdW5jdGlv
biBlcnJvckhhbmRsZXIodHgsIGVycm9yKQoreworICAgIGxvZygnREIgZXJyb3IsIGNvZGU6ICcg
KyBlcnJvci5jb2RlICsgJywgbXNnOiAnICsgZXJyb3IubWVzc2FnZSk7CisgICAgc3RvcFRlc3Qo
J1Rlc3QgQ29tcGxldGUsIEZBSUxFRCcpOworfQorIAorZnVuY3Rpb24gc2VuZFhocigpCit7Cisg
ICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oJ0dFVCcsIGxvY2F0
aW9uLmhyZWYsIHRydWUpOworICAgIHhoci5zZW5kKCcnKTsKK30KKyAKK2Z1bmN0aW9uIGludm9r
ZUJhY2soKQoreworICAgIGJhY2tJdGVyYXRpb25zLS07CisgICAgaWYgKGJhY2tJdGVyYXRpb25z
KSB7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3BJ
bnRlcnZhbHMoKTsKKyAgICAgICAgLy8gQWxsb3cgYSBsaXR0bGUgdGltZSBmb3IgYWxsIHRoZSBk
YXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUgbm93IHdlJ3ZlIHN0b3BwZWQgbWFraW5n
IHRoZW0uCisgICAgICAgIHN1Y2Nlc3NDaGVja0ludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2
YWwoY2hlY2tGb3JTdWNjZXNzLCAyNTApOworICAgICAgICAvLyBJZiB3ZSBkb24ndCBmaW5pc2gg
YmVmb3JlIHRoaXMgdGltZSwgdGhlbiB3ZSBjb25zaWRlciB0aGUgdGVzdCBmYWlsZWQuCisgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzdG9wVGVzdCgnVGltZWQgb3V0IHdh
aXRpbmcgZm9yIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4gRkFJTEVEJyk7IH0sIDIwMDAwKTsK
KyAgICAgICAgCisgICAgfQorfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBEYXRhYmFzZUNhbGxiYWNrcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisgIAorICAgIG1zZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc2dz
Jyk7CisKKyAgICBtc2dEaXYuaW5uZXJIVE1MID0gJyc7CisgICAgYmFja0l0ZXJhdGlvbnMgPSAx
MDsKKyAgICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsKKyAgICBzdWNjZXNzZXMgPSAwOworICAg
IGRhdGFiYXNlVXBkYXRlcyA9IDA7CisgICAgc3RvcHBlZEludGVydmFscyA9IGZhbHNlOworCisg
ICAgLy8gQ3JlYXRlIHNvbWUgaGFzaGVzIHNvIHdlIGNhbiBjYWxsIGhpc3RvcnkuYmFjaygpLgor
ICAgIGxvZygnQ2hhbmdpbmcgdGhlIGhhc2ggdG8gY3JlYXRlIGhpc3RvcnkgZW50cmllcy4nKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tJdGVyYXRpb25zOyBpKyspIHsKKyAgICAgICAg
bG9jYXRpb24uaGFzaCA9IGk7CisgICAgfQorCisgICAgLy8gSW5pdCB0aGUgZGF0YWJhc2UuCisg
ICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKKyAgICAgICAgdHJhbnNh
Y3Rpb24uZXhlY3V0ZVNxbChDUkVBVEVfSEVBTFRIX1RBQkxFLCBbXSwgZnVuY3Rpb24oKSB7fSwg
ZXJyb3JIYW5kbGVyKTsKKyAgICB9LCBlcnJvckhhbmRsZXIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAvLyBHaXZlIGEgbGl0dGxlIGZvciB0aGUgZGF0YWJhc2UgdG8gJ3dhcm0gdXAnIGJlZm9yZSBt
YWtpbmcgeGhyIHJlcXVlc3RzCisgICAgICAgIC8vIGFuZCBjYWxsaW5nIGhpc3RvcnkuYmFjaygp
LgorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxv
ZygnRGIgaXMgd2FybWVkIHVwJyk7CisKKyAgICAgICAgICAgIC8vIE5PVEU6IElmIHdlIGRvbid0
IG1ha2UgYW55IHhociByZXF1ZXN0cywgdGhlbiB0aGUgdGVzdAorICAgICAgICAgICAgLy8gc3Vj
Y2Vzc2Z1bGx5IHBhc3NlcyAoY29tbWVudCB0aGlzIGxpbmUgb3V0KS4KKyAgICAgICAgICAgIHho
ckZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoc2VuZFhociwgU0VORF9YSFJfSU5U
RVJWQUwpOworICAgICAgICAgICAgYmFja0ZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2
YWwoaW52b2tlQmFjaywgQkFDS19JTlRFUlZBTCk7CisgICAgICAgICAgICBkYkZjdEludGVydmFs
SWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlRGF0YWJhc2UsIERCX1VQREFURV9JTlRFUlZB
TCk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4gCis8L2hlYWQ+IAor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPiAKKzxkaXYgaWQ9Im1zZ3MiPjwvZGl2PiAKKzwvYm9k
eT4gCis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hh
c2gtY2hhbmdlLXdpdGgteGhyLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoK
</data>
<flag name="review"
          id="15654"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30862</attachid>
            <date>2009-06-02 04:18:43 -0700</date>
            <delta_ts>2009-06-02 04:20:31 -0700</delta_ts>
            <desc>Updates WebCore.base.exp to fix build bustage.</desc>
            <filename>25710-jun1-final.txt</filename>
            <type>text/plain</type>
            <size>13773</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMDEgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmdvVG9JdGVtKToKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorCiAyMDA5LTA2LTAxICBE
cmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuICBMYW5kZWQgKGFuZCB0d2Vha2VkKSBieSBBZGFtIEJhcnRoLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MSwxMiArMTYxLDEyIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29z
ZXJEMUV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFjb21wbGV0ZVVSTEVSS05TXzZTdHJp
bmdFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFsb2FkQXJjaGl2ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU183QXJjaGl2ZUVFRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExc2V0RW5jb2Rp
bmdFUktOU182U3RyaW5nRWIKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXN0b3BMb2FkaW5n
RWIKK19fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXN0b3BMb2FkaW5nRWJOU18xNERhdGFiYXNl
UG9saWN5RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyc2hvdWxkUmVsb2FkRVJLTlNfNEtV
UkxFUzNfCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTNleGVjdXRlU2NyaXB0RVJLTlNfNlN0
cmluZ0ViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRkZXRhY2hDaGlsZHJlbkV2CiBfX1pO
N1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzY3JvbGxUb0FuY2hvckVSS05TXzRLVVJMRQotX19aTjdX
ZWJDb3JlMTFGcmFtZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNFdgorX19aTjdXZWJDb3JlMTFGcmFt
ZUxvYWRlcjExc3RvcExvYWRpbmdFYk5TXzE0RGF0YWJhc2VQb2xpY3lFCiBfX1pON1dlYkNvcmUx
MUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2Fk
ZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dURjEwUGFz
c1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUUKIF9fWk43V2ViQ29yZTEx
RnJhbWVMb2FkZXIxN3N0b3BGb3JVc2VyQ2FuY2VsRWIKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoYwogLy8gb25lIGRvY3VtZW50IGF0IGEgdGltZSwgYnV0
IG9uZSBkb2N1bWVudCBtYXkgaGF2ZSBtYW55IHJlbGF0ZWQgcmVzb3VyY2VzLiAKIC8vIHN0b3BM
b2FkaW5nIHdpbGwgc3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwg
CiAvLyBidXQgbm90IGxvYWRzIGluaXRpYXRlZCBieSBjaGlsZCBmcmFtZXMnIGRhdGEgc291cmNl
cyAtLSB0aGF0J3MgdGhlIFdlYkZyYW1lJ3Mgam9iLgotdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcoKQordm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoRGF0YWJhc2VQb2xp
Y3kgZGF0YWJhc2VQb2xpY3kpCiB7CiAgICAgLy8gSW4gc29tZSByYXJlIGNhc2VzLCBjYWxsaW5n
IEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyBjb3VsZCBzZXQgbV9sb2FkaW5nIHRvIGZhbHNlLgog
ICAgIC8vIChUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGVyZSdzIGEgc2luZ2xlIFhNTEh0dHBSZXF1
ZXN0IGN1cnJlbnRseSBsb2FkaW5nIGFuZCBzdG9wTG9hZGluZyBjYXVzZXMgaXQKQEAgLTI5Miw3
ICsyOTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgIERv
Y3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAKICAgICAgICAgaWYg
KGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIo
KS0+c3RvcExvYWRpbmcoZmFsc2UpOworICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0
b3BMb2FkaW5nKGZhbHNlLCBkYXRhYmFzZVBvbGljeSk7CiAgICAgfQogCiAgICAgLy8gQWx3YXlz
IGNhbmNlbCBtdWx0aXBhcnQgbG9hZGVycwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAK
ICAgICAgICAgdm9pZCByZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChjb25zdCBLVVJM
Jik7CiAgICAgICAgIGJvb2wgaXNTdG9wcGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wcGlu
ZzsgfQotICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHZvaWQgc3RvcExvYWRp
bmcoRGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgICAgICB2b2lkIHNl
dENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRlZCA9IGNvbW1pdHRlZDsgfQog
ICAgICAgICBib29sIGlzQ29tbWl0dGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWQ7IH0K
ICAgICAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmc7IH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNyArNjAzLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIHRhcmdldEZyYW1lLT5s
b2FkZXIoKS0+c2NoZWR1bGVGb3JtU3VibWlzc2lvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5
LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkKQordm9pZCBGcmFtZUxvYWRlcjo6
c3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkLCBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGlj
eSkKIHsKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCkt
PnN0b3BQYXJzaW5nKCk7CkBAIC02NDUsNyArNjQ1LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3Rv
cExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICAgICAgY2FjaGUoKS0+bG9hZGVyKCktPmNhbmNl
bFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAgIGRv
Yy0+c3RvcERhdGFiYXNlcygpOworICAgICAgICBpZiAoZGF0YWJhc2VQb2xpY3kgPT0gRGF0YWJh
c2VQb2xpY3lTdG9wKQorICAgICAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKCk7CiAjZW5kaWYK
ICAgICB9CiAKQEAgLTI2NTcsNyArMjY1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2Fk
aW5nU3ViZnJhbWVzKCkKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycygpCit2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKIHsKICAg
ICBpZiAobV91bmxvYWRFdmVudEJlaW5nRGlzcGF0Y2hlZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjY3Miw5ICsyNjczLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoKQogCiAg
ICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKQotICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5n
KCk7CisgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmcoZGF0
YWJhc2VQb2xpY3kpOwogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2RvY3Vt
ZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5zdG9w
TG9hZGluZyhkYXRhYmFzZVBvbGljeSk7CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKDApOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA0NDMyMSkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsx
NTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgICAgICAvLyBBbHNvIG5vdCBjb29sLgot
ICAgICAgICB2b2lkIHN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIHZvaWQgc3RvcEFsbExvYWRl
cnMoRGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgICAgICB2b2lkIHN0
b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9IGZhbHNlKTsKIAog
ICAgICAgICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNM
b2FkaW5nTWFpblJlc291cmNlOyB9CkBAIC0yNjQsNyArMjY0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKIAogICAgICAg
ICB2b2lkIHN0b3AoKTsKLSAgICAgICAgdm9pZCBzdG9wTG9hZGluZyhib29sIHNlbmRVbmxvYWQp
OworICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKGJvb2wgc2VuZFVubG9hZCwgRGF0YWJhc2VQb2xp
Y3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgICAgICBib29sIGNsb3NlVVJMKCk7CiAKICAg
ICAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4oKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmgJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIE5hdmlnYXRpb25UeXBlT3RoZXIKICAgICB9OwogCisgICAgZW51bSBEYXRhYmFz
ZVBvbGljeSB7CisgICAgICAgIERhdGFiYXNlUG9saWN5U3RvcCwgICAgLy8gVGhlIGRhdGFiYXNl
IHRocmVhZCBzaG91bGQgYmUgc3RvcHBlZCBhbmQgZGF0YWJhc2UgY29ubmVjdGlvbnMgY2xvc2Vk
LgorICAgICAgICBEYXRhYmFzZVBvbGljeUNvbnRpbnVlCisgICAgfTsKKwogICAgIGVudW0gT2Jq
ZWN0Q29udGVudFR5cGUgewogICAgICAgICBPYmplY3RDb250ZW50Tm9uZSwKICAgICAgICAgT2Jq
ZWN0Q29udGVudEltYWdlLApJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsMTkgQEAgYm9vbCBQYWdl
Ojpnb0ZvcndhcmQoKQogdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJh
bWVMb2FkVHlwZSB0eXBlKQogewogICAgIC8vIEFib3J0IGFueSBjdXJyZW50IGxvYWQgaWYgd2Un
cmUgZ29pbmcgdG8gYSBoaXN0b3J5IGl0ZW0KLSAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0
b3BBbGxMb2FkZXJzKCk7CisKKwkvLyBEZWZpbmUgd2hhdCB0byBkbyB3aXRoIGFueSBvcGVuIGRh
dGFiYXNlIGNvbm5lY3Rpb25zLiBCeSBkZWZhdWx0IHdlIHN0b3AgdGhlbSBhbmQgdGVybWluYXRl
IHRoZSBkYXRhYmFzZSB0aHJlYWQuCisJRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBE
YXRhYmFzZVBvbGljeVN0b3A7CisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgLy8gSWYgd2Un
cmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1
bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4KKyAgICBjb25zdCBL
VVJMJiBjdXJyZW50VVJMID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBjb25z
dCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51cmwoKTsKKworICAgIGlmIChuZXdVUkwuaGFzUmVmKCkg
JiYgZXF1YWxJZ25vcmluZ1JlZihjdXJyZW50VVJMLCBuZXdVUkwpKQorICAgICAgICBkYXRhYmFz
ZVBvbGljeSA9IERhdGFiYXNlUG9saWN5Q29udGludWU7CisjZW5kaWYKKyAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKGRhdGFiYXNlUG9saWN5KTsKICAgICBtX21haW5G
cmFtZS0+bG9hZGVyKCktPmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwogfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0NDMyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDExIEBACisyMDA5LTA2LTAxICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4K
KworICAgICAgICBGaXggYSBidWcgdGhhdCBjYXVzZXMgZGF0YWJhc2UgdHJhbnNhY3Rpb25zIHRv
IGZhaWwgaWYgYSBoaXN0b3J5IG5hdmlnYXRpb24gdG8gYSBoYXNoIGZyYWdtZW50IG9mIHRoZSBz
YW1lIGRvY3VtZW50IGlzIG1hZGUgd2hpbGUgcmVzb3VyY2VzIChlLmcuIGFuIFhIUikgYXJlIGxv
YWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTcxMAorCisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbDog
QWRkZWQuCisKIDIwMDktMDYtMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4gIExhbmRlZCBieSBBZGFtIEJhcnRo
LgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRo
LXhoci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2hh
c2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitDaGFuZ2luZyB0aGUgaGFzaCB0byBjcmVhdGUgaGlzdG9yeSBlbnRyaWVzLgorRGIgaXMg
d2FybWVkIHVwCitUZXN0IENvbXBsZXRlLCBTVUNDRVNTCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVkLnR4dApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNDEgQEAKKzxodG1sPiAKKzxoZWFkPiAKKzx0aXRsZT5IYXNoIENoYW5n
ZSB3aXRoIGFuIE9wZW4gWEhSIHNob3VsZCBub3Qgc3RvcCBkYXRhYmFzZSB0cmFuc2FjdGlvbnM8
L3RpdGxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorIAordmFyIERCX1VQ
REFURV9JTlRFUlZBTCA9IDEwMDsKK3ZhciBTRU5EX1hIUl9JTlRFUlZBTCA9IDEwMDsKK3ZhciBC
QUNLX0lOVEVSVkFMID0gMTAwOwordmFyIENSRUFURV9IRUFMVEhfVEFCTEUgPSAnQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgaGVhbHRoIChrZXkgVkFSQ0hBUigxNikgUFJJTUFSWSBLRVkpOyc7
Cit2YXIgVVBEQVRFX0RBVEEgPSAnUkVQTEFDRSBJTlRPIGhlYWx0aCBWQUxVRVMoImhlYWx0aC1j
aGVjay1rZXkiKTsnOworIAordmFyIGRiID0gd2luZG93Lm9wZW5EYXRhYmFzZSgnYnVnMjU3MTAn
LCAnMS4wJywgJ0xheW91dFRlc3QgZm9yIGJ1ZyAyNTcxMCcsIDEwMjQwMCk7Cit2YXIgYmFja0l0
ZXJhdGlvbnM7Cit2YXIgbXNnRGl2OwordmFyIHhockZjdEludGVydmFsSWQ7Cit2YXIgYmFja0Zj
dEludGVydmFsSWQ7Cit2YXIgc3VjY2Vzc0NoZWNrSW50ZXJ2YWxJZDsKK3ZhciBkYkZjdEludGVy
dmFsSWQ7Cit2YXIgc3VjY2Vzc2VzOwordmFyIGRhdGFiYXNlVXBkYXRlczsKK3ZhciBzdG9wcGVk
SW50ZXJ2YWxzOworIAorZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2YXIgbmV3TXNnID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgbmV3TXNnLmlubmVyVGV4dCA9IG1zZzsK
KyAgICBtc2dEaXYuYXBwZW5kQ2hpbGQobmV3TXNnKTsKK30KKworZnVuY3Rpb24gc3RvcEludGVy
dmFscygpCit7CisgICAgc3RvcHBlZEludGVydmFscyA9IHRydWU7CisgICAgd2luZG93LmNsZWFy
SW50ZXJ2YWwoZGJGY3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh4aHJG
Y3RJbnRlcnZhbElkKTsKKyAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChiYWNrRmN0SW50ZXJ2YWxJ
ZCk7Cit9CisKK2Z1bmN0aW9uIHN0b3BUZXN0KG1lc3NhZ2UpCit7CisgICAgaWYgKCFzdG9wcGVk
SW50ZXJ2YWxzKQorICAgICAgICBzdG9wSW50ZXJ2YWxzKCk7CisKKyAgICBsb2cobWVzc2FnZSk7
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisgICAgCitmdW5jdGlvbiB1cGRhdGVEYXRh
YmFzZSgpCit7CisgICAgZGF0YWJhc2VVcGRhdGVzKys7ICAKKyAgICBkYi50cmFuc2FjdGlvbihm
dW5jdGlvbih0cmFuc2FjdGlvbikgeworICAgICAgICB0cmFuc2FjdGlvbi5leGVjdXRlU3FsKFVQ
REFURV9EQVRBLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVyKTsKKyAgICB9LCBlcnJv
ckhhbmRsZXIsIGZ1bmN0aW9uKCkgeworICAgICAgICBzdWNjZXNzZXMrKzsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gY2hlY2tGb3JTdWNjZXNzKCkKK3sKKyAgICBpZiAoc3VjY2Vzc2VzID09IGRh
dGFiYXNlVXBkYXRlcykgeworICAgICAgICBzdG9wVGVzdCgnVGVzdCBDb21wbGV0ZSwgU1VDQ0VT
UycpOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzdWNjZXNzQ2hlY2tJbnRlcnZhbElk
KTsKKyAgICB9Cit9CisgCitmdW5jdGlvbiBlcnJvckhhbmRsZXIodHgsIGVycm9yKQoreworICAg
IGxvZygnREIgZXJyb3IsIGNvZGU6ICcgKyBlcnJvci5jb2RlICsgJywgbXNnOiAnICsgZXJyb3Iu
bWVzc2FnZSk7CisgICAgc3RvcFRlc3QoJ1Rlc3QgQ29tcGxldGUsIEZBSUxFRCcpOworfQorIAor
ZnVuY3Rpb24gc2VuZFhocigpCit7CisgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgeGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLmhyZWYsIHRydWUpOworICAgIHhoci5zZW5kKCcn
KTsKK30KKyAKK2Z1bmN0aW9uIGludm9rZUJhY2soKQoreworICAgIGJhY2tJdGVyYXRpb25zLS07
CisgICAgaWYgKGJhY2tJdGVyYXRpb25zKSB7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKyAgICAgICAgLy8gQWxsb3cgYSBs
aXR0bGUgdGltZSBmb3IgYWxsIHRoZSBkYXRhYmFzZSB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUg
bm93IHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHRoZW0uCisgICAgICAgIHN1Y2Nlc3NDaGVja0ludGVy
dmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoY2hlY2tGb3JTdWNjZXNzLCAyNTApOworICAgICAg
ICAvLyBJZiB3ZSBkb24ndCBmaW5pc2ggYmVmb3JlIHRoaXMgdGltZSwgdGhlbiB3ZSBjb25zaWRl
ciB0aGUgdGVzdCBmYWlsZWQuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzdG9wVGVzdCgnVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0
ZS4gRkFJTEVEJyk7IH0sIDIwMDAwKTsKKyAgICAgICAgCisgICAgfQorfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBEYXRhYmFzZUNhbGxiYWNrcygpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgIAorICAgIG1zZ0RpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtc2dzJyk7CisKKyAgICBtc2dEaXYuaW5uZXJIVE1MID0gJyc7
CisgICAgYmFja0l0ZXJhdGlvbnMgPSAxMDsKKyAgICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsK
KyAgICBzdWNjZXNzZXMgPSAwOworICAgIGRhdGFiYXNlVXBkYXRlcyA9IDA7CisgICAgc3RvcHBl
ZEludGVydmFscyA9IGZhbHNlOworCisgICAgLy8gQ3JlYXRlIHNvbWUgaGFzaGVzIHNvIHdlIGNh
biBjYWxsIGhpc3RvcnkuYmFjaygpLgorICAgIGxvZygnQ2hhbmdpbmcgdGhlIGhhc2ggdG8gY3Jl
YXRlIGhpc3RvcnkgZW50cmllcy4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tJdGVy
YXRpb25zOyBpKyspIHsKKyAgICAgICAgbG9jYXRpb24uaGFzaCA9IGk7CisgICAgfQorCisgICAg
Ly8gSW5pdCB0aGUgZGF0YWJhc2UuCisgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHJhbnNh
Y3Rpb24pIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZXhlY3V0ZVNxbChDUkVBVEVfSEVBTFRIX1RB
QkxFLCBbXSwgZnVuY3Rpb24oKSB7fSwgZXJyb3JIYW5kbGVyKTsKKyAgICB9LCBlcnJvckhhbmRs
ZXIsIGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBHaXZlIGEgbGl0dGxlIGZvciB0aGUgZGF0YWJh
c2UgdG8gJ3dhcm0gdXAnIGJlZm9yZSBtYWtpbmcgeGhyIHJlcXVlc3RzCisgICAgICAgIC8vIGFu
ZCBjYWxsaW5nIGhpc3RvcnkuYmFjaygpLgorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGxvZygnRGIgaXMgd2FybWVkIHVwJyk7CisKKyAgICAgICAg
ICAgIC8vIE5PVEU6IElmIHdlIGRvbid0IG1ha2UgYW55IHhociByZXF1ZXN0cywgdGhlbiB0aGUg
dGVzdAorICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHBhc3NlcyAoY29tbWVudCB0aGlzIGxp
bmUgb3V0KS4KKyAgICAgICAgICAgIHhockZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2
YWwoc2VuZFhociwgU0VORF9YSFJfSU5URVJWQUwpOworICAgICAgICAgICAgYmFja0ZjdEludGVy
dmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoaW52b2tlQmFjaywgQkFDS19JTlRFUlZBTCk7Cisg
ICAgICAgICAgICBkYkZjdEludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlRGF0
YWJhc2UsIERCX1VQREFURV9JTlRFUlZBTCk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9
Cis8L3NjcmlwdD4gCis8L2hlYWQ+IAorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPiAKKzxkaXYg
aWQ9Im1zZ3MiPjwvZGl2PiAKKzwvYm9keT4gCis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30864</attachid>
            <date>2009-06-02 04:37:00 -0700</date>
            <delta_ts>2009-06-04 07:35:40 -0700</delta_ts>
            <desc>Fix build bustage.</desc>
            <filename>25710-jun1-final.txt</filename>
            <type>text/plain</type>
            <size>13775</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMDEgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmdvVG9JdGVtKToKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorCiAyMDA5LTA2LTAxICBE
cmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuICBMYW5kZWQgKGFuZCB0d2Vha2VkKSBieSBBZGFtIEJhcnRoLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MSwxMiArMTYxLDEyIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29z
ZXJEMUV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFjb21wbGV0ZVVSTEVSS05TXzZTdHJp
bmdFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFsb2FkQXJjaGl2ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU183QXJjaGl2ZUVFRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExc2V0RW5jb2Rp
bmdFUktOU182U3RyaW5nRWIKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXN0b3BMb2FkaW5n
RWIKK19fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXN0b3BMb2FkaW5nRWJOU18xNERhdGFiYXNl
UG9saWN5RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyc2hvdWxkUmVsb2FkRVJLTlNfNEtV
UkxFUzNfCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTNleGVjdXRlU2NyaXB0RVJLTlNfNlN0
cmluZ0ViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRkZXRhY2hDaGlsZHJlbkV2CiBfX1pO
N1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzY3JvbGxUb0FuY2hvckVSS05TXzRLVVJMRQotX19aTjdX
ZWJDb3JlMTFGcmFtZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNFdgorX19aTjdXZWJDb3JlMTFGcmFt
ZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNFTlNfMTREYXRhYmFzZVBvbGljeUUKIF9fWk43V2ViQ29y
ZTExRnJhbWVMb2FkZXIxNmRldGFjaEZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxv
YWRlcjE2bG9hZEZyYW1lUmVxdWVzdEVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEViYk4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVFdmVudEVFRU5TNV9JTlNfOUZvcm1TdGF0ZUVFRQogX19aTjdXZWJDb3Jl
MTFGcmFtZUxvYWRlcjE3c3RvcEZvclVzZXJDYW5jZWxFYgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvcihjCiAvLyBvbmUgZG9jdW1lbnQgYXQgYSB0aW1lLCBi
dXQgb25lIGRvY3VtZW50IG1heSBoYXZlIG1hbnkgcmVsYXRlZCByZXNvdXJjZXMuIAogLy8gc3Rv
cExvYWRpbmcgd2lsbCBzdG9wIGFsbCBsb2FkcyBpbml0aWF0ZWQgYnkgdGhlIGRhdGEgc291cmNl
LCAKIC8vIGJ1dCBub3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3Vy
Y2VzIC0tIHRoYXQncyB0aGUgV2ViRnJhbWUncyBqb2IuCi12b2lkIERvY3VtZW50TG9hZGVyOjpz
dG9wTG9hZGluZygpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyhEYXRhYmFzZVBv
bGljeSBkYXRhYmFzZVBvbGljeSkKIHsKICAgICAvLyBJbiBzb21lIHJhcmUgY2FzZXMsIGNhbGxp
bmcgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nIGNvdWxkIHNldCBtX2xvYWRpbmcgdG8gZmFsc2Uu
CiAgICAgLy8gKFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlJ3MgYSBzaW5nbGUgWE1MSHR0cFJl
cXVlc3QgY3VycmVudGx5IGxvYWRpbmcgYW5kIHN0b3BMb2FkaW5nIGNhdXNlcyBpdApAQCAtMjky
LDcgKzI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAobG9hZGluZyB8fCBkb2MtPnBhcnNpbmcoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5zdG9wTG9hZGluZyhmYWxzZSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
c3RvcExvYWRpbmcoZmFsc2UsIGRhdGFiYXNlUG9saWN5KTsKICAgICB9CiAKICAgICAvLyBBbHdh
eXMgY2FuY2VsIG11bHRpcGFydCBsb2FkZXJzCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IAogICAgICAgICB2b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtV
UkwmKTsKICAgICAgICAgYm9vbCBpc1N0b3BwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3Bw
aW5nOyB9Ci0gICAgICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKyAgICAgICAgdm9pZCBzdG9wTG9h
ZGluZyhEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7CiAgICAgICAgIHZvaWQg
c2V0Q29tbWl0dGVkKGJvb2wgY29tbWl0dGVkKSB7IG1fY29tbWl0dGVkID0gY29tbWl0dGVkOyB9
CiAgICAgICAgIGJvb2wgaXNDb21taXR0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZDsg
fQogICAgICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZzsgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMyw3ICs2MDMsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKGNvbnN0IGNoYXIqCiAgICAgdGFyZ2V0RnJhbWUt
PmxvYWRlcigpLT5zY2hlZHVsZUZvcm1TdWJtaXNzaW9uKGZyYW1lUmVxdWVzdCwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGV2ZW50LCBmb3JtU3RhdGUpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpzdG9wTG9hZGluZyhib29sIHNlbmRVbmxvYWQpCit2b2lkIEZyYW1lTG9hZGVy
OjpzdG9wTG9hZGluZyhib29sIHNlbmRVbmxvYWQsIERhdGFiYXNlUG9saWN5IGRhdGFiYXNlUG9s
aWN5KQogewogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50
KCktPnRva2VuaXplcigpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT50b2tlbml6ZXIo
KS0+c3RvcFBhcnNpbmcoKTsKQEAgLTY0NSw3ICs2NDUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
dG9wTG9hZGluZyhib29sIHNlbmRVCiAgICAgICAgICAgICBjYWNoZSgpLT5sb2FkZXIoKS0+Y2Fu
Y2VsUmVxdWVzdHMoZG9jTG9hZGVyKTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICAgICAg
ZG9jLT5zdG9wRGF0YWJhc2VzKCk7CisgICAgICAgIGlmIChkYXRhYmFzZVBvbGljeSA9PSBEYXRh
YmFzZVBvbGljeVN0b3ApCisgICAgICAgICAgICBkb2MtPnN0b3BEYXRhYmFzZXMoKTsKICNlbmRp
ZgogICAgIH0KIApAQCAtMjY1Nyw3ICsyNjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExv
YWRpbmdTdWJmcmFtZXMoKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJz
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OnN0b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5IGRhdGFiYXNlUG9saWN5KQogewog
ICAgIGlmIChtX3VubG9hZEV2ZW50QmVpbmdEaXNwYXRjaGVkKQogICAgICAgICByZXR1cm47CkBA
IC0yNjcyLDkgKzI2NzMsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycygpCiAK
ICAgICBzdG9wTG9hZGluZ1N1YmZyYW1lcygpOwogICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIpCi0gICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoKTsKKyAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZyhk
YXRhYmFzZVBvbGljeSk7CiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fZG9j
dW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0
b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsKIAogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoMCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDQ0MzIxKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcg
KzE1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgICAgIC8vIEFsc28gbm90IGNvb2wu
Ci0gICAgICAgIHZvaWQgc3RvcEFsbExvYWRlcnMoKTsKKyAgICAgICAgdm9pZCBzdG9wQWxsTG9h
ZGVycyhEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7CiAgICAgICAgIHZvaWQg
c3RvcEZvclVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9hZENvbXBsZXRlID0gZmFsc2UpOwog
CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0xvYWRpbmdNYWluUmVzb3VyY2U7IH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCiAgICAg
ICAgIHZvaWQgc3RvcCgpOwotICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKGJvb2wgc2VuZFVubG9h
ZCk7CisgICAgICAgIHZvaWQgc3RvcExvYWRpbmcoYm9vbCBzZW5kVW5sb2FkLCBEYXRhYmFzZVBv
bGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7CiAgICAgICAgIGJvb2wgY2xvc2VVUkwoKTsKIAog
ICAgICAgICB2b2lkIGRpZEV4cGxpY2l0T3BlbigpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgTmF2aWdhdGlvblR5cGVPdGhlcgogICAgIH07CiAKKyAgICBlbnVtIERhdGFi
YXNlUG9saWN5IHsKKyAgICAgICAgRGF0YWJhc2VQb2xpY3lTdG9wLCAgICAvLyBUaGUgZGF0YWJh
c2UgdGhyZWFkIHNob3VsZCBiZSBzdG9wcGVkIGFuZCBkYXRhYmFzZSBjb25uZWN0aW9ucyBjbG9z
ZWQuCisgICAgICAgIERhdGFiYXNlUG9saWN5Q29udGludWUKKyAgICB9OworCiAgICAgZW51bSBP
YmplY3RDb250ZW50VHlwZSB7CiAgICAgICAgIE9iamVjdENvbnRlbnROb25lLAogICAgICAgICBP
YmplY3RDb250ZW50SW1hZ2UsCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSwxOSBAQCBib29sIFBh
Z2U6OmdvRm9yd2FyZCgpCiB2b2lkIFBhZ2U6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBG
cmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgLy8gQWJvcnQgYW55IGN1cnJlbnQgbG9hZCBpZiB3
ZSdyZSBnb2luZyB0byBhIGhpc3RvcnkgaXRlbQotICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+
c3RvcEFsbExvYWRlcnMoKTsKKworCS8vIERlZmluZSB3aGF0IHRvIGRvIHdpdGggYW55IG9wZW4g
ZGF0YWJhc2UgY29ubmVjdGlvbnMuIEJ5IGRlZmF1bHQgd2Ugc3RvcCB0aGVtIGFuZCB0ZXJtaW5h
dGUgdGhlIGRhdGFiYXNlIHRocmVhZC4KKwlEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSA9
IERhdGFiYXNlUG9saWN5U3RvcDsKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAvLyBJZiB3
ZSdyZSBuYXZpZ2F0aW5nIHRoZSBoaXN0b3J5IHZpYSBhIGZyYWdtZW50IG9uIHRoZSBzYW1lIGRv
Y3VtZW50LCB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIHN0b3AgZGF0YWJhc2VzLgorICAgIGNvbnN0
IEtVUkwmIGN1cnJlbnRVUkwgPSBtX21haW5GcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIGNv
bnN0IEtVUkwmIG5ld1VSTCA9IGl0ZW0tPnVybCgpOworCisgICAgaWYgKG5ld1VSTC5oYXNSZWYo
KSAmJiBlcXVhbElnbm9yaW5nUmVmKGN1cnJlbnRVUkwsIG5ld1VSTCkpCisgICAgICAgIGRhdGFi
YXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lDb250aW51ZTsKKyNlbmRpZgorICAgIG1fbWFpbkZy
YW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0YWJhc2VQb2xpY3kpOwogICAgIG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS0+Z29Ub0l0ZW0oaXRlbSwgdHlwZSk7CiB9CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDQ0MzIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTEgQEAKKzIwMDktMDYtMDEgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEZpeCBhIGJ1ZyB0aGF0IGNhdXNlcyBkYXRhYmFzZSB0cmFuc2FjdGlvbnMg
dG8gZmFpbCBpZiBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0byBhIGhhc2ggZnJhZ21lbnQgb2YgdGhl
IHNhbWUgZG9jdW1lbnQgaXMgbWFkZSB3aGlsZSByZXNvdXJjZXMgKGUuZy4gYW4gWEhSKSBhcmUg
bG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NzEwCisKKyAgICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1s
OiBBZGRlZC4KKwogMjAwOS0wNi0wMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLiAgTGFuZGVkIGJ5IEFkYW0gQmFy
dGguCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdp
dGgteGhyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
aGFzaC1jaGFuZ2Utd2l0aC14aHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKK0NoYW5naW5nIHRoZSBoYXNoIHRvIGNyZWF0ZSBoaXN0b3J5IGVudHJpZXMuCitEYiBp
cyB3YXJtZWQgdXAKK1Rlc3QgQ29tcGxldGUsIFNVQ0NFU1MKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHItZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE0MSBAQAorPGh0bWw+IAorPGhlYWQ+IAorPHRpdGxlPkhhc2ggQ2hh
bmdlIHdpdGggYW4gT3BlbiBYSFIgc2hvdWxkIG5vdCBzdG9wIGRhdGFiYXNlIHRyYW5zYWN0aW9u
czwvdGl0bGU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gCisgCit2YXIgREJf
VVBEQVRFX0lOVEVSVkFMID0gMTAwOwordmFyIFNFTkRfWEhSX0lOVEVSVkFMID0gMTAwOwordmFy
IEJBQ0tfSU5URVJWQUwgPSAxMDA7Cit2YXIgQ1JFQVRFX0hFQUxUSF9UQUJMRSA9ICdDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBoZWFsdGggKGtleSBWQVJDSEFSKDE2KSBQUklNQVJZIEtFWSk7
JzsKK3ZhciBVUERBVEVfREFUQSA9ICdSRVBMQUNFIElOVE8gaGVhbHRoIFZBTFVFUygiaGVhbHRo
LWNoZWNrLWtleSIpOyc7CisgCit2YXIgZGIgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCdidWcyNTcx
MCcsICcxLjAnLCAnTGF5b3V0VGVzdCBmb3IgYnVnIDI1NzEwJywgMTAyNDAwKTsKK3ZhciBiYWNr
SXRlcmF0aW9uczsKK3ZhciBtc2dEaXY7Cit2YXIgeGhyRmN0SW50ZXJ2YWxJZDsKK3ZhciBiYWNr
RmN0SW50ZXJ2YWxJZDsKK3ZhciBzdWNjZXNzQ2hlY2tJbnRlcnZhbElkOwordmFyIGRiRmN0SW50
ZXJ2YWxJZDsKK3ZhciBzdWNjZXNzZXM7Cit2YXIgZGF0YWJhc2VVcGRhdGVzOwordmFyIHN0b3Bw
ZWRJbnRlcnZhbHM7CisgCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciBuZXdNc2cgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBuZXdNc2cuaW5uZXJUZXh0ID0gbXNn
OworICAgIG1zZ0Rpdi5hcHBlbmRDaGlsZChuZXdNc2cpOworfQorCitmdW5jdGlvbiBzdG9wSW50
ZXJ2YWxzKCkKK3sKKyAgICBzdG9wcGVkSW50ZXJ2YWxzID0gdHJ1ZTsKKyAgICB3aW5kb3cuY2xl
YXJJbnRlcnZhbChkYkZjdEludGVydmFsSWQpOworICAgIHdpbmRvdy5jbGVhckludGVydmFsKHho
ckZjdEludGVydmFsSWQpOworICAgIHdpbmRvdy5jbGVhckludGVydmFsKGJhY2tGY3RJbnRlcnZh
bElkKTsKK30KKworZnVuY3Rpb24gc3RvcFRlc3QobWVzc2FnZSkKK3sKKyAgICBpZiAoIXN0b3Bw
ZWRJbnRlcnZhbHMpCisgICAgICAgIHN0b3BJbnRlcnZhbHMoKTsKKworICAgIGxvZyhtZXNzYWdl
KTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKyAgICAKK2Z1bmN0aW9uIHVwZGF0ZURh
dGFiYXNlKCkKK3sKKyAgICBkYXRhYmFzZVVwZGF0ZXMrKzsgIAorICAgIGRiLnRyYW5zYWN0aW9u
KGZ1bmN0aW9uKHRyYW5zYWN0aW9uKSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwo
VVBEQVRFX0RBVEEsIFtdLCBmdW5jdGlvbigpIHt9LCBlcnJvckhhbmRsZXIpOworICAgIH0sIGVy
cm9ySGFuZGxlciwgZnVuY3Rpb24oKSB7CisgICAgICAgIHN1Y2Nlc3NlcysrOworICAgIH0pOwor
fQorCitmdW5jdGlvbiBjaGVja0ZvclN1Y2Nlc3MoKQoreworICAgIGlmIChzdWNjZXNzZXMgPT0g
ZGF0YWJhc2VVcGRhdGVzKSB7CisgICAgICAgIHN0b3BUZXN0KCdUZXN0IENvbXBsZXRlLCBTVUND
RVNTJyk7CisgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHN1Y2Nlc3NDaGVja0ludGVydmFs
SWQpOworICAgIH0KK30KKyAKK2Z1bmN0aW9uIGVycm9ySGFuZGxlcih0eCwgZXJyb3IpCit7Cisg
ICAgbG9nKCdEQiBlcnJvciwgY29kZTogJyArIGVycm9yLmNvZGUgKyAnLCBtc2c6ICcgKyBlcnJv
ci5tZXNzYWdlKTsKKyAgICBzdG9wVGVzdCgnVGVzdCBDb21wbGV0ZSwgRkFJTEVEJyk7Cit9Cisg
CitmdW5jdGlvbiBzZW5kWGhyKCkKK3sKKyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICB4aHIub3BlbignR0VUJywgbG9jYXRpb24uaHJlZiwgdHJ1ZSk7CisgICAgeGhyLnNlbmQo
JycpOworfQorIAorZnVuY3Rpb24gaW52b2tlQmFjaygpCit7CisgICAgYmFja0l0ZXJhdGlvbnMt
LTsKKyAgICBpZiAoYmFja0l0ZXJhdGlvbnMpIHsKKyAgICAgICAgaGlzdG9yeS5iYWNrKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc3RvcEludGVydmFscygpOworICAgICAgICAvLyBBbGxvdyBh
IGxpdHRsZSB0aW1lIGZvciBhbGwgdGhlIGRhdGFiYXNlIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0
ZSBub3cgd2UndmUgc3RvcHBlZCBtYWtpbmcgdGhlbS4KKyAgICAgICAgc3VjY2Vzc0NoZWNrSW50
ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChjaGVja0ZvclN1Y2Nlc3MsIDI1MCk7CisgICAg
ICAgIC8vIElmIHdlIGRvbid0IGZpbmlzaCBiZWZvcmUgdGhpcyB0aW1lLCB0aGVuIHdlIGNvbnNp
ZGVyIHRoZSB0ZXN0IGZhaWxlZC4KKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHN0b3BUZXN0KCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHRvIGNvbXBs
ZXRlLiBGQUlMRUQnKTsgfSwgMjAwMDApOworICAgICAgICAKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgCisgICAgbXNnRGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zZ3MnKTsKKworICAgIG1zZ0Rpdi5pbm5lckhUTUwgPSAn
JzsKKyAgICBiYWNrSXRlcmF0aW9ucyA9IDEwOworICAgIGNvbnNlY3V0aXZlRmFpbHVyZXMgPSAw
OworICAgIHN1Y2Nlc3NlcyA9IDA7CisgICAgZGF0YWJhc2VVcGRhdGVzID0gMDsKKyAgICBzdG9w
cGVkSW50ZXJ2YWxzID0gZmFsc2U7CisKKyAgICAvLyBDcmVhdGUgc29tZSBoYXNoZXMgc28gd2Ug
Y2FuIGNhbGwgaGlzdG9yeS5iYWNrKCkuCisgICAgbG9nKCdDaGFuZ2luZyB0aGUgaGFzaCB0byBj
cmVhdGUgaGlzdG9yeSBlbnRyaWVzLicpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFja0l0
ZXJhdGlvbnM7IGkrKykgeworICAgICAgICBsb2NhdGlvbi5oYXNoID0gaTsKKyAgICB9CisKKyAg
ICAvLyBJbml0IHRoZSBkYXRhYmFzZS4KKyAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0cmFu
c2FjdGlvbikgeworICAgICAgICB0cmFuc2FjdGlvbi5leGVjdXRlU3FsKENSRUFURV9IRUFMVEhf
VEFCTEUsIFtdLCBmdW5jdGlvbigpIHt9LCBlcnJvckhhbmRsZXIpOworICAgIH0sIGVycm9ySGFu
ZGxlciwgZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEdpdmUgYSBsaXR0bGUgZm9yIHRoZSBkYXRh
YmFzZSB0byAnd2FybSB1cCcgYmVmb3JlIG1ha2luZyB4aHIgcmVxdWVzdHMKKyAgICAgICAgLy8g
YW5kIGNhbGxpbmcgaGlzdG9yeS5iYWNrKCkuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgbG9nKCdEYiBpcyB3YXJtZWQgdXAnKTsKKworICAgICAg
ICAgICAgLy8gTk9URTogSWYgd2UgZG9uJ3QgbWFrZSBhbnkgeGhyIHJlcXVlc3RzLCB0aGVuIHRo
ZSB0ZXN0CisgICAgICAgICAgICAvLyBzdWNjZXNzZnVsbHkgcGFzc2VzIChjb21tZW50IHRoaXMg
bGluZSBvdXQpLgorICAgICAgICAgICAgeGhyRmN0SW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRl
cnZhbChzZW5kWGhyLCBTRU5EX1hIUl9JTlRFUlZBTCk7CisgICAgICAgICAgICBiYWNrRmN0SW50
ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChpbnZva2VCYWNrLCBCQUNLX0lOVEVSVkFMKTsK
KyAgICAgICAgICAgIGRiRmN0SW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVE
YXRhYmFzZSwgREJfVVBEQVRFX0lOVEVSVkFMKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsK
K30KKzwvc2NyaXB0PiAKKzwvaGVhZD4gCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+IAorPGRp
diBpZD0ibXNncyI+PC9kaXY+IAorPC9ib2R5PiAKKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>
<flag name="review"
          id="15671"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>