<?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>5187</bug_id>
          
          <creation_ts>2005-09-29 11:34:54 -0700</creation_ts>
          <short_desc>UTF-8 in long text files breaks at some point</short_desc>
          <delta_ts>2005-10-10 09:33:15 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.opensource.apple.com/darwinsource/10.4/ICU-6.2.4/icuSources/data/locales/ru.txt</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20949</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-29 11:34:54 -0700</bug_when>
    <thetext>(also in Radar as rdar://4104720).

Steps to reproduce:
1. Open http://www.opensource.apple.com/darwinsource/10.4/ICU-6.2.4/icuSources/data/locales/ru.txt
2. Scroll down

At some point, the text gets completely garbled.

This file has a BOM, so the browser default encoding shouldn&apos;t matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21025</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-30 14:03:46 -0700</bug_when>
    <thetext>The problem seems to be in [WebTextView appendReceivedData:fromDataSource:]:

        [self replaceCharactersInRange:NSMakeRange([[self string] length], 0)
                            withString:[dataSource _stringWithData:data]];

Here, _stringWithData creates a temporary QTextCodec for each data chunk, which is wrong for several 
reasons. First, the chunk border may split a character encoded as UTF-8 into meaningless parts. Second, 
QTextCodec may guess the encoding from a BOM, which is only present in the first chunk, obviously.

So far, I do not see how to cross the WebBridge and get incremental QTextCodec decoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21066</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-01 06:12:55 -0700</bug_when>
    <thetext>It may be appropriate to solve a related issue together with this one: WebTextRepresentation doesn&apos;t seem 
to respect user-default encoding. To reproduce:
1. Set the default encoding to Cyrillic (Windows)
2. Open http://nypop.com/webkit/sbrf.txt

Expected results: &quot;TECT TECT&quot; (first word in Cyrillic letters, second in Latin ones)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21072</commentid>
    <comment_count>3</comment_count>
      <attachid>4131</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-01 08:58:34 -0700</bug_when>
    <thetext>Created attachment 4131
Proposed patch (WebCore part)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21073</commentid>
    <comment_count>4</comment_count>
      <attachid>4132</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-01 08:59:11 -0700</bug_when>
    <thetext>Created attachment 4132
Proposed patch (WebKit part)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21092</commentid>
    <comment_count>5</comment_count>
      <attachid>4131</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-01 14:13:23 -0700</bug_when>
    <thetext>Comment on attachment 4131
Proposed patch (WebCore part)

Just a couple thoughts.

1.  I don&apos;t think there is any need to have a private class/private pointer in
the original.  WebCoreDecoder is never going to be API, no need to have a layer
of indirection.

2.  This was also uncessary:
-    khtml::Decoder *decoder = new khtml::Decoder();
+    Decoder *decoder = new Decoder();

I&apos;m not sure what the policy is on &quot;using namespace&quot; calls in Obj-C++ files, if
there is one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21128</commentid>
    <comment_count>6</comment_count>
      <attachid>4142</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-02 00:58:50 -0700</bug_when>
    <thetext>Created attachment 4142
Proposed patch (WebCore part)

1. Removed the unnesessary indirection level.
2. Looks like most Obj-C++ files have &quot;using namespace&quot; directives. My guess is
that WebCoreEncodings.mm didn&apos;t use it because it was so tiny.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21207</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-10-02 20:30:29 -0700</bug_when>
    <thetext>&gt; +- (void)flushReceivedDataFromDataSource:(WebDataSource *)dataSource;

This function doesn&apos;t appear to use dataSource - why pass it?

I think it would be better to put the WebCoreDecoder class in its own header called WebCoreDecoder.h. 
Also perhaps decodeData: could become a class method on WebCoreDecoder instead of sitting around on 
the WebCoreEncodings class.

These are only style issues, the substance of the patch all looks great to me.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21251</commentid>
    <comment_count>8</comment_count>
      <attachid>4173</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-03 00:50:30 -0700</bug_when>
    <thetext>Created attachment 4173
proposed patch

Addressed the comments, merged into a single patch.

Didn&apos;t move [WebCoreEncodings decodeData:] to WebCoreDecoder, because it has
substantially different semantics (uses khtml::Decoder rather than
QTextDecoder).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21538</commentid>
    <comment_count>9</comment_count>
      <attachid>4173</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-06 10:25:09 -0700</bug_when>
    <thetext>Comment on attachment 4173
proposed patch

The long term fix for this is to implement text viewing using the HTML view --
we&apos;ve planned to make this change for a while, but in the mean time this is a
great fix to have.

Since the WebCoreDecoder class is new code, the headers should say 2005, not
2003.

No need to initialize variables to 0 in Objective-C, they are all set to 0
automatically.

I think the code in appendReceivedData would read better if textEncodingName
was set inside the if instead of having two separate branches that both create
a decoder.

WebCoreDecoder needs a finalize method that deletes the QTextCodec for when
we&apos;re used in GC mode.

For files in the KWQ directory, we should use the real filenames with &quot;&quot;
instead of the Qt names with &lt;&gt;. So #import &quot;KWQTextCodec.h&quot;.

initWithEncodingName should use QTextCodec::codecForName. I don&apos;t think that
it&apos;s worth it to use KGlobal and KCharsets just to get the Latin-1 default.
It&apos;s just two lines of code. Or we could consider having WebCoreDecoder return
nil when passed an encoding name it doesn&apos;t know, and have the &quot;fall back on
Latin-1&quot; rule out in WebTextView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21549</commentid>
    <comment_count>10</comment_count>
      <attachid>4239</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-06 12:22:56 -0700</bug_when>
    <thetext>Created attachment 4239
revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21551</commentid>
    <comment_count>11</comment_count>
      <attachid>4239</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-06 13:12:42 -0700</bug_when>
    <thetext>Comment on attachment 4239
revised patch

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4131</attachid>
            <date>2005-10-01 08:58:34 -0700</date>
            <delta_ts>2005-10-02 00:59:30 -0700</delta_ts>
            <desc>Proposed patch (WebCore part)</desc>
            <filename>WebTextViewPatch2.txt</filename>
            <type>text/plain</type>
            <size>2763</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVFbmNvZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9rd3EvV2ViQ29yZUVuY29kaW5ncy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMK
ZGlmZiAtcCAtdSAtcjEuMyBXZWJDb3JlRW5jb2RpbmdzLmgKLS0tIFdlYkNvcmVFbmNvZGluZ3Mu
aAkxMyBNYXkgMjAwMyAyMDoxNTo1NCAtMDAwMAkxLjMKKysrIFdlYkNvcmVFbmNvZGluZ3MuaAkx
IE9jdCAyMDA1IDE1OjU2OjI1IC0wMDAwCkBAIC0yNSw2ICsyNSwyMiBAQAogCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdlYkNvcmVEZWNvZGVyUHJpdmF0ZTsK
KworQGludGVyZmFjZSBXZWJDb3JlRGVjb2RlciA6IE5TT2JqZWN0Cit7CitAcHJpdmF0ZQorICAg
IFdlYkNvcmVEZWNvZGVyUHJpdmF0ZSAqX3ByaXZhdGU7Cit9CisKKy0gKFdlYkNvcmVEZWNvZGVy
ICopaW5pdFdpdGhFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lOworKyAoV2Vi
Q29yZURlY29kZXIgKilkZWNvZGVyV2l0aEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGlu
Z05hbWU7CisKKy0gKE5TU3RyaW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YTsKKy0gKE5T
U3RyaW5nICopZmx1c2g7CisKK0BlbmQKKwogQGludGVyZmFjZSBXZWJDb3JlRW5jb2RpbmdzIDog
TlNPYmplY3QKICsgKE5TU3RyaW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZW5jb2Rpbmc7CiBA
ZW5kCkluZGV4OiBXZWJDb3JlRW5jb2RpbmdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2t3cS9XZWJDb3JlRW5jb2RpbmdzLm1tLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjYKZGlmZiAtcCAtdSAtcjEuNiBXZWJDb3JlRW5jb2RpbmdzLm1tCi0tLSBXZWJDb3JlRW5j
b2RpbmdzLm1tCTUgSnVuIDIwMDMgMDA6MjY6MzggLTAwMDAJMS42CisrKyBXZWJDb3JlRW5jb2Rp
bmdzLm1tCTEgT2N0IDIwMDUgMTU6NTY6MjUgLTAwMDAKQEAgLTI2LDEyICsyNiw3MiBAQAogI2lt
cG9ydCAiV2ViQ29yZUVuY29kaW5ncy5oIgogCiAjaW1wb3J0ICJkZWNvZGVyLmgiCit1c2luZyBu
YW1lc3BhY2Uga2h0bWw7CisKKyNpbXBvcnQgPGtnbG9iYWwuaD4KKyNpbXBvcnQgPGtjaGFyc2V0
cy5oPgorI2ltcG9ydCA8cXRleHRjb2RlYy5oPgorCitAaW50ZXJmYWNlIFdlYkNvcmVEZWNvZGVy
UHJpdmF0ZSA6IE5TT2JqZWN0Cit7CitAcHVibGljCisgICAgUVRleHREZWNvZGVyICpkZWNvZGVy
OworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZURlY29kZXJQcml2YXRlCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBkZWxldGUgZGVjb2RlcjsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CitAZW5kCisKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVEZWNvZGVyCisKKy0gKFdlYkNv
cmVEZWNvZGVyICopaW5pdFdpdGhFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1l
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICAKKyAgICBfcHJpdmF0ZSA9IFtbV2Vi
Q29yZURlY29kZXJQcml2YXRlIGFsbG9jXSBpbml0XTsKKyAgICAKKyAgICBib29sIGI7CisgICAg
UVRleHRDb2RlYyAqY29kZWMgPSBLR2xvYmFsOjpjaGFyc2V0cygpLT5jb2RlY0Zvck5hbWUoW2Vu
Y29kaW5nTmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddLCBi
KTsKKyAgICBfcHJpdmF0ZS0+ZGVjb2RlciA9IGNvZGVjLT5tYWtlRGVjb2RlcigpOworICAgIAor
ICAgIHJldHVybiBzZWxmOworfQorCisrIChXZWJDb3JlRGVjb2RlciAqKWRlY29kZXJXaXRoRW5j
b2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nTmFtZQoreworICAgIFdlYkNvcmVEZWNvZGVy
ICpkZWNvZGVyID0gW1tXZWJDb3JlRGVjb2RlciBhbGxvY10gaW5pdFdpdGhFbmNvZGluZ05hbWU6
ZW5jb2RpbmdOYW1lXTsKKyAgICByZXR1cm4gW2RlY29kZXIgYXV0b3JlbGVhc2VdOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3ByaXZhdGUgcmVsZWFzZV07CisgICAgW3N1cGVyIGRl
YWxsb2NdOworfQorCistIChOU1N0cmluZyAqKWRlY29kZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmRlY29kZXItPnRvVW5pY29kZSgoY29uc3QgY2hhciAqKVtk
YXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSwgZmFsc2UpLmdldE5TU3RyaW5nKCk7Cit9CisKKy0g
KE5TU3RyaW5nICopZmx1c2gKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPmRlY29kZXItPnRvVW5p
Y29kZSgiIiwgMCwgdHJ1ZSkuZ2V0TlNTdHJpbmcoKTsKK30KKworQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZUVuY29kaW5ncwogCiArIChOU1N0cmluZyAqKWRlY29kZURhdGE6KE5TRGF0
YSAqKWRhdGEKIHsKLSAgICBraHRtbDo6RGVjb2RlciAqZGVjb2RlciA9IG5ldyBraHRtbDo6RGVj
b2RlcigpOworICAgIERlY29kZXIgKmRlY29kZXIgPSBuZXcgRGVjb2RlcigpOwogICAgIFFTdHJp
bmcgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiAgICAgcmVzdWx0ICs9IGRlY29kZXItPmZsdXNo
KCk7CiAgICAgZGVjb2Rlci0+ZGVyZWYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4132</attachid>
            <date>2005-10-01 08:59:11 -0700</date>
            <delta_ts>2005-10-03 00:50:30 -0700</delta_ts>
            <desc>Proposed patch (WebKit part)</desc>
            <filename>WebTextViewPatch1.txt</filename>
            <type>text/plain</type>
            <size>4029</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYlRleHRSZXByZXNlbnRhdGlvbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRSZXByZXNlbnRhdGlvbi5tLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE5CmRpZmYgLXAgLXUgLXIxLjE5IFdlYlRleHRSZXByZXNlbnRh
dGlvbi5tCi0tLSBXZWJUZXh0UmVwcmVzZW50YXRpb24ubQkyMCBTZXAgMjAwNSAwODozMzowNiAt
MDAwMAkxLjE5CisrKyBXZWJUZXh0UmVwcmVzZW50YXRpb24ubQkxIE9jdCAyMDA1IDE1OjUzOjE1
IC0wMDAwCkBAIC03NSw3ICs3NSw5IEBACiAKIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7Ci0KKyAgICBXZWJUZXh0Vmll
dyAqdmlldyA9IChXZWJUZXh0VmlldyAqKVtbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIGZyYW1lVmll
d10gZG9jdW1lbnRWaWV3XTsKKyAgICBBU1NFUlQoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViVGV4
dFZpZXcgY2xhc3NdXSk7CisgICAgW3ZpZXcgZmx1c2hSZWNlaXZlZERhdGFGcm9tRGF0YVNvdXJj
ZTpkYXRhU291cmNlXTsKIH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKSW5k
ZXg6IFdlYlRleHRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9X
ZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMApk
aWZmIC1wIC11IC1yMS4yMCBXZWJUZXh0Vmlldy5oCi0tLSBXZWJUZXh0Vmlldy5oCTIwIFNlcCAy
MDA1IDA4OjMzOjA2IC0wMDAwCTEuMjAKKysrIFdlYlRleHRWaWV3LmgJMSBPY3QgMjAwNSAxNTo1
MzoxNSAtMDAwMApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VhcmNo
YWJsZVRleHRWaWV3Lmg+CiAKIEBjbGFzcyBXZWJEYXRhU291cmNlOworQGNsYXNzIFdlYkNvcmVE
ZWNvZGVyOwogCiBAaW50ZXJmYWNlIFdlYlRleHRWaWV3IDogV2ViU2VhcmNoYWJsZVRleHRWaWV3
IDxXZWJEb2N1bWVudFZpZXcsIFdlYkRvY3VtZW50VGV4dCwgV2ViRG9jdW1lbnRFbGVtZW50Pgog
ewogICAgIGZsb2F0IF90ZXh0U2l6ZU11bHRpcGxpZXI7CisgICAgV2ViQ29yZURlY29kZXIgKl9k
ZWNvZGVyOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzOwpAQCAtNDEsNSAr
NDMsNiBAQAogLSAodm9pZClzZXRGaXhlZFdpZHRoRm9udDsKIAogLSAodm9pZClhcHBlbmRSZWNl
aXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilk
YXRhU291cmNlOworLSAodm9pZClmbHVzaFJlY2VpdmVkRGF0YUZyb21EYXRhU291cmNlOihXZWJE
YXRhU291cmNlICopZGF0YVNvdXJjZTsKIAogQGVuZApJbmRleDogV2ViVGV4dFZpZXcubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0
Vmlldy5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYzCmRpZmYgLXAgLXUgLXIxLjYzIFdlYlRl
eHRWaWV3Lm0KLS0tIFdlYlRleHRWaWV3Lm0JMjYgU2VwIDIwMDUgMTk6MDc6MDAgLTAwMDAJMS42
MworKysgV2ViVGV4dFZpZXcubQkxIE9jdCAyMDA1IDE1OjUzOjE2IC0wMDAwCkBAIC00NCw2ICs0
NCw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJUZXh0UmVwcmVzZW50YXRpb24uaD4KIAorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRW5j
b2RpbmdzLmg+CisKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgogCiBAaW50
ZXJmYWNlIE5TVGV4dFZpZXcgKEFwcEtpdFNlY3JldCkKQEAgLTg3LDYgKzg5LDcgQEAKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmIChzZWxmKSB7CiAgICAg
ICAgIF90ZXh0U2l6ZU11bHRpcGxpZXIgPSAxLjA7CisgICAgICAgIF9kZWNvZGVyID0gMDsKICAg
ICAgICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGVdOwogICAg
ICAgICBbc2VsZiBzZXRFZGl0YWJsZTpOT107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZgpAQCAtMTAwLDYgKzEwMyw3IEBACiAt
ICh2b2lkKWRlYWxsb2MKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworICAgIFtfZGVjb2RlciByZWxlYXNlXTsKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTIwMSw3ICsyMDUsNyBAQAogLy8gb2YgZGF0YSByZWNl
aXZlZCBzbyBmYXIuIFRoaXMgaXMgYSBiYWQgZGVzaWduIGluIHRoYXQgaXQgcmVxdWlyZXMKIC8v
IFdlYlRleHRSZXByZXNlbnRhdGlvbiB0byBrbm93IHRoYXQgaXQncyB2aWV3IGlzIGEgV2ViVGV4
dFZpZXcsIGJ1dCB0aGlzCiAvLyBiYWQgZGVzaWduIGFscmVhZHkgZXhpc3RlZC4KLS0gKHZvaWQp
YXBwZW5kUmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIGZyb21EYXRhU291cmNlOihXZWJEYXRh
U291cmNlICopZGF0YVNvdXJjZTsKKy0gKHZvaWQpYXBwZW5kUmVjZWl2ZWREYXRhOihOU0RhdGEg
KilkYXRhIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewogICAg
IGlmIChbc2VsZiBpc1JpY2hUZXh0XSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRy
eSB0byBwcm9ncmVzc2l2ZWx5IGxvYWQgUlRGLgpAQCAtMjExLDggKzIxNSwyNyBAQAogICAgICAg
ICAgICAgW3NlbGYgX2FkanVzdFJpY2hUZXh0Rm9udFNpemVCeVJhdGlvOl90ZXh0U2l6ZU11bHRp
cGxpZXJdOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFfZGVjb2Rlcikg
eworICAgICAgICAgICAgTlNTdHJpbmcgKnRleHRFbmNvZGluZ05hbWUgPSBbZGF0YVNvdXJjZSB0
ZXh0RW5jb2RpbmdOYW1lXTsKKyAgICAgICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQorICAg
ICAgICAgICAgICAgIF9kZWNvZGVyID0gW1tXZWJDb3JlRGVjb2RlciBhbGxvY10gaW5pdFdpdGhF
bmNvZGluZ05hbWU6dGV4dEVuY29kaW5nTmFtZV07CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgX2RlY29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBpbml0V2l0aEVuY29k
aW5nTmFtZTpbW3NlbGYgX3ByZWZlcmVuY2VzXSBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZV1dOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBbc2VsZiByZXBsYWNlQ2hhcmFjdGVyc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoW1tzZWxmIHN0cmluZ10gbGVuZ3RoXSwgMCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aXRoU3RyaW5nOltkYXRhU291cmNlIF9zdHJpbmdXaXRoRGF0YTpkYXRh
XV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFN0cmluZzpbX2RlY29kZXIgZGVj
b2RlRGF0YTpkYXRhXV07CisgICAgfQorfQorCistICh2b2lkKWZsdXNoUmVjZWl2ZWREYXRhRnJv
bURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCit7CisgICAgaWYgKFtzZWxm
IGlzUmljaFRleHRdKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIHByb2dy
ZXNzaXZlbHkgbG9hZCBSVEYuCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKF9kZWNvZGVyKQor
ICAgICAgICAgICAgW3NlbGYgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKFtb
c2VsZiBzdHJpbmddIGxlbmd0aF0sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0
aFN0cmluZzpbX2RlY29kZXIgZmx1c2hdXTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4142</attachid>
            <date>2005-10-02 00:58:50 -0700</date>
            <delta_ts>2005-10-03 00:50:30 -0700</delta_ts>
            <desc>Proposed patch (WebCore part)</desc>
            <filename>WebTextViewPatch2.txt</filename>
            <type>text/plain</type>
            <size>2510</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVFbmNvZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9rd3EvV2ViQ29yZUVuY29kaW5ncy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMK
ZGlmZiAtcCAtdSAtcjEuMyBXZWJDb3JlRW5jb2RpbmdzLmgKLS0tIFdlYkNvcmVFbmNvZGluZ3Mu
aAkxMyBNYXkgMjAwMyAyMDoxNTo1NCAtMDAwMAkxLjMKKysrIFdlYkNvcmVFbmNvZGluZ3MuaAky
IE9jdCAyMDA1IDA3OjMzOjI1IC0wMDAwCkBAIC0yNSw2ICsyNSwyNiBAQAogCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorI2lmZGVmIF9fY3BsdXNwbHVzCisgICAgY2xhc3Mg
UVRleHREZWNvZGVyOworI2Vsc2UKKyAgICBAY2xhc3MgUVRleHREZWNvZGVyOworI2VuZGlmCisK
K0BpbnRlcmZhY2UgV2ViQ29yZURlY29kZXIgOiBOU09iamVjdAoreworQHByaXZhdGUKKyAgICBR
VGV4dERlY29kZXIgKl9kZWNvZGVyOworfQorCistIChXZWJDb3JlRGVjb2RlciAqKWluaXRXaXRo
RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nTmFtZTsKKysgKFdlYkNvcmVEZWNvZGVy
ICopZGVjb2RlcldpdGhFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lOworCist
IChOU1N0cmluZyAqKWRlY29kZURhdGE6KE5TRGF0YSAqKWRhdGE7CistIChOU1N0cmluZyAqKWZs
dXNoOworCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViQ29yZUVuY29kaW5ncyA6IE5TT2JqZWN0CiAr
IChOU1N0cmluZyAqKWRlY29kZURhdGE6KE5TRGF0YSAqKWVuY29kaW5nOwogQGVuZApJbmRleDog
V2ViQ29yZUVuY29kaW5ncy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9rd3EvV2ViQ29yZUVuY29kaW5ncy5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYg
LXAgLXUgLXIxLjYgV2ViQ29yZUVuY29kaW5ncy5tbQotLS0gV2ViQ29yZUVuY29kaW5ncy5tbQk1
IEp1biAyMDAzIDAwOjI2OjM4IC0wMDAwCTEuNgorKysgV2ViQ29yZUVuY29kaW5ncy5tbQkyIE9j
dCAyMDA1IDA3OjMzOjI1IC0wMDAwCkBAIC0yNiwxMiArMjYsNTUgQEAKICNpbXBvcnQgIldlYkNv
cmVFbmNvZGluZ3MuaCIKIAogI2ltcG9ydCAiZGVjb2Rlci5oIgordXNpbmcgbmFtZXNwYWNlIGto
dG1sOworCisjaW1wb3J0IDxrZ2xvYmFsLmg+CisjaW1wb3J0IDxrY2hhcnNldHMuaD4KKyNpbXBv
cnQgPHF0ZXh0Y29kZWMuaD4KKworCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZURlY29kZXIKKwor
LSAoV2ViQ29yZURlY29kZXIgKilpbml0V2l0aEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNv
ZGluZ05hbWUKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIAorICAgIGJvb2wgYjsK
KyAgICBRVGV4dENvZGVjICpjb2RlYyA9IEtHbG9iYWw6OmNoYXJzZXRzKCktPmNvZGVjRm9yTmFt
ZShbZW5jb2RpbmdOYW1lIGNTdHJpbmdVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGlu
Z10sIGIpOworICAgIF9kZWNvZGVyID0gY29kZWMtPm1ha2VEZWNvZGVyKCk7CisgICAgCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKysgKFdlYkNvcmVEZWNvZGVyICopZGVjb2RlcldpdGhFbmNvZGlu
Z05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lCit7CisgICAgV2ViQ29yZURlY29kZXIgKmRl
Y29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBpbml0V2l0aEVuY29kaW5nTmFtZTplbmNv
ZGluZ05hbWVdOworICAgIHJldHVybiBbZGVjb2RlciBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIGRlbGV0ZSBfZGVjb2RlcjsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKE5TU3RyaW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIHJl
dHVybiBfZGVjb2Rlci0+dG9Vbmljb2RlKChjb25zdCBjaGFyICopW2RhdGEgYnl0ZXNdLCBbZGF0
YSBsZW5ndGhdLCBmYWxzZSkuZ2V0TlNTdHJpbmcoKTsKK30KKworLSAoTlNTdHJpbmcgKilmbHVz
aAoreworICAgIHJldHVybiBfZGVjb2Rlci0+dG9Vbmljb2RlKCIiLCAwLCB0cnVlKS5nZXROU1N0
cmluZygpOworfQorCitAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlRW5jb2RpbmdzCiAK
ICsgKE5TU3RyaW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQogewotICAgIGtodG1sOjpE
ZWNvZGVyICpkZWNvZGVyID0gbmV3IGtodG1sOjpEZWNvZGVyKCk7CisgICAgRGVjb2RlciAqZGVj
b2RlciA9IG5ldyBEZWNvZGVyKCk7CiAgICAgUVN0cmluZyByZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
KTsKICAgICByZXN1bHQgKz0gZGVjb2Rlci0+Zmx1c2goKTsKICAgICBkZWNvZGVyLT5kZXJlZigp
Owo=
</data>
<flag name="review"
          id="655"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4173</attachid>
            <date>2005-10-03 00:50:30 -0700</date>
            <delta_ts>2005-10-06 12:22:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>WebTextViewPatch.txt</filename>
            <type>text/plain</type>
            <size>14706</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IGt3cS9XZWJDb3JlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGt3cS9XZWJD
b3JlRGVjb2Rlci5oCi0tLSBrd3EvV2ViQ29yZURlY29kZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBrd3EvV2ViQ29yZURlY29kZXIuaAkzIE9jdCAyMDA1IDA2OjA2OjM3IC0wMDAw
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyAgICBjbGFzcyBRVGV4dERl
Y29kZXI7CisjZWxzZQorICAgIEBjbGFzcyBRVGV4dERlY29kZXI7CisjZW5kaWYKKworQGludGVy
ZmFjZSBXZWJDb3JlRGVjb2RlciA6IE5TT2JqZWN0Cit7CitAcHJpdmF0ZQorICAgIFFUZXh0RGVj
b2RlciAqX2RlY29kZXI7Cit9CisKKy0gKFdlYkNvcmVEZWNvZGVyICopaW5pdFdpdGhFbmNvZGlu
Z05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lOworKyAoV2ViQ29yZURlY29kZXIgKilkZWNv
ZGVyV2l0aEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWU7CisKKy0gKE5TU3Ry
aW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YTsKKy0gKE5TU3RyaW5nICopZmx1c2g7CisK
K0BlbmQKSW5kZXg6IGt3cS9XZWJDb3JlRGVjb2Rlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBr
d3EvV2ViQ29yZURlY29kZXIubW0KLS0tIGt3cS9XZWJDb3JlRGVjb2Rlci5tbQkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBrd3EvV2ViQ29yZURlY29kZXIubW0JMyBPY3QgMjAwNSAwNjow
Nzo0NyAtMDAwMApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
ICJXZWJDb3JlRGVjb2Rlci5oIgorCisjaW1wb3J0IDxrZ2xvYmFsLmg+CisjaW1wb3J0IDxrY2hh
cnNldHMuaD4KKyNpbXBvcnQgPHF0ZXh0Y29kZWMuaD4KKworCitAaW1wbGVtZW50YXRpb24gV2Vi
Q29yZURlY29kZXIKKworLSAoV2ViQ29yZURlY29kZXIgKilpbml0V2l0aEVuY29kaW5nTmFtZToo
TlNTdHJpbmcgKillbmNvZGluZ05hbWUKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAg
IAorICAgIGJvb2wgYjsKKyAgICBRVGV4dENvZGVjICpjb2RlYyA9IEtHbG9iYWw6OmNoYXJzZXRz
KCktPmNvZGVjRm9yTmFtZShbZW5jb2RpbmdOYW1lIGNTdHJpbmdVc2luZ0VuY29kaW5nOk5TQVND
SUlTdHJpbmdFbmNvZGluZ10sIGIpOworICAgIF9kZWNvZGVyID0gY29kZWMtPm1ha2VEZWNvZGVy
KCk7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKFdlYkNvcmVEZWNvZGVyICopZGVj
b2RlcldpdGhFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lCit7CisgICAgV2Vi
Q29yZURlY29kZXIgKmRlY29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBpbml0V2l0aEVu
Y29kaW5nTmFtZTplbmNvZGluZ05hbWVdOworICAgIHJldHVybiBbZGVjb2RlciBhdXRvcmVsZWFz
ZV07Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGRlbGV0ZSBfZGVjb2RlcjsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICopZGVjb2RlRGF0YTooTlNEYXRhICop
ZGF0YQoreworICAgIHJldHVybiBfZGVjb2Rlci0+dG9Vbmljb2RlKChjb25zdCBjaGFyICopW2Rh
dGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdLCBmYWxzZSkuZ2V0TlNTdHJpbmcoKTsKK30KKworLSAo
TlNTdHJpbmcgKilmbHVzaAoreworICAgIHJldHVybiBfZGVjb2Rlci0+dG9Vbmljb2RlKCIiLCAw
LCB0cnVlKS5nZXROU1N0cmluZygpOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
ZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL1dlYkNvcmUuZXhwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQ0CmRpZmYgLXAgLXUgLXIxLjQ0IFdlYkNvcmUvV2ViQ29y
ZS5leHAKLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAJMzAgSnVsIDIwMDUgMDk6MDU6MDEgLTAwMDAJ
MS40NAorKysgV2ViQ29yZS9XZWJDb3JlLmV4cAkzIE9jdCAyMDA1IDA3OjM2OjQxIC0wMDAwCkBA
IC0xMDYsNiArMTA2LDcgQEAKIC5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUNhY2hlCiAub2JqY19j
bGFzc19uYW1lX1dlYkNvcmVDb29raWVBZGFwdGVyCiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVF
bmNvZGluZ3MKKy5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZURlY29kZXIKIC5vYmpjX2NsYXNzX25h
bWVfV2ViQ29yZUdyYXBoaWNzQnJpZGdlCiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVIaXN0b3J5
CiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeQpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjMxCmRpZmYgLXAgLXUgLXIxLjMxIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCi0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkyIE9jdCAyMDA1IDE5OjUxOjIxIC0wMDAwCTEuMzEKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTMgT2N0IDIwMDUgMDc6MzY6NTQg
LTAwMDAKQEAgLTIyOTAsNiArMjI5MCwxMCBAQAogCQlCQzE3OThEQTA4OERBNEY4MDA2MDY4QTUg
LyogcmVuZGVyX3RoZW1lX21hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxNzk4RDkwODhEQTRGODAwNjA2OEE1IC8qIHJlbmRlcl90aGVtZV9tYWMu
aCAqLzsgfTsKIAkJQkNFRjM0MzQwODdCNTYzRTAwQkJGODMzIC8qIGh0bWxmYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUYzNDMyMDg3
QjU2M0UwMEJCRjgzMyAvKiBodG1sZmFjdG9yeS5jcHAgKi87IH07CiAJCUJDRUYzNDM1MDg3QjU2
M0UwMEJCRjgzMyAvKiBodG1sZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFRjM0MzMwODdCNTYzRTAwQkJGODMzIC8qIGh0bWxmYWN0b3J5
LmggKi87IH07CisJCUUxRUU3NzM3MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc3MzUw
OEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVEZWNvZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTFFRTc3MzgwOEYxMDg2QzAwMTY2ODcwIC8q
IFdlYkNvcmVEZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFFRTc3MzYwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVEZWNvZGVyLm1tICov
OyB9OworCQlFMUVFNzczOTA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU3NzM1MDhGMTA4
NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUxRUU3NzNBMDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJD
b3JlRGVjb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRUU3NzM2MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5tbSAqLzsgfTsK
IAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJC
MDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwogLyog
RW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTM4ODgsNiArMzg5Miw4IEBACiAJCUJF
Q0U2N0JEMDcwODdCMjUwMDA3QzE0QiAvKiB0ZXh0X2FmZmluaXR5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSB0ZXh0X2FmZmluaXR5Lmg7IHBhdGggPSBlZGl0aW5nL3RleHRf
YWZmaW5pdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkVGN0VFQTAwNUZGOEYw
RDAwOTcxN0VFIC8qIEtXUUVkaXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBLV1FFZGl0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
RUY3RUVBMTA1RkY4RjBEMDA5NzE3RUUgLyogS1dRRWRpdENvbW1hbmQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1dRRWRpdENvbW1hbmQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3Jl
RGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRGVjb2Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVFNzczNjA4RjEwODZDMDAxNjY4
NzAgLyogV2ViQ29yZURlY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJDb3JlRGVjb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUQwNDhBQkIwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZm
OyBuYW1lID0gdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZjsgcGF0aCA9IFJlc291cmNlcy90ZXh0
QXJlYVJlc2l6ZUNvcm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREE0
QUM5NzA3NkZCODkxMDBERDIzRUMgLyogZWRpdF9hY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IGVkaXRfYWN0aW9ucy5oOyBwYXRoID0gZWRpdGluZy9lZGl0X2FjdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUxMTdCQzkwMkY5RkZFRjAxODYz
NUNFIC8qIEtXUVNpZ25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS1dR
U2lnbmFsLmg7IHBhdGggPSBrd3EvS1dRU2lnbmFsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKQEAgLTY2MjQsNiArNjYzMCw4IEBACiAJCQkJRjU4Nzg1NDkwMkRFMzc1OTAxRUE0MTIy
IC8qIFdlYkNvcmVDb29raWVBZGFwdGVyLmggKi8sCiAJCQkJRjU4Nzg1NEEwMkRFMzc1OTAxRUE0
MTIyIC8qIFdlYkNvcmVDb29raWVBZGFwdGVyLm0gKi8sCiAJCQkJRjU2MjM0REYwMzAyNkQ3MzAx
NjI5QjQ3IC8qIFdlYkNvcmVFbmNvZGluZ3MuaCAqLywKKwkJCQlFMUVFNzczNTA4RjEwODZDMDAx
NjY4NzAgLyogV2ViQ29yZURlY29kZXIuaCAqLywKKwkJCQlFMUVFNzczNjA4RjEwODZDMDAxNjY4
NzAgLyogV2ViQ29yZURlY29kZXIubW0gKi8sCiAJCQkJRjU2MjM0RTAwMzAyNkQ3MzAxNjI5QjQ3
IC8qIFdlYkNvcmVFbmNvZGluZ3MubW0gKi8sCiAJCQkJRjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIy
IC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKIAkJCQlCRTI2RjE1MzA1NTE3REUwMDBCRkEwQzMg
LyogV2ViQ29yZUdyYXBoaWNzQnJpZGdlLmggKi8sCkBAIC03MjQwLDYgKzcyNDgsNyBAQAogCQkJ
CUJDMTc5OERBMDg4REE0RjgwMDYwNjhBNSAvKiByZW5kZXJfdGhlbWVfbWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTZGRUVEODA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVn
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4ODVDNDA4QjdFM0QxMDBFNzA3QzQgLyogRXZl
bnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFRTc3MzcwOEYxMDg2QzAwMTY2ODcwIC8q
IFdlYkNvcmVEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTgxMjIsNiArODEzMSw3IEBACiAJ
CQkJQThFQTQzNDcwOEUxNEVBQzAwNEJDMzk2IC8qIHJlbmRlcl9rY2FudmFzd3JhcHBlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTQzNDkwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tbm9k
ZXRyZWV3cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNDM0QjA4RTE0RUFDMDA0QkMz
OTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxRUU3
NzM5MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC05NTM3LDYgKzk1NDcsNyBAQAogCQkJCUJDMTc5ODkzMDg4RDk3NUYwMDYwNjhBNSAvKiByZW5k
ZXJfdGhlbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U2RkVFRDkwODk4NTgyMzAwQzQ0QzNG
IC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTg4NUMz
MDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUx
RUU3NzM4MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMTAzMTksNiArMTAzMzAsNyBAQAogCQkJCUE4RUE0MzRBMDhFMTRFQUMwMDRCQzM5NiAv
KiBkb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNDM0
QzA4RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTg2MzMxMkYwOEUzQUIyNTAwOUNGRUY0IC8qIENERkludGVyZmFjZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMUVFNzczQTA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZURl
Y29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9XZWJWaWV3LnN1YnByb2ovV2Vi
VGV4dFJlcHJlc2VudGF0aW9uLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktp
dC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFJlcHJlc2VudGF0aW9uLm0sdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTkKZGlmZiAtcCAtdSAtcjEuMTkgV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJU
ZXh0UmVwcmVzZW50YXRpb24ubQotLS0gV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0UmVw
cmVzZW50YXRpb24ubQkyMCBTZXAgMjAwNSAwODozMzowNiAtMDAwMAkxLjE5CisrKyBXZWJLaXQv
V2ViVmlldy5zdWJwcm9qL1dlYlRleHRSZXByZXNlbnRhdGlvbi5tCTMgT2N0IDIwMDUgMDc6NDI6
MDcgLTAwMDAKQEAgLTc1LDcgKzc1LDkgQEAKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRo
RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLQorICAgIFdlYlRleHRW
aWV3ICp2aWV3ID0gKFdlYlRleHRWaWV3ICopW1tbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddOworICAgIEFTU0VSVChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJU
ZXh0VmlldyBjbGFzc11dKTsKKyAgICBbdmlldyBmbHVzaFJlY2VpdmVkRGF0YV07CiB9CiAKIC0g
KEJPT0wpY2FuUHJvdmlkZURvY3VtZW50U291cmNlCkluZGV4OiBXZWJLaXQvV2ViVmlldy5zdWJw
cm9qL1dlYlRleHRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9X
ZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMApk
aWZmIC1wIC11IC1yMS4yMCBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3LmgKLS0t
IFdlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcuaAkyMCBTZXAgMjAwNSAwODozMzow
NiAtMDAwMAkxLjIwCisrKyBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3LmgJMyBP
Y3QgMjAwNSAwNzo0MjowNyAtMDAwMApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW1wb3J0IDxXZWJL
aXQvV2ViU2VhcmNoYWJsZVRleHRWaWV3Lmg+CiAKIEBjbGFzcyBXZWJEYXRhU291cmNlOworQGNs
YXNzIFdlYkNvcmVEZWNvZGVyOwogCiBAaW50ZXJmYWNlIFdlYlRleHRWaWV3IDogV2ViU2VhcmNo
YWJsZVRleHRWaWV3IDxXZWJEb2N1bWVudFZpZXcsIFdlYkRvY3VtZW50VGV4dCwgV2ViRG9jdW1l
bnRFbGVtZW50PgogewogICAgIGZsb2F0IF90ZXh0U2l6ZU11bHRpcGxpZXI7CisgICAgV2ViQ29y
ZURlY29kZXIgKl9kZWNvZGVyOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVz
OwpAQCAtNDEsNSArNDMsNiBAQAogLSAodm9pZClzZXRGaXhlZFdpZHRoRm9udDsKIAogLSAodm9p
ZClhcHBlbmRSZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgZnJvbURhdGFTb3VyY2U6KFdlYkRh
dGFTb3VyY2UgKilkYXRhU291cmNlOworLSAodm9pZClmbHVzaFJlY2VpdmVkRGF0YTsKIAogQGVu
ZApJbmRleDogV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3Lm0s
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjMKZGlmZiAtcCAtdSAtcjEuNjMgV2ViS2l0L1dlYlZp
ZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCi0tLSBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRl
eHRWaWV3Lm0JMjYgU2VwIDIwMDUgMTk6MDc6MDAgLTAwMDAJMS42MworKysgV2ViS2l0L1dlYlZp
ZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCTMgT2N0IDIwMDUgMDc6NDI6MDcgLTAwMDAKQEAgLTQ0
LDYgKzQ0LDggQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYlRleHRSZXByZXNlbnRhdGlvbi5oPgogCisjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVEZWNvZGVyLmg+CisKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgogCiBA
aW50ZXJmYWNlIE5TVGV4dFZpZXcgKEFwcEtpdFNlY3JldCkKQEAgLTg3LDYgKzg5LDcgQEAKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmIChzZWxmKSB7CiAg
ICAgICAgIF90ZXh0U2l6ZU11bHRpcGxpZXIgPSAxLjA7CisgICAgICAgIF9kZWNvZGVyID0gMDsK
ICAgICAgICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGVdOwog
ICAgICAgICBbc2VsZiBzZXRFZGl0YWJsZTpOT107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZgpAQCAtMTAwLDYgKzEwMyw3IEBA
CiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworICAgIFtfZGVjb2RlciByZWxlYXNlXTsKICAg
ICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTIwMSw3ICsyMDUsNyBAQAogLy8gb2YgZGF0YSBy
ZWNlaXZlZCBzbyBmYXIuIFRoaXMgaXMgYSBiYWQgZGVzaWduIGluIHRoYXQgaXQgcmVxdWlyZXMK
IC8vIFdlYlRleHRSZXByZXNlbnRhdGlvbiB0byBrbm93IHRoYXQgaXQncyB2aWV3IGlzIGEgV2Vi
VGV4dFZpZXcsIGJ1dCB0aGlzCiAvLyBiYWQgZGVzaWduIGFscmVhZHkgZXhpc3RlZC4KLS0gKHZv
aWQpYXBwZW5kUmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIGZyb21EYXRhU291cmNlOihXZWJE
YXRhU291cmNlICopZGF0YVNvdXJjZTsKKy0gKHZvaWQpYXBwZW5kUmVjZWl2ZWREYXRhOihOU0Rh
dGEgKilkYXRhIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewog
ICAgIGlmIChbc2VsZiBpc1JpY2hUZXh0XSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHRyeSB0byBwcm9ncmVzc2l2ZWx5IGxvYWQgUlRGLgpAQCAtMjExLDggKzIxNSwyNyBAQAogICAg
ICAgICAgICAgW3NlbGYgX2FkanVzdFJpY2hUZXh0Rm9udFNpemVCeVJhdGlvOl90ZXh0U2l6ZU11
bHRpcGxpZXJdOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFfZGVjb2Rl
cikgeworICAgICAgICAgICAgTlNTdHJpbmcgKnRleHRFbmNvZGluZ05hbWUgPSBbZGF0YVNvdXJj
ZSB0ZXh0RW5jb2RpbmdOYW1lXTsKKyAgICAgICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQor
ICAgICAgICAgICAgICAgIF9kZWNvZGVyID0gW1tXZWJDb3JlRGVjb2RlciBhbGxvY10gaW5pdFdp
dGhFbmNvZGluZ05hbWU6dGV4dEVuY29kaW5nTmFtZV07CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgX2RlY29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBpbml0V2l0aEVu
Y29kaW5nTmFtZTpbW3NlbGYgX3ByZWZlcmVuY2VzXSBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZV1d
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBbc2VsZiByZXBsYWNlQ2hhcmFjdGVyc0lu
UmFuZ2U6TlNNYWtlUmFuZ2UoW1tzZWxmIHN0cmluZ10gbGVuZ3RoXSwgMCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aXRoU3RyaW5nOltkYXRhU291cmNlIF9zdHJpbmdXaXRoRGF0YTpk
YXRhXV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFN0cmluZzpbX2RlY29kZXIg
ZGVjb2RlRGF0YTpkYXRhXV07CisgICAgfQorfQorCistICh2b2lkKWZsdXNoUmVjZWl2ZWREYXRh
Cit7CisgICAgaWYgKFtzZWxmIGlzUmljaFRleHRdKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdHJ5IHRvIHByb2dyZXNzaXZlbHkgbG9hZCBSVEYuCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKF9kZWNvZGVyKQorICAgICAgICAgICAgW3NlbGYgcmVwbGFjZUNoYXJhY3RlcnNJblJh
bmdlOk5TTWFrZVJhbmdlKFtbc2VsZiBzdHJpbmddIGxlbmd0aF0sIDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aFN0cmluZzpbX2RlY29kZXIgZmx1c2hdXTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="670"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4239</attachid>
            <date>2005-10-06 12:22:56 -0700</date>
            <delta_ts>2005-10-06 13:12:42 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>WebTextViewPatch2.txt</filename>
            <type>text/plain</type>
            <size>14434</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IGt3cS9XZWJDb3JlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGt3cS9XZWJD
b3JlRGVjb2Rlci5oCi0tLSBrd3EvV2ViQ29yZURlY29kZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBrd3EvV2ViQ29yZURlY29kZXIuaAk2IE9jdCAyMDA1IDE4OjUyOjEwIC0wMDAw
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyAgICBjbGFzcyBRVGV4dERl
Y29kZXI7CisjZWxzZQorICAgIEBjbGFzcyBRVGV4dERlY29kZXI7CisjZW5kaWYKKworQGludGVy
ZmFjZSBXZWJDb3JlRGVjb2RlciA6IE5TT2JqZWN0Cit7CitAcHJpdmF0ZQorICAgIFFUZXh0RGVj
b2RlciAqX2RlY29kZXI7Cit9CisKKy0gKFdlYkNvcmVEZWNvZGVyICopaW5pdFdpdGhFbmNvZGlu
Z05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lOworKyAoV2ViQ29yZURlY29kZXIgKilkZWNv
ZGVyV2l0aEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWU7CisKKy0gKE5TU3Ry
aW5nICopZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YTsKKy0gKE5TU3RyaW5nICopZmx1c2g7CisK
K0BlbmQKSW5kZXg6IGt3cS9XZWJDb3JlRGVjb2Rlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBr
d3EvV2ViQ29yZURlY29kZXIubW0KLS0tIGt3cS9XZWJDb3JlRGVjb2Rlci5tbQkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBrd3EvV2ViQ29yZURlY29kZXIubW0JNiBPY3QgMjAwNSAxODo1
Nzo0MCAtMDAwMApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
ICJXZWJDb3JlRGVjb2Rlci5oIgorI2ltcG9ydCAiS1dRVGV4dENvZGVjLmgiCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJDb3JlRGVjb2RlcgorCistIChXZWJDb3JlRGVjb2RlciAqKWluaXRXaXRoRW5j
b2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nTmFtZQoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgCisgICAgUVRleHRDb2RlYyAqY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zv
ck5hbWUoW2VuY29kaW5nTmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5j
b2RpbmddKTsKKyAgICBpZiAoIWNvZGVjKQorICAgICAgICBjb2RlYyA9IFFUZXh0Q29kZWM6OmNv
ZGVjRm9yTmFtZSgiSVNPLTg4NTktMSIpOworICAgIAorICAgIF9kZWNvZGVyID0gY29kZWMtPm1h
a2VEZWNvZGVyKCk7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKFdlYkNvcmVEZWNv
ZGVyICopZGVjb2RlcldpdGhFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lCit7
CisgICAgV2ViQ29yZURlY29kZXIgKmRlY29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBp
bml0V2l0aEVuY29kaW5nTmFtZTplbmNvZGluZ05hbWVdOworICAgIHJldHVybiBbZGVjb2RlciBh
dXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGRlbGV0ZSBfZGVjb2Rl
cjsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluYWxpemUKK3sKKyAgICBk
ZWxldGUgX2RlY29kZXI7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoTlNTdHJpbmcg
KilkZWNvZGVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgcmV0dXJuIF9kZWNvZGVyLT50b1Vu
aWNvZGUoKGNvbnN0IGNoYXIgKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0sIGZhbHNlKS5n
ZXROU1N0cmluZygpOworfQorCistIChOU1N0cmluZyAqKWZsdXNoCit7CisgICAgcmV0dXJuIF9k
ZWNvZGVyLT50b1VuaWNvZGUoIiIsIDAsIHRydWUpLmdldE5TU3RyaW5nKCk7Cit9CisKK0BlbmQK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUvV2ViQ29yZS5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDQKZGlmZiAtcCAt
dSAtcjEuNDQgV2ViQ29yZS9XZWJDb3JlLmV4cAotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cAkzMCBK
dWwgMjAwNSAwOTowNTowMSAtMDAwMAkxLjQ0CisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwCTYgT2N0
IDIwMDUgMTk6MjQ6MTQgLTAwMDAKQEAgLTEwNSw2ICsxMDUsNyBAQAogLm9iamNfY2xhc3NfbmFt
ZV9XZWJDb3JlQnJpZGdlCiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVDYWNoZQogLm9iamNfY2xh
c3NfbmFtZV9XZWJDb3JlQ29va2llQWRhcHRlcgorLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRGVj
b2RlcgogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRW5jb2RpbmdzCiAub2JqY19jbGFzc19uYW1l
X1dlYkNvcmVHcmFwaGljc0JyaWRnZQogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlSGlzdG9yeQpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMxCmRpZmYgLXAgLXUgLXIxLjMxIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCi0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyIE9jdCAyMDA1IDE5OjUxOjIxIC0wMDAwCTEuMzEK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTYgT2N0IDIwMDUg
MTk6MjQ6MjAgLTAwMDAKQEAgLTIyOTAsNiArMjI5MCwxMCBAQAogCQlCQzE3OThEQTA4OERBNEY4
MDA2MDY4QTUgLyogcmVuZGVyX3RoZW1lX21hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxNzk4RDkwODhEQTRGODAwNjA2OEE1IC8qIHJlbmRlcl90
aGVtZV9tYWMuaCAqLzsgfTsKIAkJQkNFRjM0MzQwODdCNTYzRTAwQkJGODMzIC8qIGh0bWxmYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUYzNDMyMDg3QjU2M0UwMEJCRjgzMyAvKiBodG1sZmFjdG9yeS5jcHAgKi87IH07CiAJCUJDRUYz
NDM1MDg3QjU2M0UwMEJCRjgzMyAvKiBodG1sZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRjM0MzMwODdCNTYzRTAwQkJGODMzIC8qIGh0
bWxmYWN0b3J5LmggKi87IH07CisJCUUxRUU3NzM3MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3Jl
RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFRTc3MzUwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVEZWNvZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTFFRTc3MzgwOEYxMDg2QzAw
MTY2ODcwIC8qIFdlYkNvcmVEZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFFRTc3MzYwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVEZWNv
ZGVyLm1tICovOyB9OworCQlFMUVFNzczOTA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZURlY29k
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU3
NzM1MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUxRUU3NzNBMDhGMTA4NkMwMDE2Njg3
MCAvKiBXZWJDb3JlRGVjb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRUU3NzM2MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5t
bSAqLzsgfTsKIAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICov
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTM4ODgsNiArMzg5Miw4
IEBACiAJCUJFQ0U2N0JEMDcwODdCMjUwMDA3QzE0QiAvKiB0ZXh0X2FmZmluaXR5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0ZXh0X2FmZmluaXR5Lmg7IHBhdGggPSBlZGl0
aW5nL3RleHRfYWZmaW5pdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkVGN0VF
QTAwNUZGOEYwRDAwOTcxN0VFIC8qIEtXUUVkaXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBLV1FFZGl0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCRUY3RUVBMTA1RkY4RjBEMDA5NzE3RUUgLyogS1dRRWRpdENvbW1hbmQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1dRRWRpdENvbW1hbmQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3MCAv
KiBXZWJDb3JlRGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVFNzczNjA4RjEw
ODZDMDAxNjY4NzAgLyogV2ViQ29yZURlY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlRGVjb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRUQwNDhBQkIwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVy
LnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS50aWZmOyBuYW1lID0gdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZjsgcGF0aCA9IFJlc291
cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFREE0QUM5NzA3NkZCODkxMDBERDIzRUMgLyogZWRpdF9hY3Rpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGVkaXRfYWN0aW9ucy5oOyBwYXRoID0gZWRpdGluZy9l
ZGl0X2FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUxMTdCQzkwMkY5
RkZFRjAxODYzNUNFIC8qIEtXUVNpZ25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gS1dRU2lnbmFsLmg7IHBhdGggPSBrd3EvS1dRU2lnbmFsLmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKQEAgLTY2MjQsNiArNjYzMCw4IEBACiAJCQkJRjU4Nzg1NDkwMkRFMzc1
OTAxRUE0MTIyIC8qIFdlYkNvcmVDb29raWVBZGFwdGVyLmggKi8sCiAJCQkJRjU4Nzg1NEEwMkRF
Mzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVDb29raWVBZGFwdGVyLm0gKi8sCiAJCQkJRjU2MjM0REYw
MzAyNkQ3MzAxNjI5QjQ3IC8qIFdlYkNvcmVFbmNvZGluZ3MuaCAqLywKKwkJCQlFMUVFNzczNTA4
RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZURlY29kZXIuaCAqLywKKwkJCQlFMUVFNzczNjA4RjEw
ODZDMDAxNjY4NzAgLyogV2ViQ29yZURlY29kZXIubW0gKi8sCiAJCQkJRjU2MjM0RTAwMzAyNkQ3
MzAxNjI5QjQ3IC8qIFdlYkNvcmVFbmNvZGluZ3MubW0gKi8sCiAJCQkJRjU4Nzg1NEMwMkRFMzc1
OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKIAkJCQlCRTI2RjE1MzA1NTE3REUw
MDBCRkEwQzMgLyogV2ViQ29yZUdyYXBoaWNzQnJpZGdlLmggKi8sCkBAIC03MjQwLDYgKzcyNDgs
NyBAQAogCQkJCUJDMTc5OERBMDg4REE0RjgwMDYwNjhBNSAvKiByZW5kZXJfdGhlbWVfbWFjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3RTZGRUVEODA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNj
cmlwdERlYnVnZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4ODVDNDA4QjdFM0QxMDBFNzA3
QzQgLyogRXZlbnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFRTc3MzcwOEYxMDg2QzAw
MTY2ODcwIC8qIFdlYkNvcmVEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTgxMjIsNiArODEz
MSw3IEBACiAJCQkJQThFQTQzNDcwOEUxNEVBQzAwNEJDMzk2IC8qIHJlbmRlcl9rY2FudmFzd3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTQzNDkwOEUxNEVBQzAwNEJDMzk2IC8qIGRv
bV9rZG9tbm9kZXRyZWV3cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNDM0QjA4RTE0
RUFDMDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUxRUU3NzM5MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC05NTM3LDYgKzk1NDcsNyBAQAogCQkJCUJDMTc5ODkzMDg4RDk3NUYwMDYwNjhB
NSAvKiByZW5kZXJfdGhlbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U2RkVFRDkwODk4NTgy
MzAwQzQ0QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTg4NUMzMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUUxRUU3NzM4MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlRGVjb2Rlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMTAzMTksNiArMTAzMzAsNyBAQAogCQkJCUE4RUE0MzRBMDhFMTRFQUMw
MDRCQzM5NiAvKiBkb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEVBNDM0QzA4RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg2MzMxMkYwOEUzQUIyNTAwOUNGRUY0IC8qIENERkludGVy
ZmFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVFNzczQTA4RjEwODZDMDAxNjY4NzAgLyog
V2ViQ29yZURlY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9XZWJWaWV3LnN1
YnByb2ovV2ViVGV4dFJlcHJlc2VudGF0aW9uLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFJlcHJlc2VudGF0aW9uLm0sdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTkKZGlmZiAtcCAtdSAtcjEuMTkgV2ViS2l0L1dlYlZpZXcuc3Vi
cHJvai9XZWJUZXh0UmVwcmVzZW50YXRpb24ubQotLS0gV2ViS2l0L1dlYlZpZXcuc3VicHJvai9X
ZWJUZXh0UmVwcmVzZW50YXRpb24ubQkyMCBTZXAgMjAwNSAwODozMzowNiAtMDAwMAkxLjE5Cisr
KyBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRSZXByZXNlbnRhdGlvbi5tCTYgT2N0IDIw
MDUgMTk6MjQ6MzAgLTAwMDAKQEAgLTc1LDcgKzc1LDkgQEAKIAogLSAodm9pZClmaW5pc2hlZExv
YWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLQorICAg
IFdlYlRleHRWaWV3ICp2aWV3ID0gKFdlYlRleHRWaWV3ICopW1tbZGF0YVNvdXJjZSB3ZWJGcmFt
ZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOworICAgIEFTU0VSVChbdmlldyBpc0tpbmRPZkNs
YXNzOltXZWJUZXh0VmlldyBjbGFzc11dKTsKKyAgICBbdmlldyBmbHVzaFJlY2VpdmVkRGF0YV07
CiB9CiAKIC0gKEJPT0wpY2FuUHJvdmlkZURvY3VtZW50U291cmNlCkluZGV4OiBXZWJLaXQvV2Vi
Vmlldy5zdWJwcm9qL1dlYlRleHRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4yMApkaWZmIC1wIC11IC1yMS4yMCBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRW
aWV3LmgKLS0tIFdlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcuaAkyMCBTZXAgMjAw
NSAwODozMzowNiAtMDAwMAkxLjIwCisrKyBXZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRleHRW
aWV3LmgJNiBPY3QgMjAwNSAxOToyNDozMCAtMDAwMApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViU2VhcmNoYWJsZVRleHRWaWV3Lmg+CiAKIEBjbGFzcyBXZWJEYXRhU291
cmNlOworQGNsYXNzIFdlYkNvcmVEZWNvZGVyOwogCiBAaW50ZXJmYWNlIFdlYlRleHRWaWV3IDog
V2ViU2VhcmNoYWJsZVRleHRWaWV3IDxXZWJEb2N1bWVudFZpZXcsIFdlYkRvY3VtZW50VGV4dCwg
V2ViRG9jdW1lbnRFbGVtZW50PgogewogICAgIGZsb2F0IF90ZXh0U2l6ZU11bHRpcGxpZXI7Cisg
ICAgV2ViQ29yZURlY29kZXIgKl9kZWNvZGVyOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVk
TUlNRVR5cGVzOwpAQCAtNDEsNSArNDMsNiBAQAogLSAodm9pZClzZXRGaXhlZFdpZHRoRm9udDsK
IAogLSAodm9pZClhcHBlbmRSZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgZnJvbURhdGFTb3Vy
Y2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlOworLSAodm9pZClmbHVzaFJlY2VpdmVkRGF0
YTsKIAogQGVuZApJbmRleDogV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlRl
eHRWaWV3Lm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjMKZGlmZiAtcCAtdSAtcjEuNjMgV2Vi
S2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCi0tLSBXZWJLaXQvV2ViVmlldy5zdWJw
cm9qL1dlYlRleHRWaWV3Lm0JMjYgU2VwIDIwMDUgMTk6MDc6MDAgLTAwMDAJMS42MworKysgV2Vi
S2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCTYgT2N0IDIwMDUgMTk6MjQ6MzEgLTAw
MDAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYlRleHRSZXByZXNlbnRhdGlvbi5oPgogCisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVEZWNvZGVyLmg+CisKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25z
ZS5oPgogCiBAaW50ZXJmYWNlIE5TVGV4dFZpZXcgKEFwcEtpdFNlY3JldCkKQEAgLTEwMCw2ICsx
MDIsNyBAQAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBbX2RlY29kZXIgcmVsZWFz
ZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0yMDEsNyArMjA0LDcgQEAKIC8vIG9m
IGRhdGEgcmVjZWl2ZWQgc28gZmFyLiBUaGlzIGlzIGEgYmFkIGRlc2lnbiBpbiB0aGF0IGl0IHJl
cXVpcmVzCiAvLyBXZWJUZXh0UmVwcmVzZW50YXRpb24gdG8ga25vdyB0aGF0IGl0J3MgdmlldyBp
cyBhIFdlYlRleHRWaWV3LCBidXQgdGhpcwogLy8gYmFkIGRlc2lnbiBhbHJlYWR5IGV4aXN0ZWQu
Ci0tICh2b2lkKWFwcGVuZFJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YSBmcm9tRGF0YVNvdXJj
ZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2U7CistICh2b2lkKWFwcGVuZFJlY2VpdmVkRGF0
YTooTlNEYXRhICopZGF0YSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3Vy
Y2UKIHsKICAgICBpZiAoW3NlbGYgaXNSaWNoVGV4dF0pIHsKICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB0cnkgdG8gcHJvZ3Jlc3NpdmVseSBsb2FkIFJURi4KQEAgLTIxMSw4ICsyMTQsMjcg
QEAKICAgICAgICAgICAgIFtzZWxmIF9hZGp1c3RSaWNoVGV4dEZvbnRTaXplQnlSYXRpbzpfdGV4
dFNpemVNdWx0aXBsaWVyXTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgh
X2RlY29kZXIpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0ZXh0RW5jb2RpbmdOYW1lID0gW2Rh
dGFTb3VyY2UgdGV4dEVuY29kaW5nTmFtZV07CisgICAgICAgICAgICBpZiAodGV4dEVuY29kaW5n
TmFtZSA9PSBuaWwpCisgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZSA9IFtbc2VsZiBf
cHJlZmVyZW5jZXNdIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lXTsKKworICAgICAgICAgICAgX2Rl
Y29kZXIgPSBbW1dlYkNvcmVEZWNvZGVyIGFsbG9jXSBpbml0V2l0aEVuY29kaW5nTmFtZTp0ZXh0
RW5jb2RpbmdOYW1lXTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgW3NlbGYgcmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKFtbc2VsZiBzdHJpbmddIGxlbmd0aF0sIDAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFN0cmluZzpbZGF0YVNvdXJjZSBfc3Ry
aW5nV2l0aERhdGE6ZGF0YV1dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhTdHJp
bmc6W19kZWNvZGVyIGRlY29kZURhdGE6ZGF0YV1dOworICAgIH0KK30KKworLSAodm9pZClmbHVz
aFJlY2VpdmVkRGF0YQoreworICAgIGlmIChbc2VsZiBpc1JpY2hUZXh0XSkgeworICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBwcm9ncmVzc2l2ZWx5IGxvYWQgUlRGLgorICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChfZGVjb2RlcikKKyAgICAgICAgICAgIFtzZWxmIHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZShbW3NlbGYgc3RyaW5nXSBsZW5ndGhdLCAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhTdHJpbmc6W19kZWNvZGVyIGZsdXNoXV07
CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="693"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>