<?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>3233</bug_id>
          
          <creation_ts>2005-06-01 14:44:13 -0700</creation_ts>
          <short_desc>CSS2: Web Kit does not support the :lang pseudo-class</short_desc>
          <delta_ts>2006-06-15 19:25:19 -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>CSS</component>
          <version>412</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>3234</blocked>
    
    <blocked>9454</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Nicholas Shanks">nickshanks</assigned_to>
          <cc>ap</cc>
    
    <cc>foxden</cc>
    
    <cc>nickshanks</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10419</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-06-01 14:44:13 -0700</bug_when>
    <thetext>* STEPS TO REPRODUCE
1. 10.3.3, Safari 1.2.1
2. Go to http://www.w3.org/International/tests/sec-css-lang-1.html

* RESULTS
Safari fails the test.

* NOTES
There are questionable results on some of the other CSS international tests, but no outright failures:
http://www.w3.org/International/tests/sec-css-lang-2.html
http://www.w3.org/International/tests/sec-css-lang-3.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10420</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-06-01 14:44:51 -0700</bug_when>
    <thetext>Apple Bug: &lt;a href=&quot;rdar://3611451&quot;&gt;rdar://3611451&lt;/a&gt;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11923</commentid>
    <comment_count>2</comment_count>
      <attachid>2340</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-06-14 15:43:40 -0700</bug_when>
    <thetext>Created attachment 2340
:lang() support

Regression tests are CSS3 selector tests #22 and #67:
http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-22.html

http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-67.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11926</commentid>
    <comment_count>3</comment_count>
      <attachid>2342</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-06-14 16:44:09 -0700</bug_when>
    <thetext>Created attachment 2342
patch rev 1.1

DOMStrings changed to AtomicStrings, QStrings left unchanged due to use of
QString::startsWith() which has no AtomicString/DOMString equivalent. Added
initialization/deletion to constructor and destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11927</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-06-14 16:57:33 -0700</bug_when>
    <thetext>delete is for objects allocated via new.  You don&apos;t need it.  You can also use const AtomicString&amp; to hold 
the result from getAttribute.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12116</commentid>
    <comment_count>5</comment_count>
      <attachid>2361</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-06-15 07:35:08 -0700</bug_when>
    <thetext>Created attachment 2361
patch rev 1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12117</commentid>
    <comment_count>6</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-06-15 08:59:08 -0700</bug_when>
    <thetext>This patch works to a fashion but isn&apos;t very good. Basically it emulates *:[lang^=&quot;…&quot;] which is not what we 
want - language is not inherited and :lang(e) will match both lang=&quot;en&quot; and lang=&quot;es&quot; attributes. It doesn&apos;t 
support xml:lang=&quot;…&quot; either. I am working on a new patch to implement Darin&apos;s suggestion of adding 
language to the RenderStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12141</commentid>
    <comment_count>7</comment_count>
    <who name="Ben Gertzfield">foxden</who>
    <bug_when>2005-06-15 10:42:21 -0700</bug_when>
    <thetext>Here&apos;s another test case on Wikipedia that uses lang=&quot;zh&quot;, lang=&quot;zh-cn&quot;, lang=&quot;zh-tw&quot;, lang=&quot;ja&quot;, 
lang=&quot;ko&quot; to illustrate glyph variants when browsers correctly switch fonts based on the lang tag:

http://en.wikipedia.org/wiki/Han_unification#Check_your_browser

In Mozilla Firefox 1.0.3 on Mac OS X 10.4.1, each line of the table in that section is rendered differently.  

In Safari 2.0 on OS X 10.4.1, each line is rendered identically, depending on your language setting.  By 
default, the Japanese style of glyph is used for every line of the table; if your language is set to simplified 
Chinese, you get the simplified Chinese glyphs in every line of the table, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12246</commentid>
    <comment_count>8</comment_count>
      <attachid>2388</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-06-16 09:49:53 -0700</bug_when>
    <thetext>Created attachment 2388
patch rev 2.0 alpha 1

alpha patch, not tested (and doesn&apos;t function well). Posted here for
comments/feedback. The main part of this is adding the lang attribute to the
RenderStyle for he element, so that it gets inherited by the element&apos;s
children.

This version also fixes the problem with :lang(e) matching both en and es by
stealing the implementation for the [attr|=&quot;val&quot;] hyphenated attribute selector
instead of using QString::startsWith(). Might now be possible to eliminate the
QStrings, not sure yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12516</commentid>
    <comment_count>9</comment_count>
    <who name="Ben Gertzfield">foxden</who>
    <bug_when>2005-06-17 20:03:35 -0700</bug_when>
    <thetext>Well, the 2.0 alpha 1 patch is definitely alpha. :)  I did my first compile of WebKit, did run-safari, and went 
to this bug&apos;s page.  I got a non-styled page, and when I clicked on the link to http://www.w3.org/
International/tests/sec-css-lang-1.html Safari crashed.

I may use rev 1.2 as a base to try to implement the font hints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24625</commentid>
    <comment_count>10</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2005-11-27 05:52:05 -0800</bug_when>
    <thetext>Since the patch is partially based on my patch for KHTML, I should note that 
it has been updated since to handle the problem with &quot;-&quot; and with case.  
There is also a decision to make with case-insensitive matching since KHTML 
now follows the spec but Mozilla does not. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26967</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-28 02:00:29 -0800</bug_when>
    <thetext>I was doing similar work the other day for the nth-child() and other nth-* selectors (which are also 
recorded in bugzill somewhere).  The parser obviously needs to be augmented to handle these other types 
of selector functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26970</commentid>
    <comment_count>12</comment_count>
      <attachid>2388</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-28 02:06:59 -0800</bug_when>
    <thetext>Comment on attachment 2388
patch rev 2.0 alpha 1

In general, I think this patch is good.  A couple comments:

1. I think that your additional &quot;string-arg&quot; member variable for CSSSelector
shoudl either be part of a union with simpleSelector, or should be part of a
subclass of CSSSelector.  Either way, we should only pay 4bytes for
simpleSelector and string_arg (bad name, btw) not 8, like we currently are.

Second, I think that NOTFUNCTION can just be replaced by &quot;not(&quot; in the actual
grammar if you like.

No need to add any //kdDebug lines, we&apos;re removing those as we go.

When we go about adding nth-* selectors, I don&apos;t think we&apos;ll keep the string
value in CSSSelector (we might).  We&apos;ll probably have bison do the actual an+b
parsing for us, and store a,b on CSSSelector (or more likely a subclass) as
floats perhaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26971</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-28 02:07:43 -0800</bug_when>
    <thetext>Nick are you still intersted in finishing this one off?  It&apos;s certainly very close to being done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33637</commentid>
    <comment_count>14</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-02-21 13:47:07 -0800</bug_when>
    <thetext>Eric: no, sorry I have been off working on my own things for six months. If you want to make the changes you suggested yourself and check the patch in, assign it to yourself, I probably won&apos;t get on to it in a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44654</commentid>
    <comment_count>15</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-04 11:42:34 -0700</bug_when>
    <thetext>Replacing the NOTFUNCTION token results in this:

    | &apos;:&apos; &apos;n&apos; &apos;o&apos; &apos;t&apos; &apos;(&apos; maybe_space simple_selector &apos;)&apos; {
        CSSParser* p = static_cast&lt;CSSParser*&gt;(parser);
        $$ = p-&gt;createFloatingSelector();
        $$-&gt;match = CSSSelector::PseudoClass;
        $$-&gt;simpleSelector = p-&gt;sinkFloatingSelector($7);
        $$-&gt;value = atomicString(&quot;not(&quot;);
    }

and means that it can&apos;t be used for anything else one day (CSS4?). I suggest leaving the token in the lexicon but calling it SIMPLEFUNCTION instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44657</commentid>
    <comment_count>16</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-04 11:47:15 -0700</bug_when>
    <thetext>OK, scratch that, I didn&apos;t think it through :-)
The tokenizer cannot distinguish between my concepts of simple and not simple functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44796</commentid>
    <comment_count>17</comment_count>
      <attachid>8719</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-05 14:55:21 -0700</bug_when>
    <thetext>Created attachment 8719
patch rev 1.3

This is an update of 1.2 for the current tree and file layout. It doesn&apos;t make any changes to the layout engine and adds four bytes to each CSSSelector, but compiles and runs and doesn&apos;t screw anything up :-). Will update with more sophisticated patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45760</commentid>
    <comment_count>18</comment_count>
      <attachid>8856</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-15 08:49:52 -0700</bug_when>
    <thetext>Created attachment 8856
Patch rev 1.4

I have tried to address Eric&apos;s first concern, I really have, but due to the fact that AtomicString (and DeprecatedString) both have constructors and destructors, they are not permitted within a union. Everything else is either fixed or open to suggestion and later adjustment (like the variable name).

I am submitting this as the final patch offering for this bug. It really needs to be committed and into the tree as has been here for 12 months now.

Note that this patch is less ambitious than I first wanted: it does not attempt to inherit the language from parent elements nor the HTTP headers, as that was causing instability. I will open a separate bug to track that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45765</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-06-15 09:44:59 -0700</bug_when>
    <thetext>Seems fine.  Hyatt should peek at this one before it&apos;s landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45817</commentid>
    <comment_count>20</comment_count>
      <attachid>8856</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-15 11:24:12 -0700</bug_when>
    <thetext>Comment on attachment 8856
Patch rev 1.4

r=me.  Make sure we have bugs covering the remaining issues with :lang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45850</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-15 19:25:19 -0700</bug_when>
    <thetext>Landed as r14879.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2340</attachid>
            <date>2005-06-14 15:43:40 -0700</date>
            <delta_ts>2005-06-14 16:44:09 -0700</delta_ts>
            <desc>:lang() support</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4972</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2Nzcy9jc3NfYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19iYXNlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xNQpkaWZmIC11IC1wIC1yMS4xNSBjc3NfYmFzZS5jcHAKLS0tIGNzc19iYXNlLmNwcAkyMDA1
