<?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>56704</bug_id>
          
          <creation_ts>2011-03-18 21:16:29 -0700</creation_ts>
          <short_desc>[fileapi/chromium] Fetch platform path using GetMetadata before creating File from FileEntry*</short_desc>
          <delta_ts>2011-03-21 15:01:54 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>370093</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-03-18 21:16:29 -0700</bug_when>
    <thetext>The implementation of the filesystem API currently requires that the embedder use real system paths for the underlying implementation.  This precludes implementations that e.g. use a database for underlying storage, in which case there aren&apos;t &quot;real&quot; platform paths for directories.

Chromium is about to switch to that type of implementation.  In order to make the WebCore parts portable, I&apos;m going to switch all the cached platform paths to be filesystem URLs instead, as that&apos;s guaranteed to be portable.  However, when you create a File from a FileEntry, you need a real path to wherever the data&apos;s stored [unless you want to virtualize that too, but I&apos;m not going to go that general until I know somebody actually needs it].

This change adds an alternative way to get the path, just for that call site.  Once this patch is in, I&apos;ll add the Chromium code that fills in the data, so it gets used.  Then I&apos;ll be able to do a cleanup pass [or 3], both removing the old code path and cleaning up the data types and variable names that refer to platform paths when they should refer to URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370183</commentid>
    <comment_count>1</comment_count>
      <attachid>86274</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-03-19 17:12:16 -0700</bug_when>
    <thetext>Created attachment 86274
Patch to make supplying a platform path optional; once chromium&apos;s caught up, it&apos;ll be mandatory.

For context, the chromium change is up at http://codereview.chromium.org/6603034/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370184</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-19 17:14:16 -0700</bug_when>
    <thetext>Attachment 86274 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/fileapi/DOMFileSystem.cpp:119:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/fileapi/DOMFileSystem.cpp:123:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/fileapi/DOMFileSystem.cpp:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebKit/chromium/ChangeLog:3:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:16:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:18:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/fileapi/DOMFileSystemSync.cpp:89:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/fileapi/DOMFileSystemSync.cpp:98:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/fileapi/DOMFileSystemSync.cpp:126:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/fileapi/DOMFileSystemSync.cpp:131:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/ChangeLog:3:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 30 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370194</commentid>
    <comment_count>3</comment_count>
      <attachid>86274</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-19 20:19:16 -0700</bug_when>
    <thetext>Comment on attachment 86274
Patch to make supplying a platform path optional; once chromium&apos;s caught up, it&apos;ll be mandatory.

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

Nothing huge but a ton of little things so it would be nice to see it one more time.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:83
&gt; +          : m_failed(false)