LzA2LzEyIDA0OjA3OjMwCTEuMTUKKysrIGNzc19iYXNlLmNwcAkyMDA1LzA2LzE0IDIyOjQwOjMw
CkBAIC0yMjgsNyArMjI4LDggQEAgYm9vbCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKCBjb25z
dCBDUwogCWlmICggc2VsMS0+dGFnICE9IHNlbDItPnRhZyB8fCBzZWwxLT5hdHRyICE9IHNlbDIt
PmF0dHIgfHwKIAkgICAgIHNlbDEtPnJlbGF0aW9uICE9IHNlbDItPnJlbGF0aW9uIHx8IHNlbDEt
Pm1hdGNoICE9IHNlbDItPm1hdGNoIHx8CiAJICAgICBzZWwxLT52YWx1ZSAhPSBzZWwyLT52YWx1
ZSB8fAotICAgICAgICAgICAgIHNlbDEtPnBzZXVkb1R5cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBl
KCkpCisgICAgICAgICAgICAgc2VsMS0+cHNldWRvVHlwZSgpICE9IHNlbDItPnBzZXVkb1R5cGUo
KSB8fAorICAgICAgICAgICAgIHNlbDEtPnN0cmluZ19hcmcgIT0gc2VsMi0+c3RyaW5nX2FyZykK
IAkgICAgcmV0dXJuIGZhbHNlOwogCXNlbDEgPSBzZWwxLT50YWdIaXN0b3J5OwogCXNlbDIgPSBz
ZWwyLT50YWdIaXN0b3J5OwpJbmRleDoga2h0bWwvY3NzL2Nzc19iYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19iYXNlLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtdSAtcCAtcjEuMTIgY3NzX2Jhc2UuaAotLS0gY3NzX2Jh
c2UuaAkyMDA1LzA2LzEyIDA0OjA3OjMwCTEuMTIKKysrIGNzc19iYXNlLmgJMjAwNS8wNi8xNCAy
Mjo0MDozMApAQCAtMTcxLDYgKzE3MSw3IEBAIG5hbWVzcGFjZSBET00gewogCUNTU1NlbGVjdG9y
KiB0YWdIaXN0b3J5OwogICAgICAgICBDU1NTZWxlY3Rvciogc2ltcGxlU2VsZWN0b3I7IC8vIFVz
ZWQgZm9yIDpub3QuCiAgICAgICAgIENTU1NlbGVjdG9yKiBuZXh0U2VsZWN0b3I7IC8vIHVzZWQg
Zm9yICwtY2hhaW5lZCBzZWxlY3RvcnMKKyAgICBET006OkRPTVN0cmluZyBzdHJpbmdfYXJnOyAv
LyBVc2VkIGJ5IDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgogCVFfVUlOVDMyICAgICBhdHRy
OwogCVFfVUlOVDMyICAgICB0YWc7CiAKSW5kZXg6IGtodG1sL2Nzcy9jc3NwYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjk4CmRpZmYgLXUgLXAgLXIxLjk4IGNzc3BhcnNl
ci5jcHAKLS0tIGNzc3BhcnNlci5jcHAJMjAwNS8wNS8xMSAwMjoxMDowOQkxLjk4CisrKyBjc3Nw
YXJzZXIuY3BwCTIwMDUvMDYvMTQgMjI6NDA6MzMKQEAgLTI0NDAsNiArMjQ0MCw3IEBAIGludCBE
T006OkNTU1BhcnNlcjo6bGV4KCB2b2lkICpfeXlsdmFsICkKICAgICBjYXNlIERJTUVOOgogICAg
IGNhc2UgVU5JQ09ERVJBTkdFOgogICAgIGNhc2UgRlVOQ1RJT046CisgICAgY2FzZSBOT1RGVU5D
VElPTjoKIAl5eWx2YWwtPnN0cmluZy5zdHJpbmcgPSB0OwogCXl5bHZhbC0+c3RyaW5nLmxlbmd0
aCA9IGxlbmd0aDsKIAlicmVhazsKSW5kZXg6IGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTg3CmRpZmYgLXUgLXAgLXIx
LjE4NyBjc3NzdHlsZXNlbGVjdG9yLmNwcAotLS0gY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS8w
Ni8xMiAwNDowNzozMAkxLjE4NworKysgY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS8wNi8xNCAy
Mjo0MDozOApAQCAtMTMzOSw2ICsxMzM5LDE0IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hl
Y2tPbmVTZWxlY3RvcigKICAgICAgICAgICAgICAgICBpZiAoZSA9PSBlLT5nZXREb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9MYW5nOiB7CisgCSAgICAgICAgICAgICBET01TdHJpbmcgdmFsdWUgPSBlLT5nZXRBdHRyaWJ1
dGUoQVRUUl9MQU5HKTsKKyAJICAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkgcmV0dXJu
IGZhbHNlOworIAkgICAgICAgICAgICAgUVN0cmluZyBsYW5nQXR0ciA9IHZhbHVlLnN0cmluZygp
OworIAkgICAgICAgICAgICAgUVN0cmluZyBsYW5nU2VsID0gc2VsLT5zdHJpbmdfYXJnLnN0cmlu
ZygpOworLy8gICAgICAgICAgICAgICBrZERlYnVnKDYwODApIDw8ICI6bGFuZyAiIDw8IGxhbmdB
dHRyIDw8ICI9IiA8PCBsYW5nU2VsIDw8ICI/IiA8PCBlbmRsOworIAkgICAgICAgICAgICAgcmV0
dXJuIGxhbmdBdHRyLnN0YXJ0c1dpdGgobGFuZ1NlbCk7CisgCSAgICAgICAgfQogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90OiB7CiAgICAgICAgICAgICAgICAgLy8gY2hl
Y2sgdGhlIHNpbXBsZSBzZWxlY3RvcgogICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3Iq
IHN1YlNlbCA9IHNlbC0+c2ltcGxlU2VsZWN0b3I7IHN1YlNlbDsKQEAgLTEzNTIsOCArMTM2MCw2
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYW5nOgotICAgICAgICAgICAgICAgIC8qIG5vdCBz
dXBwb3J0ZWQgZm9yIG5vdyAqLwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
T3RoZXI6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IGtodG1s
L2Nzcy9wYXJzZXIueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRt
bC9jc3MvcGFyc2VyLnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtcCAtcjEu
MzggcGFyc2VyLnkKLS0tIHBhcnNlci55CTIwMDUvMDYvMTIgMDQ6MDc6MzAJMS4zOAorKysgcGFy
c2VyLnkJMjAwNS8wNi8xNCAyMjo0MDozOQpAQCAtMjE0LDYgKzIxNCw3IEBAIHN0YXRpYyBpbnQg
Y3NzeXlsZXgoIFlZU1RZUEUgKnl5bHZhbCApIHsKIAogJXRva2VuIDxzdHJpbmc+IFVSSQogJXRv
a2VuIDxzdHJpbmc+IEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KIAogJXRv
a2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQogCkBAIC04MzQsNyArODM1LDE1IEBAIHBzZXVkbzoK
ICAgICAgICAgJDMubG93ZXIoKTsKICAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQz
KTsKICAgICB9Ci0gICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9y
IG1heWJlX3NwYWNlICcpJyB7CisgICAgLy8gdXNlZCBieSA6bGFuZworICAgIHwgJzonIEZVTkNU
SU9OIElERU5UICcpJyB7CisgICAgICAgICQkID0gbmV3IENTU1NlbGVjdG9yKCk7CisgICAgICAg
ICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAgICAgICAgJCQtPnN0cmlu
Z19hcmcgPSBhdG9taWNTdHJpbmcoJDMpOworICAgICAgICAkJC0+dmFsdWUgPSBhdG9taWNTdHJp
bmcoJDIpOworICAgIH0KKyAgICAvLyB1c2VkIG9ubHkgYnkgOm5vdAorICAgIHwgJzonIE5PVEZV
TkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgewogICAg
ICAgICAkJCA9IG5ldyBDU1NTZWxlY3RvcigpOwogICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3M7CiAgICAgICAgICQkLT5zaW1wbGVTZWxlY3RvciA9ICQ0OwpJbmRl
eDoga2h0bWwvY3NzL3Rva2VuaXplci5mbGV4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2todG1sL2Nzcy90b2tlbml6ZXIuZmxleCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS41CmRpZmYgLXUgLXAgLXIxLjUgdG9rZW5pemVyLmZsZXgKLS0tIHRva2VuaXplci5mbGV4CTIw
MDQvMDUvMjcgMjM6MDU6MTUJMS41CisrKyB0b2tlbml6ZXIuZmxleAkyMDA1LzA2LzE0IDIyOjQw
OjM5CkBAIC03Miw2ICs3Miw3IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9
fHtofSgKIHtudW19JSsgICAgICAgICAgICAgICAgIHt5eVRvayA9IFBFUkNFTlRBR0U7IHJldHVy
biB5eVRvazt9CiB7bnVtfSAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBOVU1CRVI7IHJldHVy
biB5eVRvazt9CiAKKyJub3QoIiAgICAgICAgICAgICAgICAgIHt5eVRvayA9IE5PVEZVTkNUSU9O
OyByZXR1cm4geXlUb2s7fQogInVybCgie3d9e3N0cmluZ317d30iKSIge3l5VG9rID0gVVJJOyBy
ZXR1cm4geXlUb2s7fQogInVybCgie3d9e3VybH17d30iKSIgICAge3l5VG9rID0gVVJJOyByZXR1
cm4geXlUb2s7fQoge2lkZW50fSIoIiAgICAgICAgICAgICAge3l5VG9rID0gRlVOQ1RJT047IHJl
dHVybiB5eVRvazt9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2342</attachid>
            <date>2005-06-14 16:44:09 -0700</date>
            <delta_ts>2005-06-15 07:35:08 -0700</delta_ts>
            <desc>patch rev 1.1</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>5705</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">PyBraHRtbC8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvZmFzdC9zZWxlY3RvcnMvMTU5LWV4cGVj
dGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L3NlbGVjdG9ycy8xNzdhLWV4cGVjdGVkLnR4dAo/
IGxheW91dC10ZXN0cy9mYXN0L3NlbGVjdG9ycy8xNzdiLWV4cGVjdGVkLnR4dApJbmRleDoga2h0
bWwvY3NzL2Nzc19iYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9jc3MvY3NzX2Jhc2UuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1CmRpZmYg
LXUgLXAgLXIxLjE1IGNzc19iYXNlLmNwcAotLS0gY3NzX2Jhc2UuY3BwCTIwMDUvMDYvMTIgMDQ6
MDc6MzAJMS4xNQorKysgY3NzX2Jhc2UuY3BwCTIwMDUvMDYvMTQgMjM6Mzg6MzcKQEAgLTIyOCw3
ICsyMjgsOCBAQCBib29sIENTU1NlbGVjdG9yOjpvcGVyYXRvciA9PSAoIGNvbnN0IENTCiAJaWYg
KCBzZWwxLT50YWcgIT0gc2VsMi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fAog
CSAgICAgc2VsMS0+cmVsYXRpb24gIT0gc2VsMi0+cmVsYXRpb24gfHwgc2VsMS0+bWF0Y2ggIT0g
c2VsMi0+bWF0Y2ggfHwKIAkgICAgIHNlbDEtPnZhbHVlICE9IHNlbDItPnZhbHVlIHx8Ci0gICAg
ICAgICAgICAgc2VsMS0+cHNldWRvVHlwZSgpICE9IHNlbDItPnBzZXVkb1R5cGUoKSkKKyAgICAg
ICAgICAgICBzZWwxLT5wc2V1ZG9UeXBlKCkgIT0gc2VsMi0+cHNldWRvVHlwZSgpIHx8CisgICAg
ICAgICAgICAgc2VsMS0+c3RyaW5nX2FyZyAhPSBzZWwyLT5zdHJpbmdfYXJnKQogCSAgICByZXR1
cm4gZmFsc2U7CiAJc2VsMSA9IHNlbDEtPnRhZ0hpc3Rvcnk7CiAJc2VsMiA9IHNlbDItPnRhZ0hp
c3Rvcnk7CkluZGV4OiBraHRtbC9jc3MvY3NzX2Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3NzX2Jhc2UuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMgpkaWZmIC11IC1wIC1yMS4xMiBjc3NfYmFzZS5oCi0tLSBjc3NfYmFzZS5oCTIwMDUv
MDYvMTIgMDQ6MDc6MzAJMS4xMgorKysgY3NzX2Jhc2UuaAkyMDA1LzA2LzE0IDIzOjM4OjM4CkBA
IC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBET00gewogICAgIHsKICAgICBwdWJsaWM6CiAJQ1NT
U2VsZWN0b3IoKQotCSAgICA6IHRhZ0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0
U2VsZWN0b3IoMCksIGF0dHIoMCksIHRhZyhhbnlRTmFtZSksCisJICAgIDogdGFnSGlzdG9yeSgw
KSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgc3RyaW5nX2FyZygwKSwgYXR0
cigwKSwgdGFnKGFueVFOYW1lKSwKICAgICAgICAgICAgICAgcmVsYXRpb24oIERlc2NlbmRhbnQg
KSwgbWF0Y2goIE5vbmUgKSwKICAgICAgICAgICAgICAgcHNldWRvSWQoIDAgKSwgX3BzZXVkb1R5
cGUoUHNldWRvTm90UGFyc2VkKQogICAgICAgICB7fQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3Bh
Y2UgRE9NIHsKIAkgICAgZGVsZXRlIHRhZ0hpc3Rvcnk7CiAgICAgICAgICAgICBkZWxldGUgc2lt
cGxlU2VsZWN0b3I7CiAgICAgICAgICAgICBkZWxldGUgbmV4dFNlbGVjdG9yOworICAgICAgICBk
ZWxldGUgc3RyaW5nX2FyZzsKIAl9CiAKICAgICAgICAgTUFJTl9USFJFQURfQUxMT0NBVEVEOwpA
QCAtMTcxLDYgKzE3Miw3IEBAIG5hbWVzcGFjZSBET00gewogCUNTU1NlbGVjdG9yKiB0YWdIaXN0
b3J5OwogICAgICAgICBDU1NTZWxlY3Rvciogc2ltcGxlU2VsZWN0b3I7IC8vIFVzZWQgZm9yIDpu
b3QuCiAgICAgICAgIENTU1NlbGVjdG9yKiBuZXh0U2VsZWN0b3I7IC8vIHVzZWQgZm9yICwtY2hh
aW5lZCBzZWxlY3RvcnMKKyAgICBBdG9taWNTdHJpbmcgc3RyaW5nX2FyZzsgLy8gVXNlZCBieSA6
Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKIAlRX1VJTlQzMiAgICAgYXR0cjsKIAlRX1VJTlQz
MiAgICAgdGFnOwogCkluZGV4OiBraHRtbC9jc3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3NzcGFyc2VyLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS45OApkaWZmIC11IC1wIC1yMS45OCBjc3NwYXJzZXIuY3BwCi0tLSBj
c3NwYXJzZXIuY3BwCTIwMDUvMDUvMTEgMDI6MTA6MDkJMS45OAorKysgY3NzcGFyc2VyLmNwcAky
MDA1LzA2LzE0IDIzOjM4OjQxCkBAIC0yNDQwLDYgKzI0NDAsNyBAQCBpbnQgRE9NOjpDU1NQYXJz
ZXI6OmxleCggdm9pZCAqX3l5bHZhbCApCiAgICAgY2FzZSBESU1FTjoKICAgICBjYXNlIFVOSUNP
REVSQU5HRToKICAgICBjYXNlIEZVTkNUSU9OOgorICAgIGNhc2UgTk9URlVOQ1RJT046CiAJeXls
dmFsLT5zdHJpbmcuc3RyaW5nID0gdDsKIAl5eWx2YWwtPnN0cmluZy5sZW5ndGggPSBsZW5ndGg7
CiAJYnJlYWs7CkluZGV4OiBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3Iu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4NwpkaWZmIC11IC1wIC1yMS4xODcgY3Nzc3R5
bGVzZWxlY3Rvci5jcHAKLS0tIGNzc3N0eWxlc2VsZWN0b3IuY3BwCTIwMDUvMDYvMTIgMDQ6MDc6
MzAJMS4xODcKKysrIGNzc3N0eWxlc2VsZWN0b3IuY3BwCTIwMDUvMDYvMTQgMjM6Mzg6NDYKQEAg
LTEzMzksNiArMTMzOSwxNCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0
b3IoCiAgICAgICAgICAgICAgICAgaWYgKGUgPT0gZS0+Z2V0RG9jdW1lbnQoKS0+ZG9jdW1lbnRF
bGVtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFuZzogewor
IAkgICAgICAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlID0gZS0+Z2V0QXR0cmlidXRlKEFUVFJf
TEFORyk7CisgCSAgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpIHJldHVybiBmYWxzZTsK
KyAJICAgICAgICAgICAgIFFTdHJpbmcgbGFuZ0F0dHIgPSB2YWx1ZS5zdHJpbmcoKTsKKyAJICAg
ICAgICAgICAgIFFTdHJpbmcgbGFuZ1NlbCA9IHNlbC0+c3RyaW5nX2FyZy5zdHJpbmcoKTsKKy8v
ICAgICAgICAgICAgICAga2REZWJ1Zyg2MDgwKSA8PCAiOmxhbmcgIiA8PCBsYW5nQXR0ciA8PCAi
PSIgPDwgbGFuZ1NlbCA8PCAiPyIgPDwgZW5kbDsKKyAJICAgICAgICAgICAgIHJldHVybiBsYW5n
QXR0ci5zdGFydHNXaXRoKGxhbmdTZWwpOworIAkgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb05vdDogewogICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBz
aW1wbGUgc2VsZWN0b3IKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJTZWwg
PSBzZWwtPnNpbXBsZVNlbGVjdG9yOyBzdWJTZWw7CkBAIC0xMzUyLDggKzEzNjAsNiBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvTGFuZzoKLSAgICAgICAgICAgICAgICAvKiBub3Qgc3VwcG9ydGVk
IGZvciBub3cgKi8KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb090aGVyOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4OiBraHRtbC9jc3MvcGFy
c2VyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL3Bh
cnNlci55LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXUgLXAgLXIxLjM4IHBhcnNl
ci55Ci0tLSBwYXJzZXIueQkyMDA1LzA2LzEyIDA0OjA3OjMwCTEuMzgKKysrIHBhcnNlci55CTIw
MDUvMDYvMTQgMjM6Mzg6NDcKQEAgLTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4
KCBZWVNUWVBFICp5eWx2YWwgKSB7CiAKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3Ry
aW5nPiBGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCiAKICV0b2tlbiA8c3Ry
aW5nPiBVTklDT0RFUkFOR0UKIApAQCAtODM0LDcgKzgzNSwxNSBAQCBwc2V1ZG86CiAgICAgICAg
ICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMyk7CiAgICAg
fQotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9z
cGFjZSAnKScgeworICAgIC8vIHVzZWQgYnkgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBJREVO
VCAnKScgeworICAgICAgICAkJCA9IG5ldyBDU1NTZWxlY3RvcigpOworICAgICAgICAkJC0+bWF0
Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5zdHJpbmdfYXJnID0g
YXRvbWljU3RyaW5nKCQzKTsKKyAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsK
KyAgICB9CisgICAgLy8gdXNlZCBvbmx5IGJ5IDpub3QKKyAgICB8ICc6JyBOT1RGVU5DVElPTiBt
YXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAgJCQg
PSBuZXcgQ1NTU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1hdGNoID0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzOwogICAgICAgICAkJC0+c2ltcGxlU2VsZWN0b3IgPSAkNDsKSW5kZXg6IGtodG1s
L2Nzcy90b2tlbml6ZXIuZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9jc3MvdG9rZW5pemVyLmZsZXgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZm
IC11IC1wIC1yMS41IHRva2VuaXplci5mbGV4Ci0tLSB0b2tlbml6ZXIuZmxleAkyMDA0LzA1LzI3
IDIzOjA1OjE1CTEuNQorKysgdG9rZW5pemVyLmZsZXgJMjAwNS8wNi8xNCAyMzozODo0NwpAQCAt
NzIsNiArNzIsNyBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiB7
bnVtfSUrICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQRVJDRU5UQUdFOyByZXR1cm4geXlUb2s7
fQoge251bX0gICAgICAgICAgICAgICAgICAge3l5VG9rID0gTlVNQkVSOyByZXR1cm4geXlUb2s7
fQogCisibm90KCIgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBOT1RGVU5DVElPTjsgcmV0dXJu
IHl5VG9rO30KICJ1cmwoInt3fXtzdHJpbmd9e3d9IikiIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5
VG9rO30KICJ1cmwoInt3fXt1cmx9e3d9IikiICAgIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5VG9r
O30KIHtpZGVudH0iKCIgICAgICAgICAgICAgIHt5eVRvayA9IEZVTkNUSU9OOyByZXR1cm4geXlU
b2s7fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2361</attachid>
            <date>2005-06-15 07:35:08 -0700</date>
            <delta_ts>2006-01-22 08:58:23 -0800</delta_ts>
            <desc>patch rev 1.2</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>5366</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2Nzcy9jc3NfYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19iYXNlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xNQpkaWZmIC11IC1wIC1yMS4xNSBjc3NfYmFzZS5jcHAKLS0tIGNzc19iYXNlLmNwcAkyMDA1