4 space indent.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:89
&gt; +    static PassOwnPtr&lt;GetPathHelper&gt; create(GetPathResult* result) {

{ placement. lots of places.


Should be PassRefPtr&lt;GetPathResult&gt;.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:95
&gt; +      ASSERT_NOT_REACHED();

indent. Lots of places.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:107
&gt; +    virtual void didReadDirectoryEntries(bool hasMore)

You&apos;ll need to comment the variable name (because it is unused and that is going to give you a compile error on some platforms).  Several places.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:130
&gt; +    GetPathHelper(GetPathResult* result)

Should be PassRefPtr&lt;GetPathResult&gt;.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:143
&gt; +    RefPtr&lt;GetPathHelper::GetPathResult&gt; result(adoptRef(new GetPathHelper::GetPathResult()));

adoptRef outside of constructor is a really bad sign. The constructor should be private and there should be a static create method which returns a PassRefPtr.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:144
&gt; +    m_asyncFileSystem-&gt;readMetadata(platformPath, GetPathHelper::create(result.get()));

I wonder why GetPathHelper::GetPathResult even exists.  Why can&apos;t the data just be stored in GetPathHelper and get rid of GetPathHelper::GetPathResult?

&gt; WebCore/fileapi/DOMFileSystem.cpp:119
&gt; +    static PassOwnPtr&lt;GetPathCallback&gt; create(DOMFileSystem* filesystem, const String&amp; path, PassRefPtr&lt;FileCallback&gt; successCallback, PassRefPtr&lt;ErrorCallback&gt; errorCallback) {

{ placement...

&gt; WebCore/fileapi/DOMFileSystem.cpp:132
&gt; +      : FileSystemCallbacksBase(errorCallback)

spacing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370199</commentid>
    <comment_count>4</comment_count>
      <attachid>86274</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-19 20:46:35 -0700</bug_when>
    <thetext>Comment on attachment 86274
Patch to make supplying a platform path optional; once chromium&apos;s caught up, it&apos;ll be mandatory.

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

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:77
&gt; +    struct GetPathResult : public RefCounted&lt;GetPathResult&gt; {

Also for ref counted objects, please consider making the destructor private and making RefCounted&lt;&gt; a friend class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370479</commentid>
    <comment_count>5</comment_count>
      <attachid>86337</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-03-21 11:13:35 -0700</bug_when>
    <thetext>Created attachment 86337
Fixed stylistic problems

I think I&apos;ve gotten all the fixes in.  Sorry about all the style kruft--I&apos;m doing this on my Windows box, where I&apos;m not set up to run check-webkit-style, and I&apos;ve been doing too much Chromium code lately.

The reason we need GetPathResult is that GetPathHelper will be deleted [by the caller] as soon as the callback is called--it&apos;s just the way that interface works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370480</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-21 11:15:30 -0700</bug_when>
    <thetext>Attachment 86337 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/fileapi/DOMFileSystemSync.cpp:146:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370482</commentid>
    <comment_count>7</comment_count>
      <attachid>86338</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-03-21 11:16:52 -0700</bug_when>
    <thetext>Created attachment 86338
Fixed the last style failure.

Ah--missed one brace.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370494</commentid>
    <comment_count>8</comment_count>
      <attachid>86338</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-21 11:28:42 -0700</bug_when>
    <thetext>Comment on attachment 86338
Fixed the last style failure.

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

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:79
&gt; +        bool m_failed;

Usually member variables come after methods.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:85
&gt; +          return adoptRef(new GetPathResult());

two spaces.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:92
&gt; +        }

Usually a blank line here.

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:99
&gt; +    static PassOwnPtr&lt;GetPathHelper&gt; create(GetPathResult* result)

Should be PassRefPtr&lt;GetPathResult&gt; result

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:129
&gt; +    // Called when there was an error.

Does this comment add any information? (The method name is didFail.)

&gt; WebCore/fileapi/DOMFileSystemSync.cpp:160
&gt; +    m_asyncFileSystem-&gt;readMetadata(platformPath, GetPathHelper::create(result.get()));

I doubt you need result.get().

&gt; WebCore/fileapi/DOMFileSystem.cpp:119
&gt; +    static PassOwnPtr&lt;GetPathCallback&gt; create(DOMFileSystem* filesystem, const String&amp; path, PassRefPtr&lt;FileCallback&gt; successCallback, PassRefPtr&lt;ErrorCallback&gt; errorCallback)

Since you put filesystem in a RefPtr, it should be passed in via a PassRefPtr.

&gt; WebCore/fileapi/DOMFileSystem.cpp:139
&gt; +    }

Usually a blank line here.

&gt; WebCore/fileapi/DOMFileSystem.cpp:142
&gt; +    PassRefPtr&lt;FileCallback&gt; m_successCallback;

Member variables should be RefPtr not PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370506</commentid>
    <comment_count>9</comment_count>
      <attachid>86344</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-03-21 11:47:35 -0700</bug_when>
    <thetext>Created attachment 86344
Addressed review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370831</commentid>
    <comment_count>10</comment_count>
      <attachid>86344</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 12:37:40 -0700</bug_when>
    <thetext>Comment on attachment 86344
Addressed review comments.

Clearing flags on attachment: 86344

Committed r81599: &lt;http://trac.webkit.org/changeset/81599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370832</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 12:37:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370933</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-21 15:01:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81599 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
http/tests/inspector/network/network-size.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86274</attachid>
            <date>2011-03-19 17:12:16 -0700</date>
            <delta_ts>2011-03-21 11:13:35 -0700</delta_ts>
            <desc>Patch to make supplying a platform path optional; once chromium&apos;s caught up, it&apos;ll be mandatory.</desc>
            <filename>diff_with_cl.txt</filename>
            <type>text/plain</type>
            <size>9190</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbC5jcHAJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzIsNiArNzIs
NyBAQA0KICAgICBmaWxlTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgZmlsZU1ldGFkYXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxl
bmd0aDsKICAgICBmaWxlTWV0YWRhdGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6
VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgZmlsZU1ldGFkYXRhLnBsYXRmb3JtUGF0aCA9
IHdlYkZpbGVJbmZvLnBsYXRmb3JtUGF0aDsKICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVhZE1ldGFk
YXRhKGZpbGVNZXRhZGF0YSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmNwcAkocmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDcg
QEANCiAgICAgICAgIG5ld0luZm8ubW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubW9kaWZpY2F0aW9u
VGltZTsKICAgICAgICAgbmV3SW5mby5sZW5ndGggPSBpbmZvLmxlbmd0aDsKICAgICAgICAgbmV3
SW5mby50eXBlID0gaW5mby50eXBlOworICAgICAgICBuZXdJbmZvLnBsYXRmb3JtUGF0aC5hc3Np
Z24oaW5mby5wbGF0Zm9ybVBhdGguZGF0YSgpLCBpbmZvLnBsYXRmb3JtUGF0aC5sZW5ndGgoKSk7
CiAgICAgICAgIHJldHVybiBuZXdJbmZvOwogICAgIH0KIH07CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQ0KQEAgLTEsMyArMSwyMiBAQA0KKzIwMTEtMDMtMTggIEVyaWMgVWhyaGFuZSA8ZXJpY3VA
Y2hyb21pdW0ub3JnPgorCisJCQkJUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwkJCQlb
ZmlsZWFwaS9jaHJvbWl1bV0gRmV0Y2ggcGxhdGZvcm0gcGF0aCB1c2luZyBHZXRNZXRhZGF0YSBi
ZWZvcmUgY3JlYXRpbmcgRmlsZSBmcm9tIEZpbGVFbnRyeSoKKwkJCQlodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDQKKworCQkJCSogc3JjL1dlYkZpbGVTeXN0ZW1D
YWxsYmFja3NJbXBsLmNwcDoKKwkJCQkoV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZFJl
YWRNZXRhZGF0YSkKKwkJCQlQYXNzIG5ldyBwbGF0Zm9ybVBhdGggbWVtYmVyIHRocm91Z2guCisK
KwkJCQkqIHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKwkJCQkoQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlKQorCQkJCUNvcHkgbmV3IHBsYXRmb3JtUGF0aCBtZW1iZXIuCisK
KwkJCQkqIHB1YmxpYy9XZWJGaWxlSW5mby5oOgorCQkJCShzdHJ1Y3QgV2ViRmlsZUluZm8pCisJ
CQkJQWRkIG5ldyBwbGF0Zm9ybVBhdGggbWVtYmVyLgorCiAyMDExLTAzLTE4ICBUb255IENoYW5n
ICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDgxNTI2
KQ0KKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMxLDYgKzMxLDggQEANCiAjaWZuZGVmIFdlYkZpbGVJbmZvX2gKICNkZWZpbmUgV2Vi
RmlsZUluZm9faAogCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdHJ1Y3QgV2ViRmlsZUluZm8gewpAQCAtNTAsNiArNTIsOCBAQA0KIAogICAgIFR5cGUg
dHlwZTsKIAorICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBXZWJGaWxlSW5mbygp
IDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7
IH0KIH07CiAKSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCShyZXZp
c2lvbiA4MTUyNikNCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCSh3
b3JraW5nIGNvcHkpDQpAQCAtMzMsNiArMzMsOCBAQA0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKIAorI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdy
aXRlci5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnlTeW5jLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgpAQCAtNDAsNiArNDIsNyBAQA0K
ICNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5j
bHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKQEAgLTY3LDEwICs3MCw4OCBAQA0K
ICAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUodGhpcywgRE9NRmlsZVBhdGg6
OnJvb3QpOwogfQogCituYW1lc3BhY2UgeworCitjbGFzcyBHZXRQYXRoSGVscGVyIDogcHVibGlj
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RydWN0IEdldFBhdGhS
ZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRQYXRoUmVzdWx0PiB7CisgICAgICAgIGJvb2wg
bV9mYWlsZWQ7CisgICAgICAgIGludCBtX2NvZGU7CisgICAgICAgIFN0cmluZyBtX3BhdGg7CisK
KyAgICAgICAgR2V0UGF0aFJlc3VsdCgpCisgICAgICAgICAgOiBtX2ZhaWxlZChmYWxzZSkKKyAg
ICAgICAgICAsIG1fY29kZSgwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
c3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aEhlbHBlcj4gY3JlYXRlKEdldFBhdGhSZXN1bHQqIHJl
c3VsdCkgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhIZWxwZXIocmVzdWx0
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKQorICAgIHsKKyAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
PikgeworICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJl
Y3RvcnkpCisgICAgeworICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkKKyAgICB7
CisgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBs
b25nIGxvbmcgbGVuZ3RoKQorICAgIHsKKyAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIC8vIENhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbiBlcnJvci4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChpbnQgY29kZSkKKyAgICB7CisgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQg
PSB0cnVlOworICAgICAgbV9yZXN1bHQtPm1fY29kZSA9IGNvZGU7CisgICAgfQorCisgICAgdmly
dHVhbCB+R2V0UGF0aEhlbHBlcigpIHsgfQorCisgICAgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29u
c3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkgeworICAgICAgICBtX3Jlc3VsdC0+bV9wYXRoID0g
bWV0YWRhdGEucGxhdGZvcm1QYXRoOworICAgIH0KK3ByaXZhdGU6CisgICAgR2V0UGF0aEhlbHBl
cihHZXRQYXRoUmVzdWx0KiByZXN1bHQpCisgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkgeworICAg
IH0KKworICAgIFJlZlB0cjxHZXRQYXRoUmVzdWx0PiBtX3Jlc3VsdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlCisKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUo
Y29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBlYyA9IDA7CiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52
aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBSZWZQdHI8
R2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdD4gcmVzdWx0KGFkb3B0UmVmKG5ldyBHZXRQYXRo
SGVscGVyOjpHZXRQYXRoUmVzdWx0KCkpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1l
dGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aEhlbHBlcjo6Y3JlYXRlKHJlc3VsdC5nZXQoKSkp
OworICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRl
KCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICBpZiAocmVzdWx0LT5tX2ZhaWxlZCkgeworICAgICAgICBlYyA9
IHJlc3VsdC0+bV9jb2RlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFyZXN1
bHQtPm1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHBsYXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9w
YXRoOwogICAgIHJldHVybiBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiA4MTUyNikNCisrKyBXZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zOSw2ICszOSw3
IEBADQogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5j
bHVkZSAiRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKICNpbmNsdWRl
ICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCkBAIC0xMTEsMTIgKzExMiw0MiBAQA0KICAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEdldFBhdGhDYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBj
cmVhdGUoRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQ
YXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwgcGF0aCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBG
aWxlTWV0YWRhdGEmIG1ldGFkYXRhKSB7CisgICAgICAgIGlmICghbWV0YWRhdGEucGxhdGZvcm1Q
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0
aDsKKworICAgICAgICBtX2ZpbGVzeXN0ZW0tPnNjaGVkdWxlQ2FsbGJhY2sobV9zdWNjZXNzQ2Fs
bGJhY2ssIEZpbGU6OmNyZWF0ZShtX3BhdGgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2V0
UGF0aENhbGxiYWNrKERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZShlcnJvckNhbGxiYWNrKQorICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkKKyAg
ICAgICwgbV9wYXRoKHBhdGgpCisgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaykgeworICAgIH0KKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwor
ICAgIFN0cmluZyBtX3BhdGg7CisgICAgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IG1fc3VjY2Vz
c0NhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UKKwordm9pZCBET01GaWxlU3lzdGVtOjpj
cmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7CiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52
aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKLSAgICBzY2hlZHVs
ZUNhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaywgRmlsZTo6Y3JlYXRlKHBsYXRmb3JtUGF0aCkpOwor
CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIEdldFBh
dGhDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTUyNikN
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwxOSBAQA0K
KzIwMTEtMDMtMTggIEVyaWMgVWhyaGFuZSA8ZXJpY3VAY2hyb21pdW0ub3JnPgorCisJCQkJUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwkJCQlbZmlsZWFwaS9jaHJvbWl1bV0gRmV0Y2gg
cGxhdGZvcm0gcGF0aCB1c2luZyBHZXRNZXRhZGF0YSBiZWZvcmUgY3JlYXRpbmcgRmlsZSBmcm9t
IEZpbGVFbnRyeSoKKwkJCQlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY3MDQKKworCQkJCSogZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKwkJCQkoRE9NRmls
ZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpCisJCQkJKGNsYXNzIEdldFBhdGhIZWxwZXIpOiBBZGRl
ZCwgdG8gbG9vayB1cCBwYXRoIGJlZm9yZSBjcmVhdGluZyBGaWxlLgorCQkJCSogZmlsZWFwaS9E
T01GaWxlU3lzdGVtLmNwcAorCQkJCShET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKQorCQkJCShH
ZXRQYXRoQ2FsbGJhY2spOiBBZGRlZCwgdG8gbG9vayB1cCBwYXRoIGJlZm9yZSBjcmVhdGluZyBG
aWxlLgorCQkJCSogcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKKwkJCQkoc3RydWN0IEZpbGVNZXRh
ZGF0YSk6IEFkZGVkIG5ldyBmaWVsZCBwbGF0Zm9ybVBhdGguCisKIDIwMTEtMDMtMTggIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAkocmV2aXNpb24gODE1MjYpDQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMx
LDYgKzMxLDggQEANCiAjaWZuZGVmIEZpbGVNZXRhZGF0YV9oCiAjZGVmaW5lIEZpbGVNZXRhZGF0
YV9oCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNiArNTQsOCBAQA0KIAogICAg
IFR5cGUgdHlwZTsKIAorICAgIFN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBGaWxlTWV0YWRh
dGEoKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShUeXBlVW5rbm93
bikgeyB9CiB9OwogCg==
</data>
<flag name="review"
          id="78511"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86337</attachid>
            <date>2011-03-21 11:13:35 -0700</date>
            <delta_ts>2011-03-21 11:16:52 -0700</delta_ts>
            <desc>Fixed stylistic problems</desc>
            <filename>diff2_with_cl.txt</filename>
            <type>text/plain</type>
            <size>9566</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbC5jcHAJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzIsNiArNzIs
NyBAQA0KICAgICBmaWxlTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgZmlsZU1ldGFkYXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxl
bmd0aDsKICAgICBmaWxlTWV0YWRhdGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6
VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgZmlsZU1ldGFkYXRhLnBsYXRmb3JtUGF0aCA9
IHdlYkZpbGVJbmZvLnBsYXRmb3JtUGF0aDsKICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVhZE1ldGFk
YXRhKGZpbGVNZXRhZGF0YSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmNwcAkocmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDcg
QEANCiAgICAgICAgIG5ld0luZm8ubW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubW9kaWZpY2F0aW9u
VGltZTsKICAgICAgICAgbmV3SW5mby5sZW5ndGggPSBpbmZvLmxlbmd0aDsKICAgICAgICAgbmV3
SW5mby50eXBlID0gaW5mby50eXBlOworICAgICAgICBuZXdJbmZvLnBsYXRmb3JtUGF0aC5hc3Np
Z24oaW5mby5wbGF0Zm9ybVBhdGguZGF0YSgpLCBpbmZvLnBsYXRmb3JtUGF0aC5sZW5ndGgoKSk7
CiAgICAgICAgIHJldHVybiBuZXdJbmZvOwogICAgIH0KIH07CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQ0KQEAgLTEsMyArMSwyMiBAQA0KKzIwMTEtMDMtMTggIEVyaWMgVWhyaGFuZSA8ZXJpY3VA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtmaWxlYXBpL2Nocm9taXVtXSBGZXRjaCBwbGF0Zm9ybSBwYXRoIHVzaW5nIEdldE1l
dGFkYXRhIGJlZm9yZSBjcmVhdGluZyBGaWxlIGZyb20gRmlsZUVudHJ5KgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDQKKworICAgICAgICAqIHNy
Yy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbDo6ZGlkUmVhZE1ldGFkYXRhKQorICAgICAgICBQYXNzIG5ldyBwbGF0Zm9y
bVBhdGggbWVtYmVyIHRocm91Z2guCisKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChDcm9zc1RocmVhZENvcGllckJhc2UpCisgICAg
ICAgIENvcHkgbmV3IHBsYXRmb3JtUGF0aCBtZW1iZXIuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RmlsZUluZm8uaDoKKyAgICAgICAgKHN0cnVjdCBXZWJGaWxlSW5mbykKKyAgICAgICAgQWRkIG5l
dyBwbGF0Zm9ybVBhdGggbWVtYmVyLgorCiAyMDExLTAzLTE4ICBUb255IENoYW5nICA8dG9ueUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMx
LDYgKzMxLDggQEANCiAjaWZuZGVmIFdlYkZpbGVJbmZvX2gKICNkZWZpbmUgV2ViRmlsZUluZm9f
aAogCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgV2ViRmlsZUluZm8gewpAQCAtNTAsNiArNTIsOCBAQA0KIAogICAgIFR5cGUgdHlwZTsKIAor
ICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZp
Y2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAK
SW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCShyZXZpc2lvbiA4MTUy
NikNCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzMsNiArMzMsOCBAQA0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgog
I2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgi
CiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgpAQCAtNDAsNiArNDIsNyBAQA0KICNpbmNsdWRl
ICJGaWxlRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmls
ZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKQEAgLTY3LDEwICs3MCwxMDMgQEANCiAgICAgcmV0
dXJuIERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsK
IH0KIAorbmFtZXNwYWNlIHsKKworY2xhc3MgR2V0UGF0aEhlbHBlciA6IHB1YmxpYyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MgeworcHVibGljOgorICAgIGNsYXNzIEdldFBhdGhSZXN1bHQgOiBw
dWJsaWMgUmVmQ291bnRlZDxHZXRQYXRoUmVzdWx0PiB7CisgICAgICBwdWJsaWM6CisgICAgICAg
IGJvb2wgbV9mYWlsZWQ7CisgICAgICAgIGludCBtX2NvZGU7CisgICAgICAgIFN0cmluZyBtX3Bh
dGg7CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gY3JlYXRlKCkK
KyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0UGF0aFJlc3VsdCgp
KTsKKyAgICAgICAgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAgR2V0UGF0aFJlc3VsdCgpCisg
ICAgICAgICAgICA6IG1fZmFpbGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX2NvZGUoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIH5HZXRQYXRoUmVzdWx0KCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8R2V0UGF0aFJl
c3VsdD47CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhIZWxwZXI+IGNy
ZWF0ZShHZXRQYXRoUmVzdWx0KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEdldFBhdGhIZWxwZXIocmVzdWx0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnko
Y29uc3QgU3RyaW5nJiwgYm9vbCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29s
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoaW50IGNvZGUpCisgICAgeworICAgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQg
PSB0cnVlOworICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5HZXRQYXRoSGVscGVyKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIG1f
cmVzdWx0LT5tX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9ybVBhdGg7CisgICAgfQorcHJpdmF0ZToK
KyAgICBHZXRQYXRoSGVscGVyKFBhc3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gcmVzdWx0KQorICAg
ICAgICA6IG1fcmVzdWx0KHJlc3VsdCkgeworICAgIH0KKworICAgIFJlZlB0cjxHZXRQYXRoUmVz
dWx0PiBtX3Jlc3VsdDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKIFBhc3NSZWZQdHI8RmlsZT4g
RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVu
dHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CiAgICAgU3RyaW5nIHBsYXRm
b3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVu
dHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBSZWZQdHI8R2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3Vs
dD4gcmVzdWx0KEdldFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ6OmNyZWF0ZSgpKTsKKyAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aEhlbHBl
cjo6Y3JlYXRlKHJlc3VsdC5nZXQoKSkpOworICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndh
aXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9u
OjpBQk9SVF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAocmVzdWx0LT5t
X2ZhaWxlZCkgeworICAgICAgICBlYyA9IHJlc3VsdC0+bV9jb2RlOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQtPm1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHBs
YXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9wYXRoOwogICAgIHJldHVybiBGaWxlOjpjcmVhdGUocGxh
dGZvcm1QYXRoKTsKIH0KIApJbmRleDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCShyZXZp
c2lvbiA4MTUyNikNCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkNCkBAIC0zOSw2ICszOSw3IEBADQogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiRmls
ZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IkZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCkBAIC0x
MTEsMTIgKzExMiw0NSBAQA0KICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZp
bGVXcml0ZXIuZ2V0KCksIHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAK
LXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRy
eSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPikKK25hbWVzcGFjZSB7CisKK2NsYXNzIEdldFBhdGhDYWxsYmFjayA6IHB1
YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVtLCBwYXRo
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAg
eworICAgICAgICBpZiAoIW1ldGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBtX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9ybVBhdGg7CisKKyAgICAgICAgbV9maWxlc3lz
dGVtLT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLCBGaWxlOjpjcmVhdGUobV9w
YXRoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdldFBhdGhDYWxsYmFjayhET01GaWxlU3lz
dGVtKiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmlsZUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKKyAgICAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQor
ICAgICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQorICAgICAgICAsIG1fcGF0aChwYXRo
KQorICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICB7Cisg
ICAgfQorICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CisgICAgU3RyaW5n
IG1fcGF0aDsKKyAgICBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7
Cit9OworCit9IC8vIG5hbWVzcGFjZQorCit2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUo
Y29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsK
ICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1Bs
YXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwotICAgIHNjaGVkdWxlQ2FsbGJhY2so
c3VjY2Vzc0NhbGxiYWNrLCBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKSk7CisKKyAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aENhbGxiYWNr
OjpjcmVhdGUodGhpcywgcGxhdGZvcm1QYXRoLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE5IEBADQorMjAxMS0wMy0x
OCAgRXJpYyBVaHJoYW5lIDxlcmljdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2ZpbGVhcGkvY2hyb21pdW1dIEZldGNoIHBs
YXRmb3JtIHBhdGggdXNpbmcgR2V0TWV0YWRhdGEgYmVmb3JlIGNyZWF0aW5nIEZpbGUgZnJvbSBG
aWxlRW50cnkqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjcwNAorCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKyAgICAg
ICAgKERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKQorICAgICAgICAoY2xhc3MgR2V0UGF0
aEhlbHBlcik6IEFkZGVkLCB0byBsb29rIHVwIHBhdGggYmVmb3JlIGNyZWF0aW5nIEZpbGUuCisg
ICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorICAgICAgICAoRE9NRmlsZVN5c3Rl
bTo6Y3JlYXRlRmlsZSkKKyAgICAgICAgKEdldFBhdGhDYWxsYmFjayk6IEFkZGVkLCB0byBsb29r
IHVwIHBhdGggYmVmb3JlIGNyZWF0aW5nIEZpbGUuCisgICAgICAgICogcGxhdGZvcm0vRmlsZU1l
dGFkYXRhLmgKKyAgICAgICAgKHN0cnVjdCBGaWxlTWV0YWRhdGEpOiBBZGRlZCBuZXcgZmllbGQg
cGxhdGZvcm1QYXRoLgorCiAyMDExLTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTWV0YWRhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
RmlsZU1ldGFkYXRhLmgJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vRmls
ZU1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw4IEBADQogI2lmbmRlZiBG
aWxlTWV0YWRhdGFfaAogI2RlZmluZSBGaWxlTWV0YWRhdGFfaAogCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUyLDYgKzU0LDggQEANCiAKICAgICBUeXBlIHR5cGU7CiAKKyAgICBTdHJp
bmcgcGxhdGZvcm1QYXRoOworCiAgICAgRmlsZU1ldGFkYXRhKCkgOiBtb2RpZmljYXRpb25UaW1l
KDAuMCksIGxlbmd0aCgtMSksIHR5cGUoVHlwZVVua25vd24pIHsgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86338</attachid>
            <date>2011-03-21 11:16:52 -0700</date>
            <delta_ts>2011-03-21 11:47:35 -0700</delta_ts>
            <desc>Fixed the last style failure.</desc>
            <filename>diff3_with_cl.txt</filename>
            <type>text/plain</type>
            <size>9571</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbC5jcHAJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzIsNiArNzIs
NyBAQA0KICAgICBmaWxlTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgZmlsZU1ldGFkYXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxl
bmd0aDsKICAgICBmaWxlTWV0YWRhdGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6
VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgZmlsZU1ldGFkYXRhLnBsYXRmb3JtUGF0aCA9
IHdlYkZpbGVJbmZvLnBsYXRmb3JtUGF0aDsKICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVhZE1ldGFk
YXRhKGZpbGVNZXRhZGF0YSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmNwcAkocmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDcg
QEANCiAgICAgICAgIG5ld0luZm8ubW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubW9kaWZpY2F0aW9u
VGltZTsKICAgICAgICAgbmV3SW5mby5sZW5ndGggPSBpbmZvLmxlbmd0aDsKICAgICAgICAgbmV3
SW5mby50eXBlID0gaW5mby50eXBlOworICAgICAgICBuZXdJbmZvLnBsYXRmb3JtUGF0aC5hc3Np
Z24oaW5mby5wbGF0Zm9ybVBhdGguZGF0YSgpLCBpbmZvLnBsYXRmb3JtUGF0aC5sZW5ndGgoKSk7
CiAgICAgICAgIHJldHVybiBuZXdJbmZvOwogICAgIH0KIH07CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQ0KQEAgLTEsMyArMSwyMiBAQA0KKzIwMTEtMDMtMTggIEVyaWMgVWhyaGFuZSA8ZXJpY3VA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtmaWxlYXBpL2Nocm9taXVtXSBGZXRjaCBwbGF0Zm9ybSBwYXRoIHVzaW5nIEdldE1l
dGFkYXRhIGJlZm9yZSBjcmVhdGluZyBGaWxlIGZyb20gRmlsZUVudHJ5KgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDQKKworICAgICAgICAqIHNy
Yy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbDo6ZGlkUmVhZE1ldGFkYXRhKQorICAgICAgICBQYXNzIG5ldyBwbGF0Zm9y
bVBhdGggbWVtYmVyIHRocm91Z2guCisKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChDcm9zc1RocmVhZENvcGllckJhc2UpCisgICAg
ICAgIENvcHkgbmV3IHBsYXRmb3JtUGF0aCBtZW1iZXIuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RmlsZUluZm8uaDoKKyAgICAgICAgKHN0cnVjdCBXZWJGaWxlSW5mbykKKyAgICAgICAgQWRkIG5l
dyBwbGF0Zm9ybVBhdGggbWVtYmVyLgorCiAyMDExLTAzLTE4ICBUb255IENoYW5nICA8dG9ueUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMx
LDYgKzMxLDggQEANCiAjaWZuZGVmIFdlYkZpbGVJbmZvX2gKICNkZWZpbmUgV2ViRmlsZUluZm9f
aAogCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgV2ViRmlsZUluZm8gewpAQCAtNTAsNiArNTIsOCBAQA0KIAogICAgIFR5cGUgdHlwZTsKIAor
ICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZp
Y2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAK
SW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCShyZXZpc2lvbiA4MTUy
NikNCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzMsNiArMzMsOCBAQA0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgog
I2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgi
CiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgpAQCAtNDAsNiArNDIsNyBAQA0KICNpbmNsdWRl
ICJGaWxlRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmls
ZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKQEAgLTY3LDEwICs3MCwxMDQgQEANCiAgICAgcmV0
dXJuIERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsK
IH0KIAorbmFtZXNwYWNlIHsKKworY2xhc3MgR2V0UGF0aEhlbHBlciA6IHB1YmxpYyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MgeworcHVibGljOgorICAgIGNsYXNzIEdldFBhdGhSZXN1bHQgOiBw
dWJsaWMgUmVmQ291bnRlZDxHZXRQYXRoUmVzdWx0PiB7CisgICAgICBwdWJsaWM6CisgICAgICAg
IGJvb2wgbV9mYWlsZWQ7CisgICAgICAgIGludCBtX2NvZGU7CisgICAgICAgIFN0cmluZyBtX3Bh
dGg7CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gY3JlYXRlKCkK
KyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0UGF0aFJlc3VsdCgp
KTsKKyAgICAgICAgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAgR2V0UGF0aFJlc3VsdCgpCisg
ICAgICAgICAgICA6IG1fZmFpbGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX2NvZGUoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIH5HZXRQYXRoUmVzdWx0KCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8R2V0UGF0aFJl
c3VsdD47CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhIZWxwZXI+IGNy
ZWF0ZShHZXRQYXRoUmVzdWx0KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEdldFBhdGhIZWxwZXIocmVzdWx0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnko
Y29uc3QgU3RyaW5nJiwgYm9vbCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29s
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoaW50IGNvZGUpCisgICAgeworICAgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQg
PSB0cnVlOworICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5HZXRQYXRoSGVscGVyKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIG1f
cmVzdWx0LT5tX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9ybVBhdGg7CisgICAgfQorcHJpdmF0ZToK
KyAgICBHZXRQYXRoSGVscGVyKFBhc3NSZWZQdHI8R2V0UGF0aFJlc3VsdD4gcmVzdWx0KQorICAg
ICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPEdldFBh
dGhSZXN1bHQ+IG1fcmVzdWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UKKwogUGFzc1JlZlB0cjxG
aWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5jKiBm
aWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKICAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChm
aWxlRW50cnktPmZ1bGxQYXRoKCkpOworICAgIFJlZlB0cjxHZXRQYXRoSGVscGVyOjpHZXRQYXRo
UmVzdWx0PiByZXN1bHQoR2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdDo6Y3JlYXRlKCkpOwor
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBHZXRQYXRo
SGVscGVyOjpjcmVhdGUocmVzdWx0LmdldCgpKSk7CisgICAgaWYgKCFtX2FzeW5jRmlsZVN5c3Rl
bS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNl
cHRpb246OkFCT1JUX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChyZXN1
bHQtPm1fZmFpbGVkKSB7CisgICAgICAgIGVjID0gcmVzdWx0LT5tX2NvZGU7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICBpZiAoIXJlc3VsdC0+bV9wYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgcGxhdGZvcm1QYXRoID0gcmVzdWx0LT5tX3BhdGg7CiAgICAgcmV0dXJuIEZpbGU6OmNyZWF0
ZShwbGF0Zm9ybVBhdGgpOwogfQogCkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJ
KHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAko
d29ya2luZyBjb3B5KQ0KQEAgLTM5LDYgKzM5LDcgQEANCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlRW50cnkuaCIKKyNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5j
bHVkZSAiRmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIK
QEAgLTExMSwxMiArMTEyLDQ1IEBADQogICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0
ZXIoZmlsZVdyaXRlci5nZXQoKSwgcGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
IH0KIAotdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmls
ZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KQorbmFtZXNwYWNlIHsKKworY2xhc3MgR2V0UGF0aENhbGxiYWNr
IDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxHZXRQYXRoQ2FsbGJhY2s+IGNyZWF0ZShET01GaWxlU3lzdGVtKiBmaWxlc3lz
dGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0s
IHBhdGgsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkK
KyAgICB7CisgICAgICAgIGlmICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIG1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKKworICAgICAgICBtX2Zp
bGVzeXN0ZW0tPnNjaGVkdWxlQ2FsbGJhY2sobV9zdWNjZXNzQ2FsbGJhY2ssIEZpbGU6OmNyZWF0
ZShtX3BhdGgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2V0UGF0aENhbGxiYWNrKERPTUZp
bGVTeXN0ZW0qIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGaWxl
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQorICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJh
Y2spCisgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCisgICAgICAgICwgbV9wYXRo
KHBhdGgpCisgICAgICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAg
IHsKKyAgICB9CisgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKKyAgICBT
dHJpbmcgbV9wYXRoOworICAgIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxs
YmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQogewogICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVh
bFRvUGxhdGZvcm1QYXRoKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgc2NoZWR1bGVDYWxs
YmFjayhzdWNjZXNzQ2FsbGJhY2ssIEZpbGU6OmNyZWF0ZShwbGF0Zm9ybVBhdGgpKTsKKworICAg
IG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBHZXRQYXRoQ2Fs
bGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykpOwogfQogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MjYpDQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsMTkgQEANCisyMDEx
LTAzLTE4ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbZmlsZWFwaS9jaHJvbWl1bV0gRmV0
Y2ggcGxhdGZvcm0gcGF0aCB1c2luZyBHZXRNZXRhZGF0YSBiZWZvcmUgY3JlYXRpbmcgRmlsZSBm
cm9tIEZpbGVFbnRyeSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2NzA0CisKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAor
ICAgICAgICAoRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpCisgICAgICAgIChjbGFzcyBH
ZXRQYXRoSGVscGVyKTogQWRkZWQsIHRvIGxvb2sgdXAgcGF0aCBiZWZvcmUgY3JlYXRpbmcgRmls
ZS4KKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisgICAgICAgIChET01GaWxl
U3lzdGVtOjpjcmVhdGVGaWxlKQorICAgICAgICAoR2V0UGF0aENhbGxiYWNrKTogQWRkZWQsIHRv
IGxvb2sgdXAgcGF0aCBiZWZvcmUgY3JlYXRpbmcgRmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlTWV0YWRhdGEuaAorICAgICAgICAoc3RydWN0IEZpbGVNZXRhZGF0YSk6IEFkZGVkIG5ldyBm
aWVsZCBwbGF0Zm9ybVBhdGguCisKIDIwMTEtMDMtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlTWV0YWRhdGEuaAkocmV2aXNpb24gODE1MjYpDQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDggQEANCiAjaWZu
ZGVmIEZpbGVNZXRhZGF0YV9oCiAjZGVmaW5lIEZpbGVNZXRhZGF0YV9oCiAKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTIsNiArNTQsOCBAQA0KIAogICAgIFR5cGUgdHlwZTsKIAorICAg
IFN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBGaWxlTWV0YWRhdGEoKSA6IG1vZGlmaWNhdGlv
blRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShUeXBlVW5rbm93bikgeyB9CiB9OwogCg==
</data>
<flag name="review"
          id="78575"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86344</attachid>
            <date>2011-03-21 11:47:35 -0700</date>
            <delta_ts>2011-03-21 12:37:40 -0700</delta_ts>
            <desc>Addressed review comments.</desc>
            <filename>diff4_with_cl.txt</filename>
            <type>text/plain</type>
            <size>9572</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbC5jcHAJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzIsNiArNzIs
NyBAQA0KICAgICBmaWxlTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgZmlsZU1ldGFkYXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxl
bmd0aDsKICAgICBmaWxlTWV0YWRhdGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6
VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgZmlsZU1ldGFkYXRhLnBsYXRmb3JtUGF0aCA9
IHdlYkZpbGVJbmZvLnBsYXRmb3JtUGF0aDsKICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVhZE1ldGFk
YXRhKGZpbGVNZXRhZGF0YSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
LmNwcAkocmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDcg
QEANCiAgICAgICAgIG5ld0luZm8ubW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubW9kaWZpY2F0aW9u
VGltZTsKICAgICAgICAgbmV3SW5mby5sZW5ndGggPSBpbmZvLmxlbmd0aDsKICAgICAgICAgbmV3
SW5mby50eXBlID0gaW5mby50eXBlOworICAgICAgICBuZXdJbmZvLnBsYXRmb3JtUGF0aC5hc3Np
Z24oaW5mby5wbGF0Zm9ybVBhdGguZGF0YSgpLCBpbmZvLnBsYXRmb3JtUGF0aC5sZW5ndGgoKSk7
CiAgICAgICAgIHJldHVybiBuZXdJbmZvOwogICAgIH0KIH07CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gODE1MjYpDQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQ0KQEAgLTEsMyArMSwyMiBAQA0KKzIwMTEtMDMtMTggIEVyaWMgVWhyaGFuZSA8ZXJpY3VA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtmaWxlYXBpL2Nocm9taXVtXSBGZXRjaCBwbGF0Zm9ybSBwYXRoIHVzaW5nIEdldE1l
dGFkYXRhIGJlZm9yZSBjcmVhdGluZyBGaWxlIGZyb20gRmlsZUVudHJ5KgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDQKKworICAgICAgICAqIHNy
Yy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbDo6ZGlkUmVhZE1ldGFkYXRhKQorICAgICAgICBQYXNzIG5ldyBwbGF0Zm9y
bVBhdGggbWVtYmVyIHRocm91Z2guCisKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChDcm9zc1RocmVhZENvcGllckJhc2UpCisgICAg
ICAgIENvcHkgbmV3IHBsYXRmb3JtUGF0aCBtZW1iZXIuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RmlsZUluZm8uaDoKKyAgICAgICAgKHN0cnVjdCBXZWJGaWxlSW5mbykKKyAgICAgICAgQWRkIG5l
dyBwbGF0Zm9ybVBhdGggbWVtYmVyLgorCiAyMDExLTAzLTE4ICBUb255IENoYW5nICA8dG9ueUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMx
LDYgKzMxLDggQEANCiAjaWZuZGVmIFdlYkZpbGVJbmZvX2gKICNkZWZpbmUgV2ViRmlsZUluZm9f
aAogCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgV2ViRmlsZUluZm8gewpAQCAtNTAsNiArNTIsOCBAQA0KIAogICAgIFR5cGUgdHlwZTsKIAor
ICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7CisKICAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZp
Y2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAK
SW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCShyZXZpc2lvbiA4MTUy
NikNCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzMsNiArMzMsOCBAQA0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgog
I2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgi
CiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgpAQCAtNDAsNiArNDIsNyBAQA0KICNpbmNsdWRl
ICJGaWxlRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmls
ZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKQEAgLTY3LDEwICs3MCwxMDUgQEANCiAgICAgcmV0
dXJuIERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsK
IH0KIAorbmFtZXNwYWNlIHsKKworY2xhc3MgR2V0UGF0aEhlbHBlciA6IHB1YmxpYyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MgeworcHVibGljOgorICAgIGNsYXNzIEdldFBhdGhSZXN1bHQgOiBw
dWJsaWMgUmVmQ291bnRlZDxHZXRQYXRoUmVzdWx0PiB7CisgICAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdldFBhdGhSZXN1bHQ+IGNyZWF0ZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0UGF0aFJlc3VsdCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgbV9mYWlsZWQ7CisgICAgICAgIGludCBtX2NvZGU7CisgICAgICAg
IFN0cmluZyBtX3BhdGg7CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIEdldFBhdGhSZXN1bHQo
KQorICAgICAgICAgICAgOiBtX2ZhaWxlZChmYWxzZSkKKyAgICAgICAgICAgICwgbV9jb2RlKDAp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5HZXRQYXRoUmVzdWx0KCkKKyAgICAg
ICAgeworICAgICAgICB9CisgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8R2V0
UGF0aFJlc3VsdD47CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhIZWxw
ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdldFBhdGhSZXN1bHQ+IHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0UGF0aEhlbHBlcihyZXN1bHQpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0o
Y29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
YWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmLCBib29sKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJl
Y3RvcnlFbnRyaWVzKGJvb2wpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRy
PEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKQor
ICAgIHsKKyAgICAgICAgbV9yZXN1bHQtPm1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgbV9yZXN1
bHQtPm1fY29kZSA9IGNvZGU7CisgICAgfQorCisgICAgdmlydHVhbCB+R2V0UGF0aEhlbHBlcigp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRh
ZGF0YSYgbWV0YWRhdGEpCisgICAgeworICAgICAgICBtX3Jlc3VsdC0+bV9wYXRoID0gbWV0YWRh
dGEucGxhdGZvcm1QYXRoOworICAgIH0KK3ByaXZhdGU6CisgICAgR2V0UGF0aEhlbHBlcihQYXNz
UmVmUHRyPEdldFBhdGhSZXN1bHQ+IHJlc3VsdCkKKyAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQp
CisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxHZXRQYXRoUmVzdWx0PiBtX3Jlc3VsdDsKK307
CisKK30gLy8gbmFtZXNwYWNlCisKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IDA7CiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsK
KyAgICBSZWZQdHI8R2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdD4gcmVzdWx0KEdldFBhdGhI
ZWxwZXI6OkdldFBhdGhSZXN1bHQ6OmNyZWF0ZSgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aEhlbHBlcjo6Y3JlYXRlKHJlc3VsdCkp
OworICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRl
KCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICBpZiAocmVzdWx0LT5tX2ZhaWxlZCkgeworICAgICAgICBlYyA9
IHJlc3VsdC0+bV9jb2RlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFyZXN1
bHQtPm1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHBsYXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9w
YXRoOwogICAgIHJldHVybiBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiA4MTUyNikNCisrKyBXZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zOSw2ICszOSw3
IEBADQogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5j
bHVkZSAiRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKICNpbmNsdWRl
ICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCkBAIC0xMTEsMTIgKzExMiw0NiBAQA0KICAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPikKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEdldFBhdGhDYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIGlm
ICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fcGF0aCA9
IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKKworICAgICAgICBtX2ZpbGVzeXN0ZW0tPnNjaGVkdWxl
Q2FsbGJhY2sobV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlOjpjcmVhdGUobV9wYXRo
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdldFBhdGhDYWxsYmFjayhQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxG
aWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQorICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2Fs
bGJhY2spCisgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCisgICAgICAgICwgbV9w
YXRoKHBhdGgpCisgICAgICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQor
ICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwor
ICAgIFN0cmluZyBtX3BhdGg7CisgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2Fs
bGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCit2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0
ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKIHsKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1
YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwotICAgIHNjaGVkdWxlQ2Fs
bGJhY2soc3VjY2Vzc0NhbGxiYWNrLCBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKSk7CisKKyAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aENh
bGxiYWNrOjpjcmVhdGUodGhpcywgcGxhdGZvcm1QYXRoLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9n
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTI2KQ0KKysr
IFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE5IEBADQorMjAx
MS0wMy0xOCAgRXJpYyBVaHJoYW5lIDxlcmljdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2ZpbGVhcGkvY2hyb21pdW1dIEZl
dGNoIHBsYXRmb3JtIHBhdGggdXNpbmcgR2V0TWV0YWRhdGEgYmVmb3JlIGNyZWF0aW5nIEZpbGUg
ZnJvbSBGaWxlRW50cnkqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjcwNAorCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAK
KyAgICAgICAgKERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKQorICAgICAgICAoY2xhc3Mg
R2V0UGF0aEhlbHBlcik6IEFkZGVkLCB0byBsb29rIHVwIHBhdGggYmVmb3JlIGNyZWF0aW5nIEZp
bGUuCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorICAgICAgICAoRE9NRmls
ZVN5c3RlbTo6Y3JlYXRlRmlsZSkKKyAgICAgICAgKEdldFBhdGhDYWxsYmFjayk6IEFkZGVkLCB0
byBsb29rIHVwIHBhdGggYmVmb3JlIGNyZWF0aW5nIEZpbGUuCisgICAgICAgICogcGxhdGZvcm0v
RmlsZU1ldGFkYXRhLmgKKyAgICAgICAgKHN0cnVjdCBGaWxlTWV0YWRhdGEpOiBBZGRlZCBuZXcg
ZmllbGQgcGxhdGZvcm1QYXRoLgorCiAyMDExLTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vRmlsZU1ldGFkYXRhLmgJKHJldmlzaW9uIDgxNTI2KQ0KKysrIFdlYkNvcmUvcGxhdGZv
cm0vRmlsZU1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw4IEBADQogI2lm
bmRlZiBGaWxlTWV0YWRhdGFfaAogI2RlZmluZSBGaWxlTWV0YWRhdGFfaAogCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0LDggQEANCiAKICAgICBUeXBlIHR5cGU7CiAKKyAg
ICBTdHJpbmcgcGxhdGZvcm1QYXRoOworCiAgICAgRmlsZU1ldGFkYXRhKCkgOiBtb2RpZmljYXRp
b25UaW1lKDAuMCksIGxlbmd0aCgtMSksIHR5cGUoVHlwZVVua25vd24pIHsgfQogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>