LzA2LzEyIDA0OjA3OjMwCTEuMTUKKysrIGNzc19iYXNlLmNwcAkyMDA1LzA2LzE1IDE0OjE4OjEw
CkBAIC0yMjgsNyArMjI4LDggQEAgYm9vbCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKCBjb25z
dCBDUwogCWlmICggc2VsMS0+dGFnICE9IHNlbDItPnRhZyB8fCBzZWwxLT5hdHRyICE9IHNlbDIt
PmF0dHIgfHwKIAkgICAgIHNlbDEtPnJlbGF0aW9uICE9IHNlbDItPnJlbGF0aW9uIHx8IHNlbDEt
Pm1hdGNoICE9IHNlbDItPm1hdGNoIHx8CiAJICAgICBzZWwxLT52YWx1ZSAhPSBzZWwyLT52YWx1
ZSB8fAotICAgICAgICAgICAgIHNlbDEtPnBzZXVkb1R5cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBl
KCkpCisgICAgICAgICAgICAgc2VsMS0+cHNldWRvVHlwZSgpICE9IHNlbDItPnBzZXVkb1R5cGUo
KSB8fAorICAgICAgICAgICAgIHNlbDEtPnN0cmluZ19hcmcgIT0gc2VsMi0+c3RyaW5nX2FyZykK
IAkgICAgcmV0dXJuIGZhbHNlOwogCXNlbDEgPSBzZWwxLT50YWdIaXN0b3J5OwogCXNlbDIgPSBz
ZWwyLT50YWdIaXN0b3J5OwpJbmRleDoga2h0bWwvY3NzL2Nzc19iYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19iYXNlLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtdSAtcCAtcjEuMTIgY3NzX2Jhc2UuaAotLS0gY3NzX2Jh
c2UuaAkyMDA1LzA2LzEyIDA0OjA3OjMwCTEuMTIKKysrIGNzc19iYXNlLmgJMjAwNS8wNi8xNSAx
NDoxODoxMQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgRE9NIHsKICAgICB7CiAgICAgcHVi
bGljOgogCUNTU1NlbGVjdG9yKCkKLQkgICAgOiB0YWdIaXN0b3J5KDApLCBzaW1wbGVTZWxlY3Rv
cigwKSwgbmV4dFNlbGVjdG9yKDApLCBhdHRyKDApLCB0YWcoYW55UU5hbWUpLAorCSAgICA6IHRh
Z0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0U2VsZWN0b3IoMCksIHN0cmluZ19h
cmcobnVsbEF0b20pLCBhdHRyKDApLCB0YWcoYW55UU5hbWUpLAogICAgICAgICAgICAgICByZWxh
dGlvbiggRGVzY2VuZGFudCApLCBtYXRjaCggTm9uZSApLAogICAgICAgICAgICAgICBwc2V1ZG9J
ZCggMCApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCiAgICAgICAgIHt9CkBAIC0xNzEs
NiArMTcxLDcgQEAgbmFtZXNwYWNlIERPTSB7CiAJQ1NTU2VsZWN0b3IqIHRhZ0hpc3Rvcnk7CiAg
ICAgICAgIENTU1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KICAg
ICAgICAgQ1NTU2VsZWN0b3IqIG5leHRTZWxlY3RvcjsgLy8gdXNlZCBmb3IgLC1jaGFpbmVkIHNl
bGVjdG9ycworICAgIEF0b21pY1N0cmluZyBzdHJpbmdfYXJnOyAvLyBVc2VkIGJ5IDpjb250YWlu
cywgOmxhbmcgYW5kIDpudGgtKgogCVFfVUlOVDMyICAgICBhdHRyOwogCVFfVUlOVDMyICAgICB0
YWc7CiAKSW5kZXg6IGtodG1sL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjk4CmRpZmYgLXUgLXAgLXIxLjk4IGNzc3BhcnNlci5jcHAKLS0tIGNzc3BhcnNl
ci5jcHAJMjAwNS8wNS8xMSAwMjoxMDowOQkxLjk4CisrKyBjc3NwYXJzZXIuY3BwCTIwMDUvMDYv
MTUgMTQ6MTg6MTQKQEAgLTI0NDAsNiArMjQ0MCw3IEBAIGludCBET006OkNTU1BhcnNlcjo6bGV4
KCB2b2lkICpfeXlsdmFsICkKICAgICBjYXNlIERJTUVOOgogICAgIGNhc2UgVU5JQ09ERVJBTkdF
OgogICAgIGNhc2UgRlVOQ1RJT046CisgICAgY2FzZSBOT1RGVU5DVElPTjoKIAl5eWx2YWwtPnN0
cmluZy5zdHJpbmcgPSB0OwogCXl5bHZhbC0+c3RyaW5nLmxlbmd0aCA9IGxlbmd0aDsKIAlicmVh
azsKSW5kZXg6IGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTg3CmRpZmYgLXUgLXAgLXIxLjE4NyBjc3NzdHlsZXNlbGVj
dG9yLmNwcAotLS0gY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS8wNi8xMiAwNDowNzozMAkxLjE4
NworKysgY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS8wNi8xNSAxNDoxODoyMApAQCAtMTMzOSw2
ICsxMzM5LDE0IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAg
ICAgICAgICAgICAgICBpZiAoZSA9PSBlLT5nZXREb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYW5nOiB7CisgCSAgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZS0+Z2V0QXR0cmlidXRlKEFUVFJf
TEFORyk7CisgCSAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbEF0b20pIHJldHVybiBmYWxz
ZTsKKyAJICAgICAgICAgICAgIFFTdHJpbmcgbGFuZ0F0dHIgPSB2YWx1ZS5zdHJpbmcoKTsKKyAJ
ICAgICAgICAgICAgIFFTdHJpbmcgbGFuZ1NlbCA9IHNlbC0+c3RyaW5nX2FyZy5zdHJpbmcoKTsK
Ky8vICAgICAgICAgICAgICAga2REZWJ1Zyg2MDgwKSA8PCAiOmxhbmcgIiA8PCBsYW5nQXR0ciA8
PCAiPSIgPDwgbGFuZ1NlbCA8PCAiPyIgPDwgZW5kbDsKKyAJICAgICAgICAgICAgIHJldHVybiBs
YW5nQXR0ci5zdGFydHNXaXRoKGxhbmdTZWwpOworIAkgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdDogewogICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRo
ZSBzaW1wbGUgc2VsZWN0b3IKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJT
ZWwgPSBzZWwtPnNpbXBsZVNlbGVjdG9yOyBzdWJTZWw7CkBAIC0xMzUyLDggKzEzNjAsNiBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFuZzoKLSAgICAgICAgICAgICAgICAvKiBub3Qgc3VwcG9y
dGVkIGZvciBub3cgKi8KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb090aGVy
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4OiBraHRtbC9jc3Mv
cGFyc2VyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3Nz
L3BhcnNlci55LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXUgLXAgLXIxLjM4IHBh
cnNlci55Ci0tLSBwYXJzZXIueQkyMDA1LzA2LzEyIDA0OjA3OjMwCTEuMzgKKysrIHBhcnNlci55
CTIwMDUvMDYvMTUgMTQ6MTg6MjEKQEAgLTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMgaW50IGNzc3l5
bGV4KCBZWVNUWVBFICp5eWx2YWwgKSB7CiAKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8
c3RyaW5nPiBGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCiAKICV0b2tlbiA8
c3RyaW5nPiBVTklDT0RFUkFOR0UKIApAQCAtODM0LDcgKzgzNSwxNSBAQCBwc2V1ZG86CiAgICAg
ICAgICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMyk7CiAg
ICAgfQotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXli
ZV9zcGFjZSAnKScgeworICAgIC8vIHVzZWQgYnkgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBJ
REVOVCAnKScgeworICAgICAgICAkJCA9IG5ldyBDU1NTZWxlY3RvcigpOworICAgICAgICAkJC0+
bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5zdHJpbmdfYXJn
ID0gYXRvbWljU3RyaW5nKCQzKTsKKyAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQy
KTsKKyAgICB9CisgICAgLy8gdXNlZCBvbmx5IGJ5IDpub3QKKyAgICB8ICc6JyBOT1RGVU5DVElP
TiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAg
JCQgPSBuZXcgQ1NTU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1hdGNoID0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzOwogICAgICAgICAkJC0+c2ltcGxlU2VsZWN0b3IgPSAkNDsKSW5kZXg6IGto
dG1sL2Nzcy90b2tlbml6ZXIuZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9raHRtbC9jc3MvdG9rZW5pemVyLmZsZXgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpk
aWZmIC11IC1wIC1yMS41IHRva2VuaXplci5mbGV4Ci0tLSB0b2tlbml6ZXIuZmxleAkyMDA0LzA1
LzI3IDIzOjA1OjE1CTEuNQorKysgdG9rZW5pemVyLmZsZXgJMjAwNS8wNi8xNSAxNDoxODoyMQpA
QCAtNzIsNiArNzIsNyBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0o
CiB7bnVtfSUrICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQRVJDRU5UQUdFOyByZXR1cm4geXlU
b2s7fQoge251bX0gICAgICAgICAgICAgICAgICAge3l5VG9rID0gTlVNQkVSOyByZXR1cm4geXlU
b2s7fQogCisibm90KCIgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBOT1RGVU5DVElPTjsgcmV0
dXJuIHl5VG9rO30KICJ1cmwoInt3fXtzdHJpbmd9e3d9IikiIHt5eVRvayA9IFVSSTsgcmV0dXJu
IHl5VG9rO30KICJ1cmwoInt3fXt1cmx9e3d9IikiICAgIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5
VG9rO30KIHtpZGVudH0iKCIgICAgICAgICAgICAgIHt5eVRvayA9IEZVTkNUSU9OOyByZXR1cm4g
eXlUb2s7fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2388</attachid>
            <date>2005-06-16 09:49:53 -0700</date>
            <delta_ts>2006-06-15 08:49:52 -0700</delta_ts>
            <desc>patch rev 2.0 alpha 1</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>11227</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">PyBraHRtbC8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvZmFzdC9zZWxlY3RvcnMvMTU5LWV4cGVj
dGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L3NlbGVjdG9ycy8xNzdhLWV4cGVjdGVkLnR4dAo/
IGxheW91dC10ZXN0cy9mYXN0L3NlbGVjdG9ycy8xNzdiLWV4cGVjdGVkLnR4dApJbmRleDoga2h0
bWwvY3NzL2Nzc19iYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9jc3MvY3NzX2Jhc2UuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1CmRpZmYg
LXUgLXAgLXIxLjE1IGNzc19iYXNlLmNwcAotLS0gY3NzX2Jhc2UuY3BwCTIwMDUvMDYvMTIgMDQ6
MDc6MzAJMS4xNQorKysgY3NzX2Jhc2UuY3BwCTIwMDUvMDYvMTYgMTQ6NDE6MDYKQEAgLTIyOCw3
ICsyMjgsOCBAQCBib29sIENTU1NlbGVjdG9yOjpvcGVyYXRvciA9PSAoIGNvbnN0IENTCiAJaWYg
KCBzZWwxLT50YWcgIT0gc2VsMi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fAog
CSAgICAgc2VsMS0+cmVsYXRpb24gIT0gc2VsMi0+cmVsYXRpb24gfHwgc2VsMS0+bWF0Y2ggIT0g
c2VsMi0+bWF0Y2ggfHwKIAkgICAgIHNlbDEtPnZhbHVlICE9IHNlbDItPnZhbHVlIHx8Ci0gICAg
ICAgICAgICAgc2VsMS0+cHNldWRvVHlwZSgpICE9IHNlbDItPnBzZXVkb1R5cGUoKSkKKyAgICAg
ICAgICAgICBzZWwxLT5wc2V1ZG9UeXBlKCkgIT0gc2VsMi0+cHNldWRvVHlwZSgpIHx8CisgICAg
ICAgICAgICAgc2VsMS0+c3RyaW5nX2FyZyAhPSBzZWwyLT5zdHJpbmdfYXJnKQogCSAgICByZXR1
cm4gZmFsc2U7CiAJc2VsMSA9IHNlbDEtPnRhZ0hpc3Rvcnk7CiAJc2VsMiA9IHNlbDItPnRhZ0hp
c3Rvcnk7CkluZGV4OiBraHRtbC9jc3MvY3NzX2Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3NzX2Jhc2UuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMgpkaWZmIC11IC1wIC1yMS4xMiBjc3NfYmFzZS5oCi0tLSBjc3NfYmFzZS5oCTIwMDUv
MDYvMTIgMDQ6MDc6MzAJMS4xMgorKysgY3NzX2Jhc2UuaAkyMDA1LzA2LzE2IDE0OjQxOjA2CkBA
IC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBET00gewogICAgIHsKICAgICBwdWJsaWM6CiAJQ1NT
U2VsZWN0b3IoKQotCSAgICA6IHRhZ0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0
U2VsZWN0b3IoMCksIGF0dHIoMCksIHRhZyhhbnlRTmFtZSksCisJICAgIDogdGFnSGlzdG9yeSgw
KSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgc3RyaW5nX2FyZyhudWxsQXRv
bSksIGF0dHIoMCksIHRhZyhhbnlRTmFtZSksCiAgICAgICAgICAgICAgIHJlbGF0aW9uKCBEZXNj
ZW5kYW50ICksIG1hdGNoKCBOb25lICksCiAgICAgICAgICAgICAgIHBzZXVkb0lkKCAwICksIF9w
c2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKICAgICAgICAge30KQEAgLTE3MSw2ICsxNzEsNyBA
QCBuYW1lc3BhY2UgRE9NIHsKIAlDU1NTZWxlY3RvciogdGFnSGlzdG9yeTsKICAgICAgICAgQ1NT
U2VsZWN0b3IqIHNpbXBsZVNlbGVjdG9yOyAvLyBVc2VkIGZvciA6bm90LgogICAgICAgICBDU1NT
ZWxlY3RvciogbmV4dFNlbGVjdG9yOyAvLyB1c2VkIGZvciAsLWNoYWluZWQgc2VsZWN0b3JzCisg
ICAgQXRvbWljU3RyaW5nIHN0cmluZ19hcmc7IC8vIFVzZWQgYnkgOmNvbnRhaW5zLCA6bGFuZyBh
bmQgOm50aC0qCiAJUV9VSU5UMzIgICAgIGF0dHI7CiAJUV9VSU5UMzIgICAgIHRhZzsKIApJbmRl
eDoga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
OTgKZGlmZiAtdSAtcCAtcjEuOTggY3NzcGFyc2VyLmNwcAotLS0gY3NzcGFyc2VyLmNwcAkyMDA1
LzA1LzExIDAyOjEwOjA5CTEuOTgKKysrIGNzc3BhcnNlci5jcHAJMjAwNS8wNi8xNiAxNDo0MTow
OQpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAgaW50IERPTTo6Q1NTUGFyc2VyOjpsZXgoIHZvaWQgKl95
eWx2YWwgKQogICAgIGNhc2UgRElNRU46CiAgICAgY2FzZSBVTklDT0RFUkFOR0U6CiAgICAgY2Fz
ZSBGVU5DVElPTjoKKyAgICBjYXNlIE5PVEZVTkNUSU9OOgogCXl5bHZhbC0+c3RyaW5nLnN0cmlu
ZyA9IHQ7CiAJeXlsdmFsLT5zdHJpbmcubGVuZ3RoID0gbGVuZ3RoOwogCWJyZWFrOwpJbmRleDog
a2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xODcKZGlmZiAtdSAtcCAtcjEuMTg3IGNzc3N0eWxlc2VsZWN0b3IuY3BwCi0t
LSBjc3NzdHlsZXNlbGVjdG9yLmNwcAkyMDA1LzA2LzEyIDA0OjA3OjMwCTEuMTg3CisrKyBjc3Nz
dHlsZXNlbGVjdG9yLmNwcAkyMDA1LzA2LzE2IDE0OjQxOjE0CkBAIC0xMzM5LDYgKzEzMzksMjAg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICAgICAg
ICAgIGlmIChlID09IGUtPmdldERvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhbmc6IHsKKyAJICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0eWxlLT5sYW5ndWFnZSgpOworIAkgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gbnVsbEF0b20pIHJldHVybiBmYWxzZTsKKyAJICAgICAgICAgICAgUVN0
cmluZyBzdHIgPSB2YWx1ZS5zdHJpbmcoKTsKKyAJICAgICAgICAgICAgUVN0cmluZyBzZWxTdHIg
PSBzZWwtPnN0cmluZ19hcmcuc3RyaW5nKCk7CisvLyAgICAgICAgICAgICAga2REZWJ1Zyg2MDgw
KSA8PCAiOmxhbmcgIiA8PCBzdHIgPDwgIj0iIDw8IHNlbFN0ciA8PCAiPyIgPDwgZW5kbDsKKyAg
ICAgICAgICAgICAgICBpZihzdHIubGVuZ3RoKCkgPCBzZWxTdHIubGVuZ3RoKCkpIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBzdHIgYmVnaW5zIHdpdGggc2VsU3Ry
OgorICAgICAgICAgICAgICAgIGlmKHN0ci5maW5kKHNlbFN0ciwgMCwgaXNYTUxEb2MpICE9IDAp
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAvLyBJdCBkb2VzLiBDaGVjayBmb3IgZXhh
Y3QgbWF0Y2ggb3IgZm9sbG93aW5nICctJzoKKyAgICAgICAgICAgICAgICBpZihzdHIubGVuZ3Ro
KCkgIT0gc2VsU3RyLmxlbmd0aCgpCisgICAgICAgICAgICAgICAgICAgICYmIHN0cltzZWxTdHIu
bGVuZ3RoKCldICE9ICctJykgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworIAkgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05v
dDogewogICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBzaW1wbGUgc2VsZWN0b3IKICAgICAg
ICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJTZWwgPSBzZWwtPnNpbXBsZVNlbGVjdG9y
OyBzdWJTZWw7CkBAIC0xMzUyLDggKzEzNjYsNiBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNo
ZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFu
ZzoKLSAgICAgICAgICAgICAgICAvKiBub3Qgc3VwcG9ydGVkIGZvciBub3cgKi8KICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb090aGVyOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCkluZGV4OiBraHRtbC9jc3MvcGFyc2VyLnkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL3BhcnNlci55LHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjM4CmRpZmYgLXUgLXAgLXIxLjM4IHBhcnNlci55Ci0tLSBwYXJzZXIueQkyMDA1
LzA2LzEyIDA0OjA3OjMwCTEuMzgKKysrIHBhcnNlci55CTIwMDUvMDYvMTYgMTQ6NDE6MTUKQEAg
LTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KCBZWVNUWVBFICp5eWx2YWwgKSB7
CiAKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgorJXRva2Vu
IDxzdHJpbmc+IE5PVEZVTkNUSU9OCiAKICV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKIApA
QCAtODM0LDcgKzgzNSwxNSBAQCBwc2V1ZG86CiAgICAgICAgICQzLmxvd2VyKCk7CiAgICAgICAg
ICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMyk7CiAgICAgfQotICAgIHwgJzonIEZVTkNUSU9O
IG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgeworICAgIC8vIHVz
ZWQgYnkgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBJREVOVCAnKScgeworICAgICAgICAkJCA9
IG5ldyBDU1NTZWxlY3RvcigpOworICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3M7CisgICAgICAgICQkLT5zdHJpbmdfYXJnID0gYXRvbWljU3RyaW5nKCQzKTsKKyAg
ICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsKKyAgICB9CisgICAgLy8gdXNlZCBv
bmx5IGJ5IDpub3QKKyAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2Vs
ZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAgJCQgPSBuZXcgQ1NTU2VsZWN0b3IoKTsK
ICAgICAgICAgJCQtPm1hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOwogICAgICAgICAk
JC0+c2ltcGxlU2VsZWN0b3IgPSAkNDsKSW5kZXg6IGtodG1sL2Nzcy90b2tlbml6ZXIuZmxleAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvdG9rZW5pemVy
LmZsZXgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC11IC1wIC1yMS41IHRva2VuaXpl
ci5mbGV4Ci0tLSB0b2tlbml6ZXIuZmxleAkyMDA0LzA1LzI3IDIzOjA1OjE1CTEuNQorKysgdG9r
ZW5pemVyLmZsZXgJMjAwNS8wNi8xNiAxNDo0MToxNQpAQCAtNzIsNiArNzIsNyBAQCByYW5nZSAg
ICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiB7bnVtfSUrICAgICAgICAgICAgICAg
ICB7eXlUb2sgPSBQRVJDRU5UQUdFOyByZXR1cm4geXlUb2s7fQoge251bX0gICAgICAgICAgICAg
ICAgICAge3l5VG9rID0gTlVNQkVSOyByZXR1cm4geXlUb2s7fQogCisibm90KCIgICAgICAgICAg
ICAgICAgICB7eXlUb2sgPSBOT1RGVU5DVElPTjsgcmV0dXJuIHl5VG9rO30KICJ1cmwoInt3fXtz
dHJpbmd9e3d9IikiIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5VG9rO30KICJ1cmwoInt3fXt1cmx9
e3d9IikiICAgIHt5eVRvayA9IFVSSTsgcmV0dXJuIHl5VG9rO30KIHtpZGVudH0iKCIgICAgICAg
ICAgICAgIHt5eVRvayA9IEZVTkNUSU9OOyByZXR1cm4geXlUb2s7fQpJbmRleDoga2h0bWwvaHRt
bC9odG1sX2VsZW1lbnRpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9raHRtbC9odG1sL2h0bWxfZWxlbWVudGltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjg3CmRpZmYgLXUgLXAgLXIxLjg3IGh0bWxfZWxlbWVudGltcGwuY3BwCi0tLSBodG1sX2Vs
ZW1lbnRpbXBsLmNwcAkyMDA1LzA1LzEzIDE2OjQ4OjUxCTEuODcKKysrIGh0bWxfZWxlbWVudGlt
cGwuY3BwCTIwMDUvMDYvMTYgMTQ6NDE6MTYKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJj
c3MvY3NzX3ZhbHVlaW1wbC5oIgogI2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaCIK
ICNpbmNsdWRlICJjc3MvY3NzcHJvcGVydGllcy5oIgorI2luY2x1ZGUgImNzcy9jc3NzdHlsZXNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3ZhbHVlcy5oIgogI2luY2x1ZGUgImNzcy9jc3Nf
cnVsZWltcGwuaCIKICNpbmNsdWRlICJ4bWwvZG9tX3RleHRpbXBsLmgiCkBAIC0xNjcsNiArMTY4
LDcgQEAgdm9pZCBIVE1MRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidQogICAgICAgICBi
cmVhazsKIC8vIGkxOG4gYXR0cmlidXRlcwogICAgIGNhc2UgQVRUUl9MQU5HOgorICAgICAgICBn
ZXREb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudCh0aGlzKS0+c2V0
TGFuZ3VhZ2UoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVRUUl9E
SVI6CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX0RJUkVDVElPTiwgYXR0
ci0+dmFsdWUoKSk7CkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVy
X3N0eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42NgpkaWZmIC11IC1wIC1yMS42NiBy
ZW5kZXJfc3R5bGUuY3BwCi0tLSByZW5kZXJfc3R5bGUuY3BwCTIwMDUvMDYvMTEgMDE6NTg6MDIJ
MS42NgorKysgcmVuZGVyX3N0eWxlLmNwcAkyMDA1LzA2LzE2IDE0OjQxOjE4CkBAIC00MTUsNyAr
NDE1LDcgQEAgYm9vbCBTdHlsZUNTUzNJbmhlcml0ZWREYXRhOjpzaGFkb3dEYXRhRQogU3R5bGVJ
bmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogICAgIDogaW5kZW50KCBSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSApLCBsaW5lX2hlaWdodCggUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaW5lSGVpZ2h0KCkgKSwgCiAgICAgICBzdHlsZV9pbWFnZSggUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaXN0U3R5bGVJbWFnZSgpICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIDAgKSwgZm9udCgp
LCBjb2xvciggUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpICksIAorICAgICAgY3Vyc29yX2lt
YWdlKCAwICksIGxhbmd1YWdlKERPTTo6bnVsbEF0b20pLCBmb250KCksIGNvbG9yKCBSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9yKCkgKSwgCiAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
KCBSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgKSwgCiAgICAg
ICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJv
cmRlclNwYWNpbmcoKSApLAogICAgICAgd2lkb3dzKCBSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93
cygpICksIG9ycGhhbnMoIFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpICksCkBAIC00MzAs
OCArNDMwLDcgQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5
bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWRE
YXRhJiBvICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBpbmRl
bnQoIG8uaW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdl
KCBvLnN0eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdlICks
IGZvbnQoIG8uZm9udCApLAotICAgICAgY29sb3IoIG8uY29sb3IgKSwKKyAgICAgIGN1cnNvcl9p
bWFnZShvLmN1cnNvcl9pbWFnZSksIGxhbmd1YWdlKG8ubGFuZ3VhZ2UpLCBmb250KG8uZm9udCks
IGNvbG9yKG8uY29sb3IpLAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyggby5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZygg
by52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgd2lkb3dzKG8ud2lkb3dzKSwgb3Jw
aGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFrX2luc2lkZShvLnBhZ2VfYnJlYWtfaW5zaWRlKQpA
QCAtNDQ1LDYgKzQ0NCw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNv
bnMKIAlsaW5lX2hlaWdodCA9PSBvLmxpbmVfaGVpZ2h0ICYmCiAJc3R5bGVfaW1hZ2UgPT0gby5z
dHlsZV9pbWFnZSAmJgogCWN1cnNvcl9pbWFnZSA9PSBvLmN1cnNvcl9pbWFnZSAmJgorCWxhbmd1
YWdlID09IG8ubGFuZ3VhZ2UgJiYKIAlmb250ID09IG8uZm9udCAmJgogCWNvbG9yID09IG8uY29s
b3IgJiYKICAgICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxf
Ym9yZGVyX3NwYWNpbmcgJiYKQEAgLTY5Miw2ICs2OTIsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBS
ZW5kZXJTdHlsZTo6ZGlmZiggY29uCiAgICAgICAgICEoaW5oZXJpdGVkLT5saW5lX2hlaWdodCA9
PSBvdGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodCkgfHwKICAgICAgICAgIShpbmhlcml0ZWQt
PnN0eWxlX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPnN0eWxlX2ltYWdlKSB8fAogICAgICAg
ICAhKGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPmN1cnNvcl9p
bWFnZSkgfHwKKyAgICAgICAgIShpbmhlcml0ZWQtPmxhbmd1YWdlID09IG90aGVyLT5pbmhlcml0
ZWQtPmxhbmd1YWdlKSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+Zm9udCA9PSBvdGhlci0+aW5o
ZXJpdGVkLT5mb250KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJf
c3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKSB8
fAogICAgICAgICAhKGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXIt
PmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpIHx8CkluZGV4OiBraHRtbC9yZW5k
ZXJpbmcvcmVuZGVyX3N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjgyCmRpZmYgLXUgLXAgLXIxLjgyIHJlbmRlcl9zdHlsZS5oCi0tLSByZW5kZXJfc3R5bGUuaAky
MDA1LzA1LzEyIDE3OjExOjIyCTEuODIKKysrIHJlbmRlcl9zdHlsZS5oCTIwMDUvMDYvMTYgMTQ6
NDE6MjAKQEAgLTU1LDggKzU1LDExIEBACiBjbGFzcyBSZW5kZXJBcmVuYTsKIAogbmFtZXNwYWNl
IERPTSB7CisgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7
CiAgICAgY2xhc3MgU2hhZG93VmFsdWVJbXBsOworICAgIAorICAgIGV4dGVybiBjb25zdCBBdG9t
aWNTdHJpbmcgbnVsbEF0b207CiB9CiAKIG5hbWVzcGFjZSBraHRtbCB7CkBAIC03ODIsNiArNzg1
LDcgQEAgcHVibGljOgogICAgIENhY2hlZEltYWdlICpzdHlsZV9pbWFnZTsKICAgICBDYWNoZWRJ
bWFnZSAqY3Vyc29yX2ltYWdlOwogCisgICAgRE9NOjpBdG9taWNTdHJpbmcgbGFuZ3VhZ2U7CiAg
ICAga2h0bWw6OkZvbnQgZm9udDsKICAgICBRQ29sb3IgY29sb3I7CiAgICAgCkBAIC0xMTU0LDYg
KzExNTgsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoQm94IGNsaXAoKSBjb25zdCB7IHJldHVybiB2
aXN1YWwtPmNsaXA7IH0KICAgICBib29sIGhhc0NsaXAoKSBjb25zdCB7IHJldHVybiB2aXN1YWwt
Pmhhc0NsaXA7IH0KICAgICAKKyAgICBjb25zdCBET006OkF0b21pY1N0cmluZyAmIGxhbmd1YWdl
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5sYW5ndWFnZTsgfQogICAgIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29k
ZUJpZGk7IH0KIAogICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuICBub25pbmhlcml0
ZWRfZmxhZ3MuX2NsZWFyOyB9CkBAIC0xMzQxLDYgKzEzNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDbGlwQm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIodmlzdWFsLGNsaXAuYm90dG9tLHYp
IH0KICAgICB2b2lkIHNldENsaXAoIExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJv
dHRvbSwgTGVuZ3RoIGxlZnQgKTsKICAgICAKKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IERP
TTo6QXRvbWljU3RyaW5nICYgbCkgeyBTRVRfVkFSKGluaGVyaXRlZCxsYW5ndWFnZSxsKTsgfQog
ICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoIEVVbmljb2RlQmlkaSBiICkgeyBub25pbmhlcml0ZWRf
ZmxhZ3MuX3VuaWNvZGVCaWRpID0gYjsgfQogCiAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgdikg
eyAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9jbGVhciA9IHY7IH0KQEAgLTE1MzUsNiArMTU0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5n
KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsVmVydGljYWxCb3JkZXJT
cGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3Io
KSB7IHJldHVybiBDVVJTT1JfQVVUTzsgfQorICAgIHN0YXRpYyBET006OkF0b21pY1N0cmluZyBp
bml0aWFsTGFuZ3VhZ2UoKSB7IHJldHVybiBET006Om51bGxBdG9tOyB9CiAgICAgc3RhdGljIFFD
b2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBRdDo6YmxhY2s7IH0KICAgICBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGluaXRpYWxCYWNrZ3JvdW5kSW1hZ2UoKSB7IHJldHVybiAwOyB9CiAgICAgc3Rh
dGljIENhY2hlZEltYWdlKiBpbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSB7IHJldHVybiAwOyB9Cg==
</data>
<flag name="review"
          id="1126"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8719</attachid>
            <date>2006-06-05 14:55:21 -0700</date>
            <delta_ts>2006-06-15 08:49:52 -0700</delta_ts>
            <desc>patch rev 1.3</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6631</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDczNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDYtMDYtMDUgIE5pY2hvbGFzIFNoYW5rcyAgPGNvbnRhY3RAbmlj
a3NoYW5rcy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKToKKyAgICAgICAgKiBjc3Mv
Q1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6bGV4KToKKyAgICAgICAgKiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9y
KToKKyAgICAgICAgKiBjc3MvdG9rZW5pemVyLmZsZXg6CisKIDIwMDYtMDYtMDUgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gMTQ3MzUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIDogdGFnSGlzdG9yeSgwKQogICAgICAgICAgICAgLCBzaW1wbGVTZWxl
Y3RvcigwKQogICAgICAgICAgICAgLCBuZXh0U2VsZWN0b3IoMCkKKyAgICAgICAgICAgICwgYXJn
dW1lbnQobnVsbEF0b20pCiAgICAgICAgICAgICAsIGF0dHIoYW55UU5hbWUoKSkKICAgICAgICAg
ICAgICwgdGFnKGFueVFOYW1lKCkpCiAgICAgICAgICAgICAsIG1fcmVsYXRpb24oRGVzY2VuZGFu
dCkKQEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiB0
YWdIaXN0b3J5KDApCiAgICAgICAgICAgICAsIHNpbXBsZVNlbGVjdG9yKDApCiAgICAgICAgICAg
ICAsIG5leHRTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBhcmd1bWVudChudWxsQXRvbSkKICAg
ICAgICAgICAgICwgYXR0cihhbnlRTmFtZSgpKQogICAgICAgICAgICAgLCB0YWcocU5hbWUpCiAg
ICAgICAgICAgICAsIG1fcmVsYXRpb24oRGVzY2VuZGFudCkKQEAgLTE1OCw2ICsxNjAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yKiB0YWdIaXN0b3J5OwogICAg
ICAgICBDU1NTZWxlY3Rvciogc2ltcGxlU2VsZWN0b3I7IC8vIFVzZWQgZm9yIDpub3QuCiAgICAg
ICAgIENTU1NlbGVjdG9yKiBuZXh0U2VsZWN0b3I7IC8vIHVzZWQgZm9yICwtY2hhaW5lZCBzZWxl
Y3RvcnMKKyAgICAgICAgQXRvbWljU3RyaW5nIGFyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFp
bnMsIDpsYW5nIGFuZCA6bnRoLSoKICAgICAgICAgCiAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0
cjsKICAgICAgICAgUXVhbGlmaWVkTmFtZSB0YWc7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZp
c2lvbiAxNDczNSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgwLDcgKzE4MCw4IEBAIGJvb2wgQ1NTU2VsZWN0b3I6Om9wZXJhdG9yID09IChjb25z
dCBDU1MKICAgICAgICAgaWYgKHNlbDEtPnRhZyAhPSBzZWwyLT50YWcgfHwgc2VsMS0+YXR0ciAh
PSBzZWwyLT5hdHRyIHx8CiAgICAgICAgICAgICAgc2VsMS0+cmVsYXRpb24oKSAhPSBzZWwyLT5y
ZWxhdGlvbigpIHx8IHNlbDEtPm1hdGNoICE9IHNlbDItPm1hdGNoIHx8CiAgICAgICAgICAgICAg
c2VsMS0+dmFsdWUgIT0gc2VsMi0+dmFsdWUgfHwKLSAgICAgICAgICAgICBzZWwxLT5wc2V1ZG9U
eXBlKCkgIT0gc2VsMi0+cHNldWRvVHlwZSgpKQorICAgICAgICAgICAgIHNlbDEtPnBzZXVkb1R5
cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBlKCkgfHwKKyAgICAgICAgICAgICBzZWwxLT5hcmd1bWVu
dCAhPSBzZWwyLT5hcmd1bWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
c2VsMSA9IHNlbDEtPnRhZ0hpc3Rvcnk7CiAgICAgICAgIHNlbDIgPSBzZWwyLT50YWdIaXN0b3J5
OwpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0NzM1KQorKysgV2Vi
Q29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODMsMTIg
KzE0ODMsMTkgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAg
ICAgICAgICAgICAgIGlmIChlID09IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhbmc6IHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZS0+Z2V0QXR0cmlidXRlKGxhbmdBdHRy
KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8ICF2YWx1ZS5zdGFydHNX
aXRoKHNlbC0+YXJndW1lbnQsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpICE9IHNlbC0+YXJndW1lbnQubGVuZ3Ro
KCkgJiYgdmFsdWVbc2VsLT5hcmd1bWVudC5sZW5ndGgoKV0gIT0gJy0nKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdDogewogICAgICAgICAg
ICAgICAgIC8vIGNoZWNrIHRoZSBzaW1wbGUgc2VsZWN0b3IKLSAgICAgICAgICAgICAgICBmb3Ig
KENTU1NlbGVjdG9yKiBzdWJTZWwgPSBzZWwtPnNpbXBsZVNlbGVjdG9yOyBzdWJTZWw7Ci0gICAg
ICAgICAgICAgICAgICAgICBzdWJTZWwgPSBzdWJTZWwtPnRhZ0hpc3RvcnkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gIEkgZG9uJ3QgcmVhbGx5IGtub3cgd2h5
IHRoaXMgaXMgYSByZXN0cmljdGlvbiBpbiBDU1MzLAotICAgICAgICAgICAgICAgICAgICAvLyBi
dXQgaXQgaXMsIHNvIGxldCdzIGhvbm9yIGl0LgorICAgICAgICAgICAgICAgIGZvciAoQ1NTU2Vs
ZWN0b3IqIHN1YlNlbCA9IHNlbC0+c2ltcGxlU2VsZWN0b3I7IHN1YlNlbDsgc3ViU2VsID0gc3Vi
U2VsLT50YWdIaXN0b3J5KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIDpub3QgY2Fubm90IG5l
c3QuIEkgZG9uJ3QgcmVhbGx5IGtub3cgd2h5IHRoaXMgaXMgYQorICAgICAgICAgICAgICAgICAg
ICAvLyByZXN0cmljdGlvbiBpbiBDU1MzLCBidXQgaXQgaXMsIHNvIGxldCdzIGhvbm91ciBpdC4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YlNlbC0+c2ltcGxlU2VsZWN0b3IpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHN1YlNlbCwgZSkpCkBAIC0xNDk2LDggKzE1MDMsNiBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTGFuZzoKLSAgICAgICAgICAgICAgICAvKiBub3Qgc3VwcG9ydGVkIGZvciBub3cg
Ki8KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb090aGVyOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0xNTI4LDcgKzE1MzMsNyBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgYXNzZXJ0
KGZhbHNlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vICMjIyBhZGQgdGhl
IHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgogICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9j
c3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3Bw
CShyZXZpc2lvbiAxNDczNSkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2MjQsNiArMjYyNCw3IEBAIGludCBDU1NQYXJzZXI6OmxleCh2b2lkKiB5eWx2
YWxXaXRob3V0VHkKICAgICBjYXNlIERJTUVOOgogICAgIGNhc2UgVU5JQ09ERVJBTkdFOgogICAg
IGNhc2UgRlVOQ1RJT046CisgICAgY2FzZSBOT1RGVU5DVElPTjoKICAgICAgICAgeXlsdmFsLT5z
dHJpbmcuY2hhcmFjdGVycyA9IHQ7CiAgICAgICAgIHl5bHZhbC0+c3RyaW5nLmxlbmd0aCA9IGxl
bmd0aDsKICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAxNDczNSkKKysr
IFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3
IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSAqeXlsdmFsKSB7IHIKIAogJXRva2VuIDxz
dHJpbmc+IFVSSQogJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTk9U
RlVOQ1RJT04KIAogJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQogCkBAIC03NDgsNyArNzQ5
LDE2IEBAIHBzZXVkbzoKICAgICAgICAgJDMubG93ZXIoKTsKICAgICAgICAgJCQtPnZhbHVlID0g
YXRvbWljU3RyaW5nKCQzKTsKICAgICB9Ci0gICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2Ug
c2ltcGxlX3NlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgLy8gdXNlZCBieSA6bGFuZwor
ICAgIHwgJzonIEZVTkNUSU9OIElERU5UICcpJyB7CisgICAgICAgICQkID0gbmV3IENTU1NlbGVj
dG9yKCk7CisgICAgICAgICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAg
ICAgICAgJCQtPmFyZ3VtZW50ID0gYXRvbWljU3RyaW5nKCQzKTsKKyAgICAgICAgJDIubG93ZXIo
KTsKKyAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsKKyAgICB9CisgICAgLy8g
dXNlZCBieSA6bm90CisgICAgfCAnOicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3Nl
bGVjdG9yICcpJyB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwog
ICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CkluZGV4OiBXZWJD
b3JlL2Nzcy90b2tlbml6ZXIuZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy90b2tlbml6
ZXIuZmxleAkocmV2aXNpb24gMTQ3MzUpCisrKyBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7
aH0oXD97MCw1fXx7aH0oCiB7aW50bnVtfSAgICAgICAgICAgICAgICB7eXlUb2sgPSBJTlRFR0VS
OyByZXR1cm4geXlUb2s7fQoge251bX0gICAgICAgICAgICAgICAgICAge3l5VG9rID0gRkxPQVQ7
IHJldHVybiB5eVRvazt9CiAKKyJub3QoIiAgICAgICAgICAgICAgICAgIHt5eVRvayA9IE5PVEZV
TkNUSU9OOyByZXR1cm4geXlUb2s7fQogInVybCgie3d9e3N0cmluZ317d30iKSIge3l5VG9rID0g
VVJJOyByZXR1cm4geXlUb2s7fQogInVybCgie3d9e3VybH17d30iKSIgICAge3l5VG9rID0gVVJJ
OyByZXR1cm4geXlUb2s7fQoge2lkZW50fSIoIiAgICAgICAgICAgICAge3l5VG9rID0gRlVOQ1RJ
T047IHJldHVybiB5eVRvazt9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8856</attachid>
            <date>2006-06-15 08:49:52 -0700</date>
            <delta_ts>2006-06-15 11:24:12 -0700</delta_ts>
            <desc>Patch rev 1.4</desc>
            <filename>patch-final.diff</filename>
            <type>text/plain</type>
            <size>10657</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODczKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIwMDYtMDYtMTUgIE5pY2hvbGFzIFNoYW5rcyAg
PGNvbnRhY3RAbmlja3NoYW5rcy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3MzLW1vZHNlbC0yMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2NzczMtbW9kc2VsLTIyLmh0bWw6IEFkZGVkLgor
CiAyMDA2LTA2LTE0ICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgbGV2aQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Nz
My1tb2RzZWwtMjItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NzczMtbW9kc2VsLTIyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2NzczMtbW9kc2VsLTIyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxMjAKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDEyMAorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDE2KSBzaXplIDc4NHg4OAorICAgICAgUmVuZGVyQmxvY2sge1VMfSBhdCAoMCww
KSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXpl
IDc0NHgxOCBbYmdjb2xvcj0jMDBGRjAwXQorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQg
KC0xNywwKSBzaXplIDd4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA0MzB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMzNjogIlRo
aXMgbGlzdCBpdGVtIHNob3VsZCBiZSBncmVlbiBiZWNhdXNlIGl0cyBsYW5ndWFnZSBpcyAiCisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzM2LDApIHdpZHRoIDk0OiAiQnJpdGlzaCBFbmdsaXNo
IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwxOCkgc2l6ZSA3NDR4MTggW2Jn
Y29sb3I9IzAwRkYwMF0KKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6
ZSA3eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDgzeDE4
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMjI6ICJUaGlzIGxpc3QgaXRl
bSBzaG91bGQgYmUgZ3JlZW4gYmVjYXVzZSBpdHMgbGFuZ3VhZ2UgIgorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDMyMiwwKSB3aWR0aCAxNjE6ICJpcyBCcml0aXNoIEVuZ2xpc2ggKFdhbGVzKSIK
KyAgICAgIFJlbmRlckJsb2NrIHtPTH0gYXQgKDAsNTIpIHNpemUgNzg0eDM2CisgICAgICAgIFJl
bmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUgNzQ0eDE4CisgICAgICAgICAgUmVuZGVy
TGlzdE1hcmtlciBhdCAoLTIwLDApIHNpemUgMTZ4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA0NDd4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDM2MDogIlRoaXMgbGlzdCBpdGVtIHNob3VsZCBOT1QgYmUgZ3JlZW4gYmVjYXVzZSBp
dHMgbGFuZ3VhZ2UgIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDM2MCwwKSB3aWR0aCA4Nzog
ImlzIFVTIEVuZ2xpc2giCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDE4KSBz
aXplIDc0NHgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0yMCwwKSBzaXplIDE2
eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDE4eDE4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzQ6ICJUaGlzIGxpc3QgaXRlbSBz
aG91bGQgTk9UIGJlIGdyZWVuIGJlY2F1c2UgaXRzIGxhbmd1YWdlIGlzICIKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgzNzQsMCkgd2lkdGggNDQ6ICJGcmVuY2giCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jc3MzLW1vZHNlbC0yMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2NzczMtbW9kc2VsLTIyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jc3MzLW1vZHNlbC0yMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4
IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgor
PGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT46bGFuZygpIHBzZXVkby1jbGFzczwvdGl0bGU+Cisg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+dWwgPiBsaSB7IGJhY2tncm91bmQtY29sb3IgOiByZWQg
fQorbGk6bGFuZyhlbi1HQikgeyBiYWNrZ3JvdW5kLWNvbG9yIDogbGltZSB9PC9zdHlsZT4KKyAg
PGxpbmsgcmVsPSJmaXJzdCIgaHJlZj0iY3NzMy1tb2RzZWwtMS5odG1sIiB0aXRsZT0iR3JvdXBz
IG9mIHNlbGVjdG9ycyI+CisgIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iY3NzMy1tb2RzZWwtMjFj
Lmh0bWwiIHRpdGxlPSI6dGFyZ2V0IHBzZXVkby1jbGFzcyI+CisgIDxsaW5rIHJlbD0ibmV4dCIg
aHJlZj0iY3NzMy1tb2RzZWwtMjMuaHRtbCIgdGl0bGU9IjplbmFibGVkIHBzZXVkby1jbGFzcyI+
CisgIDxsaW5rIHJlbD0ibGFzdCIgaHJlZj0iY3NzMy1tb2RzZWwtZDVlLmh0bWwiIHRpdGxlPSJO
RUdBVEVEIDppbmRldGVybWluYXRlIHdpdGggOmNoZWNrZWQiPgorICA8bGluayByZWw9InVwIiBo
cmVmPSIuL2luZGV4Lmh0bWwiPgorICA8bGluayByZWw9InRvcCIgaHJlZj0iLi4vLi4vaW5kZXgu
aHRtbCI+CisgPC9oZWFkPgorIDxib2R5PgorPHVsPgorICA8bGkgbGFuZz0iZW4tR0IiPlRoaXMg
bGlzdCBpdGVtIHNob3VsZCBiZSBncmVlbiBiZWNhdXNlIGl0cyBsYW5ndWFnZSBpcworICAgICAg
ICBCcml0aXNoIEVuZ2xpc2g8L2xpPgorICA8bGkgbGFuZz0iZW4tR0Itd2EiPlRoaXMgbGlzdCBp
dGVtIHNob3VsZCBiZSBncmVlbiBiZWNhdXNlIGl0cyBsYW5ndWFnZQorICAgICAgICBpcyBCcml0
aXNoIEVuZ2xpc2ggKFdhbGVzKTwvbGk+Cis8L3VsPgorPG9sPgorICA8bGkgbGFuZz0iZW4tVVMi
PlRoaXMgbGlzdCBpdGVtIHNob3VsZCBOT1QgYmUgZ3JlZW4gYmVjYXVzZSBpdHMgbGFuZ3VhZ2UK
KyAgICAgICBpcyBVUyBFbmdsaXNoPC9saT4KKyAgPGxpIGxhbmc9ImZyIj5UaGlzIGxpc3QgaXRl
bSBzaG91bGQgTk9UIGJlIGdyZWVuIGJlY2F1c2UgaXRzIGxhbmd1YWdlIGlzCisgICAgICAgRnJl
bmNoPC9saT4KKzwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE0ODczKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAwNi0wNi0xNSAgTmljaG9sYXMgU2hhbmtzICA8Y29udGFj
dEBuaWNrc2hhbmtzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpvcGVyYXRvciA9PSApOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6bGV4KToKKyAgICAgICAgKiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9y
KToKKyAgICAgICAgKiBjc3MvdG9rZW5pemVyLmZsZXg6CisKIDIwMDYtMDYtMTUgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGtpbHplci5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgbWpzLgpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueQkocmV2aXNpb24gMTQ4NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4
KFlZU1RZUEUgKnl5bHZhbCkgeyByCiAKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3Ry
aW5nPiBGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCiAKICV0b2tlbiA8c3Ry
aW5nPiBVTklDT0RFUkFOR0UKIApAQCAtODM1LDcgKzgzNiwxNiBAQCBwc2V1ZG86CiAgICAgICAg
ICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMyk7CiAgICAg
fQotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9z
cGFjZSAnKScgeworICAgIC8vIHVzZWQgYnkgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBJREVO
VCAnKScgeworICAgICAgICAkJCA9IG5ldyBDU1NTZWxlY3RvcigpOworICAgICAgICAkJC0+bWF0
Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5hcmd1bWVudCA9IGF0
b21pY1N0cmluZygkMyk7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT52YWx1ZSA9
IGF0b21pY1N0cmluZygkMik7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm5vdAorICAgIHwgJzon
IE5PVEZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAnKScgewogICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAk
JCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1hdGNoID0gQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMTQ4
NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MCw3ICsxODAsOCBAQCBib29sIENTU1NlbGVjdG9yOjpvcGVyYXRvciA9PSAoY29uc3QgQ1NTCiAg
ICAgICAgIGlmIChzZWwxLT50YWcgIT0gc2VsMi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+
YXR0ciB8fAogICAgICAgICAgICAgIHNlbDEtPnJlbGF0aW9uKCkgIT0gc2VsMi0+cmVsYXRpb24o
KSB8fCBzZWwxLT5tYXRjaCAhPSBzZWwyLT5tYXRjaCB8fAogICAgICAgICAgICAgIHNlbDEtPnZh
bHVlICE9IHNlbDItPnZhbHVlIHx8Ci0gICAgICAgICAgICAgc2VsMS0+cHNldWRvVHlwZSgpICE9
IHNlbDItPnBzZXVkb1R5cGUoKSkKKyAgICAgICAgICAgICBzZWwxLT5wc2V1ZG9UeXBlKCkgIT0g
c2VsMi0+cHNldWRvVHlwZSgpIHx8CisgICAgICAgICAgICAgc2VsMS0+YXJndW1lbnQgIT0gc2Vs
Mi0+YXJndW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHNlbDEgPSBz
ZWwxLT50YWdIaXN0b3J5OwogICAgICAgICBzZWwyID0gc2VsMi0+dGFnSGlzdG9yeTsKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaAkocmV2aXNpb24gMTQ4NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIDogdGFnSGlzdG9yeSgwKQogICAgICAgICAgICAgLCBzaW1wbGVTZWxlY3Rvcigw
KQogICAgICAgICAgICAgLCBuZXh0U2VsZWN0b3IoMCkKKyAgICAgICAgICAgICwgYXJndW1lbnQo
bnVsbEF0b20pCiAgICAgICAgICAgICAsIGF0dHIoYW55UU5hbWUoKSkKICAgICAgICAgICAgICwg
dGFnKGFueVFOYW1lKCkpCiAgICAgICAgICAgICAsIG1fcmVsYXRpb24oRGVzY2VuZGFudCkKQEAg
LTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiB0YWdIaXN0
b3J5KDApCiAgICAgICAgICAgICAsIHNpbXBsZVNlbGVjdG9yKDApCiAgICAgICAgICAgICAsIG5l
eHRTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBhcmd1bWVudChudWxsQXRvbSkKICAgICAgICAg
ICAgICwgYXR0cihhbnlRTmFtZSgpKQogICAgICAgICAgICAgLCB0YWcocU5hbWUpCiAgICAgICAg
ICAgICAsIG1fcmVsYXRpb24oRGVzY2VuZGFudCkKQEAgLTE1OCw2ICsxNjAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yKiB0YWdIaXN0b3J5OwogICAgICAgICBD
U1NTZWxlY3Rvciogc2ltcGxlU2VsZWN0b3I7IC8vIFVzZWQgZm9yIDpub3QuCiAgICAgICAgIENT
U1NlbGVjdG9yKiBuZXh0U2VsZWN0b3I7IC8vIHVzZWQgZm9yICwtY2hhaW5lZCBzZWxlY3RvcnMK
KyAgICAgICAgQXRvbWljU3RyaW5nIGFyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDps
YW5nIGFuZCA6bnRoLSoKICAgICAgICAgCiAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cjsKICAg
ICAgICAgUXVhbGlmaWVkTmFtZSB0YWc7CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE0ODcz
KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3MSw2
ICsyNjcxLDcgQEAgaW50IENTU1BhcnNlcjo6bGV4KHZvaWQqIHl5bHZhbFdpdGhvdXRUeQogICAg
IGNhc2UgRElNRU46CiAgICAgY2FzZSBVTklDT0RFUkFOR0U6CiAgICAgY2FzZSBGVU5DVElPTjoK
KyAgICBjYXNlIE5PVEZVTkNUSU9OOgogICAgICAgICB5eWx2YWwtPnN0cmluZy5jaGFyYWN0ZXJz
ID0gdDsKICAgICAgICAgeXlsdmFsLT5zdHJpbmcubGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICBi
cmVhazsKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNDg3MykKKysr
IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYg
KzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChr
ZGVAY2FyZXdvbGYuY29tKQorICogICAgICAgICAgIChDKSAyMDA2IE5pY2hvbGFzIFNoYW5rcyAo
d2Via2l0QG5pY2tzaGFua3MuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTUyMCwxMiArMTUyMSwxOSBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgaWYg
KGUgPT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFuZzogeworICAgICAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBlLT5nZXRBdHRyaWJ1dGUobGFuZ0F0dHIpOworICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgIXZhbHVlLnN0YXJ0c1dpdGgoc2VsLT5hcmd1bWVu
dCwgZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBp
ZiAodmFsdWUubGVuZ3RoKCkgIT0gc2VsLT5hcmd1bWVudC5sZW5ndGgoKSAmJiB2YWx1ZVtzZWwt
PmFyZ3VtZW50Lmxlbmd0aCgpXSAhPSAnLScpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90OiB7CiAgICAgICAgICAgICAgICAgLy8gY2hlY2sg
dGhlIHNpbXBsZSBzZWxlY3RvcgotICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHN1
YlNlbCA9IHNlbC0+c2ltcGxlU2VsZWN0b3I7IHN1YlNlbDsKLSAgICAgICAgICAgICAgICAgICAg
IHN1YlNlbCA9IHN1YlNlbC0+dGFnSGlzdG9yeSkgewotICAgICAgICAgICAgICAgICAgICAvLyA6
bm90IGNhbm5vdCBuZXN0LiAgSSBkb24ndCByZWFsbHkga25vdyB3aHkgdGhpcyBpcyBhIHJlc3Ry
aWN0aW9uIGluIENTUzMsCi0gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBpcywgc28gbGV0
J3MgaG9ub3IgaXQuCisgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2VsID0g
c2VsLT5zaW1wbGVTZWxlY3Rvcjsgc3ViU2VsOyBzdWJTZWwgPSBzdWJTZWwtPnRhZ0hpc3Rvcnkp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFs
bHkga25vdyB3aHkgdGhpcyBpcyBhCisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3RyaWN0aW9u
IGluIENTUzMsIGJ1dCBpdCBpcywgc28gbGV0J3MgaG9ub3VyIGl0LgogICAgICAgICAgICAgICAg
ICAgICBpZiAoc3ViU2VsLT5zaW1wbGVTZWxlY3RvcikKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2Vs
LCBlKSkKQEAgLTE1MzMsOCArMTU0MSw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tP
bmVTZWxlY3RvcigKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYW5nOgot
ICAgICAgICAgICAgICAgIC8qIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdyAqLwogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT3RoZXI6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKQEAgLTE1NjUsNyArMTU3MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6
Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJ
CXJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gIyMjIGFkZCB0aGUgcmVzdCBvZiB0aGUgY2hl
Y2tzLi4uCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxl
eAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAkocmV2aXNpb24gMTQ4
NzMpCisrKyBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAkod29ya2luZyBjb3B5KQpAQCAtODAs
NiArODAsNyBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiB7aW50
bnVtfSAgICAgICAgICAgICAgICB7eXlUb2sgPSBJTlRFR0VSOyByZXR1cm4geXlUb2s7fQoge251
bX0gICAgICAgICAgICAgICAgICAge3l5VG9rID0gRkxPQVQ7IHJldHVybiB5eVRvazt9CiAKKyJu
b3QoIiAgICAgICAgICAgICAgICAgIHt5eVRvayA9IE5PVEZVTkNUSU9OOyByZXR1cm4geXlUb2s7
fQogInVybCgie3d9e3N0cmluZ317d30iKSIge3l5VG9rID0gVVJJOyByZXR1cm4geXlUb2s7fQog
InVybCgie3d9e3VybH17d30iKSIgICAge3l5VG9rID0gVVJJOyByZXR1cm4geXlUb2s7fQoge2lk
ZW50fSIoIiAgICAgICAgICAgICAge3l5VG9rID0gRlVOQ1RJT047IHJldHVybiB5eVRvazt9Cg==
</data>
<flag name="review"
          id="2576"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>