<?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>47355</bug_id>
          
          <creation_ts>2010-10-07 09:24:16 -0700</creation_ts>
          <short_desc>Change WK2 session restoring to restore the full back/forward list</short_desc>
          <delta_ts>2011-01-07 08:57:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291048</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-07 09:24:16 -0700</bug_when>
    <thetext>Change WK2 session restoring to restore the full back/forward list.

In https://bugs.webkit.org/show_bug.cgi?id=47354 we&apos;ll finally be hooking up the basic session state saving/restoring mechanism, and it will save the back/forward list.  It won&apos;t yet restore it - that added work is tracked by this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329871</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-05 16:47:50 -0800</bug_when>
    <thetext>In radar as &lt;rdar://problem/8261624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329873</commentid>
    <comment_count>2</comment_count>
      <attachid>78062</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-05 16:50:58 -0800</bug_when>
    <thetext>Created attachment 78062
Send session state from UI -&gt; Web process (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329901</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-05 17:10:38 -0800</bug_when>
    <thetext>Attachment 78062 did not build on win:
Build output: http://queues.webkit.org/results/7257404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329908</commentid>
    <comment_count>4</comment_count>
      <attachid>78076</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-05 17:15:04 -0800</bug_when>
    <thetext>Created attachment 78076
Send session state from UI -&gt; Web process (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329913</commentid>
    <comment_count>5</comment_count>
      <attachid>78076</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-05 17:19:59 -0800</bug_when>
    <thetext>Comment on attachment 78076
Send session state from UI -&gt; Web process (v2) 

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

&gt; WebKit2/UIProcess/cf/WebBackForwardListCF.cpp:43
&gt; +static uint64_t generateWebBackForwardItemID()
&gt; +{
&gt; +    // These IDs exist in the UIProcess for items created by the UIProcess.
&gt; +    // The IDs generated here need to never collide with the IDs created in WebBackForwardListProxy in the WebProcess.
&gt; +    // We accomplish this by started from the max and counting down, while the WebProcess starts from 1 and counts up.
&gt; +    static uint64_t uniqueHistoryItemID = ULONG_LONG_MAX - 1;
&gt; +    return uniqueHistoryItemID--;
&gt; +}

I prefer the odd/even approach here.

&gt; WebKit2/WebProcess/WebPage/WebPage.h:339
&gt; +    void restoreSession(const SessionState&amp;);

Fix paragraphing.

&gt; WebKit2/WebProcess/WebPage/WebPage.messages.in:105
&gt; +    # Speling and grammar.

This is not related. Please don&apos;t check it in.  Also, you suck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329929</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-05 17:34:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75121

Working on the last chunk right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330596</commentid>
    <comment_count>7</comment_count>
      <attachid>78198</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-06 18:29:44 -0800</bug_when>
    <thetext>Created attachment 78198
Finish it up!  (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330618</commentid>
    <comment_count>8</comment_count>
      <attachid>78198</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 19:51:39 -0800</bug_when>
    <thetext>Comment on attachment 78198
Finish it up!  (v1)

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

Great! Very exciting.

&gt; WebKit2/UIProcess/WebProcessProxy.cpp:195
&gt; +    std::pair&lt;WebBackForwardListItemMap::iterator, bool&gt; result = m_backForwardListItemMap.add(item-&gt;itemID(), 0);
&gt; +    
&gt; +    // This item was just created by the UIProcess and is being added to the map for the first time
&gt; +    // so we should not already have an item for this ID.
&gt; +    ASSERT(result.second);
&gt; +    
&gt; +    result.first-&gt;second = item;

I would write this like this:

    ASSERT(!m_backForwardListItemMap.contains(item-&gt;itemID());

    m_backForwardListItemMap.set(item-&gt;itemID(), item);

It&apos;s better to avoid all that pair stuff if you don’t need it.

&gt; WebKit2/UIProcess/cf/WebPageProxyCF.cpp:132
&gt; +    WebProcessProxy* webProcess = process();

Not sure it’s helpful to put that in a local variable. But if you do, I suggest just naming it process:

    WebProcessProxy* process = this-&gt;process();

And I suggest using it on the line below where RestoreSession is sent.

&gt; WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp:86
&gt; +    // UIProcess itemIDs should be even...

Why the three dots? Just one period should do.

&gt; WebKit2/WebProcess/WebPage/WebBackForwardListProxy.h:43
&gt; +    static void addHistoryItemFromUIProcess(uint64_t itemID, PassRefPtr&lt;WebCore::HistoryItem&gt;);

I don’t think this function needs “history” in its name.

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:856
&gt; +    const BackForwardListItemVector&amp; list(sessionState.list());

I prefer assignment-style syntax to construction style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330788</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-07 08:53:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 78198 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78198&amp;action=review
&gt; 
&gt; Great! Very exciting.
&gt; 
&gt; &gt; WebKit2/UIProcess/WebProcessProxy.cpp:195
&gt; &gt; +    std::pair&lt;WebBackForwardListItemMap::iterator, bool&gt; result = m_backForwardListItemMap.add(item-&gt;itemID(), 0);
&gt; &gt; +    
&gt; &gt; +    // This item was just created by the UIProcess and is being added to the map for the first time
&gt; &gt; +    // so we should not already have an item for this ID.
&gt; &gt; +    ASSERT(result.second);
&gt; &gt; +    
&gt; &gt; +    result.first-&gt;second = item;
&gt; 
&gt; I would write this like this:
&gt;...
&gt; It&apos;s better to avoid all that pair stuff if you don’t need it.

Yup.

&gt; &gt; WebKit2/UIProcess/cf/WebPageProxyCF.cpp:132
&gt; &gt; +    WebProcessProxy* webProcess = process();
&gt; 
&gt; Not sure it’s helpful to put that in a local variable. But if you do, I suggest just naming it process:
&gt; 
&gt;     WebProcessProxy* process = this-&gt;process();
&gt; 
&gt; And I suggest using it on the line below where RestoreSession is sent.

Compiler doesn&apos;t want me to have a local variable named the same as a current-scoped function.

But I&apos;ll just remove it.  An earlier iteration of the code called process() about three times as much as this patch, which is where the temporary is from.  I&apos;ll just remove it.

&gt; &gt; WebKit2/WebProcess/WebPage/WebPage.cpp:856
&gt; &gt; +    const BackForwardListItemVector&amp; list(sessionState.list());
&gt; 
&gt; I prefer assignment-style syntax to construction style.

Oh FINE.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330789</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-07 08:57:05 -0800</bug_when>
    <thetext>r75246</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78062</attachid>
            <date>2011-01-05 16:50:58 -0800</date>
            <delta_ts>2011-01-05 17:15:04 -0800</delta_ts>
            <desc>Send session state from UI -&gt; Web process (v1)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10669</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTExOSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMDEtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUKKyAgICAgICAgQ2hhbmdlIFdlYktpdDIgc2Vzc2lvbiBy
ZXN0b3JpbmcgdG8gcmVzdG9yZSB0aGUgZnVsbCBiYWNrL2ZvcndhcmQgbGlzdAorCisgICAgICAg
IEFkZCBhIG5ldyBtZXNzYWdlIHRvIHRlbGwgdGhlIFdlYlByb2Nlc3MgdG8gcmVzdG9yZSBhIHNl
c3Npb24gc3RhdGU6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBQcm92aWRlIGFjY2Vzc29ycyB0byB0aGUg
ZW50cmllcyBpbiB0aGUgbGlzdCB0byBwYXNzIHRvIHRoZSBXZWJQcm9jZXNzOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjplbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0OjpjdXJyZW50SW5kZXgpOgorCisgICAgICAgIEFkZCBkZWNvZGluZyBvZiB0aGUgc2F2ZWQg
YmFjay9mb3J3YXJkIGxpc3QgaXRtZXMgKHdlIGFscmVhZHkgZW5jb2RlIHRoZW0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgor
CisgICAgICAgIEluc3RlYWQgb2YgbG9hZGluZyB0aGUgY3VycmVudCBVUkwsIHBhc3MgdGhlIGVu
dGlyZSBsYXN0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogVUlQcm9jZXNzL2Nm
L1dlYlBhZ2VQcm94eUNGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEpOgorCiAyMDExLTAxLTA1ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lvbiA3NTExNikK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02Niw3ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFj
a0l0ZW0oKTsKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmb3J3YXJkSXRlbSgpOwogICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1BdEluZGV4KGludCk7CisgICAgCisgICAgY29u
c3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgZW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZW50cmllczsgfQogCisgICAgdWludDMyX3QgY3VycmVudEluZGV4KCkgeyByZXR1cm4gbV9jdXJy
ZW50OyB9CiAgICAgaW50IGJhY2tMaXN0Q291bnQoKTsKICAgICBpbnQgZm9yd2FyZExpc3RDb3Vu
dCgpOwogCkBAIC04NSwxOCArODgsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOwogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgbV9lbnRyaWVzOwotICAgIHVu
c2lnbmVkIG1fY3VycmVudDsKLSAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OworICAgIHVpbnQzMl90
IG1fY3VycmVudDsKKyAgICB1aW50MzJfdCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9jbG9zZWQ7
CiAgICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgCi0vLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS84
MjYxNjI0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MzU1
IC0gCi0vLyBXaGVuIHdlIGhhdmUgYSBzb2x1dGlvbiBmb3IgcmVzdG9yaW5nIHRoZSBmdWxsIGJh
Y2svZm9yd2FyZCBsaXN0IAotLy8gdGhlbiBjYXVzaW5nIGEgbG9hZCBvZiB0aGUgY3VycmVudCBp
dGVtLCB3ZSB3aWxsIG5vIGxvbmdlciBuZWVkIHRoaXMuCi1wdWJsaWM6Ci0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIHJlc3RvcmVkQ3VycmVudFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdG9yZWRD
dXJyZW50VVJMOyB9Ci1wcml2YXRlOgotICAgIFdURjo6U3RyaW5nIG1fcmVzdG9yZWRDdXJyZW50
VVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCShyZXZpc2lvbiA3NTExNikKKysrIFdl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNiArMzIsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgp
Cit7CisgICAgLy8gVGhlc2UgSURzIGV4aXN0IGluIHRoZSBVSVByb2Nlc3MgZm9yIGl0ZW1zIGNy
ZWF0ZWQgYnkgdGhlIFVJUHJvY2Vzcy4KKyAgICAvLyBUaGUgSURzIGdlbmVyYXRlZCBoZXJlIG5l
ZWQgdG8gbmV2ZXIgY29sbGlkZSB3aXRoIHRoZSBJRHMgY3JlYXRlZCBpbiBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eSBpbiB0aGUgV2ViUHJvY2Vzcy4KKyAgICAvLyBXZSBhY2NvbXBsaXNoIHRoaXMg
Ynkgc3RhcnRlZCBmcm9tIHRoZSBtYXggYW5kIGNvdW50aW5nIGRvd24sIHdoaWxlIHRoZSBXZWJQ
cm9jZXNzIHN0YXJ0cyBmcm9tIDEgYW5kIGNvdW50cyB1cC4KKyAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlSGlzdG9yeUl0ZW1JRCA9IFVMT05HX0xPTkdfTUFYIC0gMTsKKyAgICByZXR1cm4gdW5p
cXVlSGlzdG9yeUl0ZW1JRC0tOworfQorCiBERUZJTkVfU1RBVElDX0dFVFRFUihDRlN0cmluZ1Jl
ZiwgU2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXhLZXksIChDRlNUUigiU2Vzc2lvbkhpc3RvcnlD
dXJyZW50SW5kZXgiKSkpOwogREVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Np
b25IaXN0b3J5RW50cmllc0tleSwgKENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJpZXMiKSkpOwog
REVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Npb25IaXN0b3J5RW50cnlUaXRs
ZUtleSwgKENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGUiKSkpOwpAQCAtOTAsNiArOTks
OCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21DRkRpCiAgICAgfQogCiAg
ICAgQ0ZJbmRleCBzaXplID0gQ0ZBcnJheUdldENvdW50KGNmRW50cmllcyk7CisgICAgQmFja0Zv
cndhcmRMaXN0SXRlbVZlY3RvciBuZXdFbnRyaWVzOworICAgIG5ld0VudHJpZXMucmVzZXJ2ZUNh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsraSkgewog
ICAgICAgICBDRkRpY3Rpb25hcnlSZWYgZW50cnlEaWN0aW9uYXJ5ID0gKENGRGljdGlvbmFyeVJl
ZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNmRW50cmllcywgaSk7CiAgICAgICAgIGlmICghZW50
cnlEaWN0aW9uYXJ5IHx8IENGR2V0VHlwZUlEKGVudHJ5RGljdGlvbmFyeSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKQEAgLTEwOCwxNiArMTE5LDI0IEBAIGJvb2wgV2ViQmFja0Zvcndh
cmRMaXN0OjpyZXN0b3JlRnJvbUNGRGkKICAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJX
ZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2ZSBhIHZhbGlk
IHRpdGxlIiwgKGludClpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUgLSAKLSAgICAgICAg
Ly8gVGhlIGRhdGEgZm9yIHRoZSBhYm92ZSBlbnRyeSBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUg
ZnVsbCBiYWNrL2ZvcndhcmQgbGlzdC4KLSAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIGEgc29sdXRp
b24gdGhhdCByZXN0b3JlcyB0aGUgZnVsbCBiYWNrL2ZvcndhcmRsaXN0IHRoZW4gY2F1c2VzIGEg
bG9hZCBvZiB0aGUgY3VycmVudCBpdGVtLAotICAgICAgICAvLyB3ZSB3aWxsIG5vIGxvbmdlciBu
ZWVkIHRoaXMuCi0gICAgICAgIGlmIChpID09IGN1cnJlbnRJbmRleCkgewotICAgICAgICAgICAg
bV9yZXN0b3JlZEN1cnJlbnRVUkwgPSBlbnRyeVVSTDsKLSAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsVVJMID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJM
S2V5KCkpOworICAgICAgICBpZiAoIW9yaWdpbmFsVVJMIHx8IENGR2V0VHlwZUlEKG9yaWdpbmFs
VVJMKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CisgICAgICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMgbm90IGhhdmUg
YSB2YWxpZCBvcmlnaW5hbCBVUkwiLCAoaW50KWkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CisKKyAgICAgICAgQ0ZEYXRhUmVmIGJhY2tGb3J3YXJkRGF0YSA9IChDRkRh
dGFSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZW50cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9y
eUVudHJ5RGF0YUtleSgpKTsKKyAgICAgICAgaWYgKCFiYWNrRm9yd2FyZERhdGEgfHwgQ0ZHZXRU
eXBlSUQoYmFja0ZvcndhcmREYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkgeworICAgICAgICAg
ICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAl
aSBkb2VzIG5vdCBoYXZlIGJhY2svZm9yd2FyZCBkYXRhIiwgKGludClpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3RW50cmllcy5h
cHBlbmQoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCBlbnRyeVVS
TCwgZW50cnlUaXRsZSwgQ0ZEYXRhR2V0Qnl0ZVB0cihiYWNrRm9yd2FyZERhdGEpLCBDRkRhdGFH
ZXRMZW5ndGgoYmFja0ZvcndhcmREYXRhKSwgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgp
KSk7CiAgICAgfQorICAgIAorICAgIG1fY3VycmVudCA9IGN1cnJlbnRJbmRleDsKKyAgICBtX2Vu
dHJpZXMgPSBuZXdFbnRyaWVzOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCShyZXZpc2lvbiA3NTExNikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCAr
MjYsMTEgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3QuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZQcm9wZXJ0eUxpc3QuaD4KQEAgLTEyMiwx
MCArMTI1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAg
ICAgICBMT0coU2Vzc2lvblN0YXRlLCAiRmFpbGVkIHRvIHJlc3RvcmUgYmFjay9mb3J3YXJkIGxp
c3QgZnJvbSBTZXNzaW9uSGlzdG9yeURpY3Rpb25hcnkiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLQotICAgIC8vIEZJWE1FOiBXaGVuIHdlIGhhdmUgYSBzb2x1dGlvbiBmb3IgcmVzdG9yaW5n
IHRoZSBmdWxsIGJhY2svZm9yd2FyZCBsaXN0IHRoZW4gY2F1c2luZyBhIGxvYWQgb2YgdGhlIGN1
cnJlbnQgaXRlbSwKLSAgICAvLyB3ZSB3aWxsIHRyaWdnZXIgdGhhdCBsb2FkIGhlcmUuICBVbnRp
bCB0aGVuLCB3ZSB1c2UgdGhlICJyZXN0b3JlZCBjdXJyZW50IFVSTCIgd2hpY2ggY2FuIGxhdGVy
IGJlIHJlbW92ZWQuCi0gICAgbG9hZFVSTChtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZWRDdXJy
ZW50VVJMKCkpOworICAgIAorICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdG9yZVNlc3Npb24oU2Vzc2lvblN0YXRlKG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCks
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SW5kZXgoKSkpLCBtX3BhZ2VJRCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDc1MTE2KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0Nyw2ICs4NDcsMTEgQEAgdm9pZCBXZWJQYWdlOjpl
eGVjdXRlRWRpdENvbW1hbmQoY29uc3QgUwogICAgIGV4ZWN1dGVFZGl0aW5nQ29tbWFuZChjb21t
YW5kTmFtZSwgU3RyaW5nKCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uKGNv
bnN0IFNlc3Npb25TdGF0ZSYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKIHN0YXRpYyBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgUGFnZSogcGFnZSkKIHsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDc1MTE2KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSw3IEBAIGNs
YXNzIERyYXdpbmdBcmVhOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBj
bGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBTZXNzaW9uU3RhdGU7
CiBjbGFzcyBXZWJDb250ZXh0TWVudTsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBj
bGFzcyBXZWJFdmVudDsKQEAgLTMzNSw2ICszMzYsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsK
ICNlbmRpZgorICAgIHZvaWQgcmVzdG9yZVNlc3Npb24oY29uc3QgU2Vzc2lvblN0YXRlJik7CiAK
ICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sKTsKICAgICB2b2lkIHNldERyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3NTExNikKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgTG9hZFVSTFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgUmVsb2FkKGJvb2wgcmVsb2Fk
RnJvbU9yaWdpbikKICAgICBTdG9wTG9hZGluZygpCisgICAgCisgICAgUmVzdG9yZVNlc3Npb24o
V2ViS2l0OjpTZXNzaW9uU3RhdGUgc3RhdGUpCiAKICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5
QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQogCkBAIC0xMDAsNyArMTAyLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSB7CiAgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFdU
Rjo6U3RyaW5nPiBmaWxlVVJMcykKICAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogCi0gICAg
IyBTcGVsaW5nIGFuZCBncmFtbWVyLgorICAgICMgU3BlbGluZyBhbmQgZ3JhbW1hci4KICAgICBB
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICBD
aGFuZ2VTcGVsbGluZ1RvV29yZChXVEY6OlN0cmluZyB3b3JkKQogICAgIFVubWFya0FsbE1pc3Nw
ZWxsaW5ncygpCg==
</data>
<flag name="commit-queue"
          id="69316"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78076</attachid>
            <date>2011-01-05 17:15:04 -0800</date>
            <delta_ts>2011-01-06 18:29:44 -0800</delta_ts>
            <desc>Send session state from UI -&gt; Web process (v2) </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10822</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTExOSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMDEtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUKKyAgICAgICAgQ2hhbmdlIFdlYktpdDIgc2Vzc2lvbiBy
ZXN0b3JpbmcgdG8gcmVzdG9yZSB0aGUgZnVsbCBiYWNrL2ZvcndhcmQgbGlzdAorCisgICAgICAg
IEFkZCBhIG5ldyBtZXNzYWdlIHRvIHRlbGwgdGhlIFdlYlByb2Nlc3MgdG8gcmVzdG9yZSBhIHNl
c3Npb24gc3RhdGU6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBQcm92aWRlIGFjY2Vzc29ycyB0byB0aGUg
ZW50cmllcyBpbiB0aGUgbGlzdCB0byBwYXNzIHRvIHRoZSBXZWJQcm9jZXNzOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjplbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0OjpjdXJyZW50SW5kZXgpOgorCisgICAgICAgIEFkZCBkZWNvZGluZyBvZiB0aGUgc2F2ZWQg
YmFjay9mb3J3YXJkIGxpc3QgaXRtZXMgKHdlIGFscmVhZHkgZW5jb2RlIHRoZW0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgor
CisgICAgICAgIEluc3RlYWQgb2YgbG9hZGluZyB0aGUgY3VycmVudCBVUkwsIHBhc3MgdGhlIGVu
dGlyZSBsYXN0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogVUlQcm9jZXNzL2Nm
L1dlYlBhZ2VQcm94eUNGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEpOgorCiAyMDExLTAxLTA1ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lvbiA3NTExNikK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02Niw3ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFj
a0l0ZW0oKTsKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmb3J3YXJkSXRlbSgpOwogICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1BdEluZGV4KGludCk7CisgICAgCisgICAgY29u
c3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgZW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZW50cmllczsgfQogCisgICAgdWludDMyX3QgY3VycmVudEluZGV4KCkgeyByZXR1cm4gbV9jdXJy
ZW50OyB9CiAgICAgaW50IGJhY2tMaXN0Q291bnQoKTsKICAgICBpbnQgZm9yd2FyZExpc3RDb3Vu
dCgpOwogCkBAIC04NSwxOCArODgsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOwogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgbV9lbnRyaWVzOwotICAgIHVu
c2lnbmVkIG1fY3VycmVudDsKLSAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OworICAgIHVpbnQzMl90
IG1fY3VycmVudDsKKyAgICB1aW50MzJfdCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9jbG9zZWQ7
CiAgICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgCi0vLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS84
MjYxNjI0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MzU1
IC0gCi0vLyBXaGVuIHdlIGhhdmUgYSBzb2x1dGlvbiBmb3IgcmVzdG9yaW5nIHRoZSBmdWxsIGJh
Y2svZm9yd2FyZCBsaXN0IAotLy8gdGhlbiBjYXVzaW5nIGEgbG9hZCBvZiB0aGUgY3VycmVudCBp
dGVtLCB3ZSB3aWxsIG5vIGxvbmdlciBuZWVkIHRoaXMuCi1wdWJsaWM6Ci0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIHJlc3RvcmVkQ3VycmVudFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdG9yZWRD
dXJyZW50VVJMOyB9Ci1wcml2YXRlOgotICAgIFdURjo6U3RyaW5nIG1fcmVzdG9yZWRDdXJyZW50
VVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCShyZXZpc2lvbiA3NTExNikKKysrIFdl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsMTIgKzI2LDIyIEBACiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxs
aW1pdHMuaD4KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB1
aW50NjRfdCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCkKK3sKKyAgICAvLyBUaGVzZSBJ
RHMgZXhpc3QgaW4gdGhlIFVJUHJvY2VzcyBmb3IgaXRlbXMgY3JlYXRlZCBieSB0aGUgVUlQcm9j
ZXNzLgorICAgIC8vIFRoZSBJRHMgZ2VuZXJhdGVkIGhlcmUgbmVlZCB0byBuZXZlciBjb2xsaWRl
IHdpdGggdGhlIElEcyBjcmVhdGVkIGluIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5IGluIHRoZSBX
ZWJQcm9jZXNzLgorICAgIC8vIFdlIGFjY29tcGxpc2ggdGhpcyBieSBzdGFydGVkIGZyb20gdGhl
IG1heCBhbmQgY291bnRpbmcgZG93biwgd2hpbGUgdGhlIFdlYlByb2Nlc3Mgc3RhcnRzIGZyb20g
MSBhbmQgY291bnRzIHVwLgorICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVIaXN0b3J5SXRlbUlE
ID0gVUxPTkdfTE9OR19NQVggLSAxOworICAgIHJldHVybiB1bmlxdWVIaXN0b3J5SXRlbUlELS07
Cit9CisKIERFRklORV9TVEFUSUNfR0VUVEVSKENGU3RyaW5nUmVmLCBTZXNzaW9uSGlzdG9yeUN1
cnJlbnRJbmRleEtleSwgKENGU1RSKCJTZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleCIpKSk7CiBE
RUZJTkVfU1RBVElDX0dFVFRFUihDRlN0cmluZ1JlZiwgU2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5
LCAoQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cmllcyIpKSk7CiBERUZJTkVfU1RBVElDX0dFVFRF
UihDRlN0cmluZ1JlZiwgU2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlS2V5LCAoQ0ZTVFIoIlNlc3Np
b25IaXN0b3J5RW50cnlUaXRsZSIpKSk7CkBAIC05MCw2ICsxMDAsOCBAQCBib29sIFdlYkJhY2tG
b3J3YXJkTGlzdDo6cmVzdG9yZUZyb21DRkRpCiAgICAgfQogCiAgICAgQ0ZJbmRleCBzaXplID0g
Q0ZBcnJheUdldENvdW50KGNmRW50cmllcyk7CisgICAgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3Rv
ciBuZXdFbnRyaWVzOworICAgIG5ld0VudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAg
IGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDRkRpY3Rpb25h
cnlSZWYgZW50cnlEaWN0aW9uYXJ5ID0gKENGRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGNmRW50cmllcywgaSk7CiAgICAgICAgIGlmICghZW50cnlEaWN0aW9uYXJ5IHx8IENG
R2V0VHlwZUlEKGVudHJ5RGljdGlvbmFyeSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsK
QEAgLTEwOCwxNiArMTIwLDI0IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJv
bUNGRGkKICAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3Qg
ZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHRpdGxlIiwgKGludClpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
Ly8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUgLSAKLSAgICAgICAgLy8gVGhlIGRhdGEgZm9yIHRo
ZSBhYm92ZSBlbnRyeSBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgZnVsbCBiYWNrL2ZvcndhcmQg
bGlzdC4KLSAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIGEgc29sdXRpb24gdGhhdCByZXN0b3JlcyB0
aGUgZnVsbCBiYWNrL2ZvcndhcmRsaXN0IHRoZW4gY2F1c2VzIGEgbG9hZCBvZiB0aGUgY3VycmVu
dCBpdGVtLAotICAgICAgICAvLyB3ZSB3aWxsIG5vIGxvbmdlciBuZWVkIHRoaXMuCi0gICAgICAg
IGlmIChpID09IGN1cnJlbnRJbmRleCkgewotICAgICAgICAgICAgbV9yZXN0b3JlZEN1cnJlbnRV
UkwgPSBlbnRyeVVSTDsKLSAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIENGU3RyaW5nUmVm
IG9yaWdpbmFsVVJMID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGlj
dGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5KCkpOworICAgICAgICBp
ZiAoIW9yaWdpbmFsVVJMIHx8IENGR2V0VHlwZUlEKG9yaWdpbmFsVVJMKSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpKSB7CisgICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0Zvcndh
cmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBvcmlnaW5hbCBV
UkwiLCAoaW50KWkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAg
ICAgICAgQ0ZEYXRhUmVmIGJhY2tGb3J3YXJkRGF0YSA9IChDRkRhdGFSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZW50cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSgpKTsK
KyAgICAgICAgaWYgKCFiYWNrRm9yd2FyZERhdGEgfHwgQ0ZHZXRUeXBlSUQoYmFja0ZvcndhcmRE
YXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAgTE9HKFNlc3Npb25TdGF0
ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZlIGJh
Y2svZm9yd2FyZCBkYXRhIiwgKGludClpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3RW50cmllcy5hcHBlbmQoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCBlbnRyeVVSTCwgZW50cnlUaXRsZSwgQ0ZE
YXRhR2V0Qnl0ZVB0cihiYWNrRm9yd2FyZERhdGEpLCBDRkRhdGFHZXRMZW5ndGgoYmFja0Zvcndh
cmREYXRhKSwgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgpKSk7CiAgICAgfQorICAgIAor
ICAgIG1fY3VycmVudCA9IGN1cnJlbnRJbmRleDsKKyAgICBtX2VudHJpZXMgPSBuZXdFbnRyaWVz
OwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQ
YWdlUHJveHlDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFn
ZVByb3h5Q0YuY3BwCShyZXZpc2lvbiA3NTExNikKKysrIFdlYktpdDIvVUlQcm9jZXNzL2NmL1dl
YlBhZ2VQcm94eUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsMTEgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXNz
aW9uU3RhdGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJX
ZWJEYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ0ZQcm9wZXJ0eUxpc3QuaD4KQEAgLTEyMiwxMCArMTI1LDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiRmFpbGVkIHRvIHJlc3RvcmUgYmFjay9mb3J3YXJkIGxpc3QgZnJvbSBTZXNzaW9uSGlz
dG9yeURpY3Rpb25hcnkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIC8vIEZJWE1F
OiBXaGVuIHdlIGhhdmUgYSBzb2x1dGlvbiBmb3IgcmVzdG9yaW5nIHRoZSBmdWxsIGJhY2svZm9y
d2FyZCBsaXN0IHRoZW4gY2F1c2luZyBhIGxvYWQgb2YgdGhlIGN1cnJlbnQgaXRlbSwKLSAgICAv
LyB3ZSB3aWxsIHRyaWdnZXIgdGhhdCBsb2FkIGhlcmUuICBVbnRpbCB0aGVuLCB3ZSB1c2UgdGhl
ICJyZXN0b3JlZCBjdXJyZW50IFVSTCIgd2hpY2ggY2FuIGxhdGVyIGJlIHJlbW92ZWQuCi0gICAg
bG9hZFVSTChtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZWRDdXJyZW50VVJMKCkpOworICAgIAor
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlc3Npb24oU2Vz
c2lvblN0YXRlKG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCksIG1fYmFja0ZvcndhcmRMaXN0
LT5jdXJyZW50SW5kZXgoKSkpLCBtX3BhZ2VJRCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDc1
MTE2KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTg0Nyw2ICs4NDcsMTEgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQo
Y29uc3QgUwogICAgIGV4ZWN1dGVFZGl0aW5nQ29tbWFuZChjb21tYW5kTmFtZSwgU3RyaW5nKCkp
OwogfQogCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uKGNvbnN0IFNlc3Npb25TdGF0ZSYp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKIHN0YXRpYyBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgdG91
Y2hFdmVudCwgUGFnZSogcGFnZSkKIHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDc1MTE2KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIERyYXdpbmdBcmVhOwog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBQYWdlT3ZlcmxheTsK
IGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBTZXNzaW9uU3RhdGU7CiBjbGFzcyBXZWJDb250ZXh0
TWVudTsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFzcyBXZWJFdmVudDsKQEAg
LTMzNSw2ICszMzYsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
dm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgorICAgIHZvaWQg
cmVzdG9yZVNlc3Npb24oY29uc3QgU2Vzc2lvblN0YXRlJik7CiAKICAgICB2b2lkIHNldERyYXdz
QmFja2dyb3VuZChib29sKTsKICAgICB2b2lkIHNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGJvb2wpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiA3NTExNikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgTG9hZFVSTFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCiAgICAgUmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbikKICAgICBT
dG9wTG9hZGluZygpCisgICAgCisgICAgUmVzdG9yZVNlc3Npb24oV2ViS2l0OjpTZXNzaW9uU3Rh
dGUgc3RhdGUpCiAKICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBk
b3dubG9hZElEKQogCkBAIC0xMDAsNyArMTAyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAg
ICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFdURjo6U3RyaW5nPiBmaWxlVVJM
cykKICAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogCi0gICAgIyBTcGVsaW5nIGFuZCBncmFt
bWVyLgorICAgICMgU3BlbGluZyBhbmQgZ3JhbW1hci4KICAgICBBZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICBDaGFuZ2VTcGVsbGluZ1RvV29y
ZChXVEY6OlN0cmluZyB3b3JkKQogICAgIFVubWFya0FsbE1pc3NwZWxsaW5ncygpCg==
</data>
<flag name="review"
          id="69334"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="69335"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78198</attachid>
            <date>2011-01-06 18:29:44 -0800</date>
            <delta_ts>2011-01-06 19:51:39 -0800</delta_ts>
            <desc>Finish it up!  (v1)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7843</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTIxOSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTEtMDEtMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MjYxNjI0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MzU1CisgICAgICAgIENoYW5nZSBXZWJLaXQyIHNlc3Npb24gcmVzdG9yaW5n
IHRvIHJlc3RvcmUgdGhlIGZ1bGwgYmFjay9mb3J3YXJkIGxpc3QuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOiBMZXQgdGhlIFVJUHJvY2Vz
cyByZWdpc3RlciBpdHMgb3duCisgICAgICAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbXMgaW4g
aXRzIElEIG1hcCB1cG9uIGNyZWF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRh
KTogUmVnaXN0ZXIgZWFjaCBuZXcgbGlzdCBlbnRyeSBpbiB0aGUKKyAgICAgICAgICBVSVByb2Nl
c3MgSUQgbWFwLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmFkZEhpc3RvcnlJdGVtRnJvbVVJUHJvY2Vzcyk6IEFkZCB0aGlzIG1ldGhvZCB0byByZWdpc3Rl
ciBVSVByb2Nlc3MKKyAgICAgICAgICBjcmVhdGVkIGl0ZW1zIHdpdGhvdXQgZG9pbmcgYW55IG9m
IHRoZSBvdGhlciB3b3JrIG5vcm1hbGx5IGFzc29jaWF0ZWQgd2l0aCBhZGRpbmcgYSBuZXcgYmFj
ay9mb3J3YXJkIGl0ZW0KKyAgICAgICAgICAoc3VjaCBhcyBub3RpZnlpbmcgdGhlIFVJUHJvY2Vz
cykuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uKTogTWFwIGFsbCBvZiB0aGUgYmFjay9m
b3J3YXJkIGxpc3QgZW50cmllcyBmcm9tIHRoZSBVSVByb2Nlc3MgdGhlbgorICAgICAgICAgIGNh
dXNlIGEgbG9hZCBvZiB0aGUgY3VycmVudCBlbnRyeS4KKwogMjAxMS0wMS0wNiAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIHNob3cgdGhlIGFycm93IGN1
cnNvciB3aGVuIHRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiA3NTE2MCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsMTcg
QEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5OgogICAgIHJldHVybiBt
X2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogaXRlbSkKK3sKKyAgICBzdGQ6OnBhaXI8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1h
cC5hZGQoaXRlbS0+aXRlbUlEKCksIDApOworICAgIAorICAgIC8vIFRoaXMgaXRlbSB3YXMganVz
dCBjcmVhdGVkIGJ5IHRoZSBVSVByb2Nlc3MgYW5kIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBtYXAg
Zm9yIHRoZSBmaXJzdCB0aW1lCisgICAgLy8gc28gd2Ugc2hvdWxkIG5vdCBhbHJlYWR5IGhhdmUg
YW4gaXRlbSBmb3IgdGhpcyBJRC4KKyAgICBBU1NFUlQocmVzdWx0LnNlY29uZCk7CisgICAgCisg
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBpdGVtOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UmIGJhY2tGb3J3YXJkRGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fYmFj
a0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiA3NTE2MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCB1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiAKKyAgICB2b2lkIHJlZ2lz
dGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7Cisg
ICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQcm94eShXZWJDb250ZXh0Kik7
CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAJKHJldmlzaW9u
IDc1MTYwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCkBA
IC0xMjYsNiArMTI3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25T
dGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtVmVjdG9yJiBlbnRyaWVzID0gbV9iYWNrRm9yd2FyZExpc3QtPmVudHJpZXMoKTsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGVudHJpZXMuc2l6ZSgpOworICAgIFdlYlByb2Nlc3NQcm94eSogd2Vi
UHJvY2VzcyA9IHByb2Nlc3MoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgd2ViUHJvY2Vzcy0+cmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KGVudHJpZXNbaV0uZ2V0KCkpOworCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXN0b3JlU2Vzc2lvbihTZXNzaW9uU3RhdGUobV9iYWNrRm9yd2FyZExpc3QtPmVudHJp
ZXMoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJbmRleCgpKSksIG1fcGFnZUlEKTsKIH0K
IApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcAkocmV2aXNpb24gNzUxNjApCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDYgKzc5LDIxIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjQK
ICAgICAgICAgaXRlbS0+b3JpZ2luYWxVUkxTdHJpbmcoKSwgaXRlbS0+dXJsU3RyaW5nKCksIGl0
ZW0tPnRpdGxlKCksIGVuY29kZXIuZGF0YSgpKSwgMCk7CiB9CiAKK3ZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEhpc3RvcnlJdGVtRnJvbVVJUHJvY2Vzcyh1aW50NjRfdCBpdGVtSUQs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCit7CisgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBpdGVtID0gcHJwSXRlbTsKKworICAgIC8vIFVJUHJvY2VzcyBpdGVtSURz
IHNob3VsZCBiZSBldmVuLi4uCisgICAgQVNTRVJUKCEoaXRlbUlEICUgMikpOworICAgIAorICAg
IC8vIEFuZCB0aGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGlu
IG91ciBtYXBzLgorICAgIEFTU0VSVCghaGlzdG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRl
bS5nZXQoKSkpOworICAgIEFTU0VSVCghaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRl
bUlEKSk7CisgICAgICAgIAorICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnNldChpdGVtLCBpdGVt
SUQpOworICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0pOworfQorCiBz
dGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0qIGl0ZW0p
CiB7CiAgICAgdWludDY0X3QgaXRlbUlEID0gaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0ZW0p
OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oCShyZXZpc2lvbiA3NTE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQw
LDggQEAgcHVibGljOiAKICAgICBzdGF0aWMgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJ
RCh1aW50NjRfdCk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRlbSh1aW50NjRfdCBpdGVtSUQp
OwogCisgICAgc3RhdGljIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90
IGl0ZW1JRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4pOworICAgIAogICAgIHZv
aWQgY2xlYXIoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiA3NTE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRGVj
b2RlckFkYXB0ZXIuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIK
QEAgLTM1LDYgKzM2LDkgQEAKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBs
dWdpblByb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlNlc3Npb25T
dGF0ZS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5o
IgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
LmgiCkBAIC04NDcsOSArODUxLDI5IEBAIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5k
KGNvbnN0IFMKICAgICBleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29tbWFuZE5hbWUsIFN0cmluZygp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbihjb25zdCBTZXNzaW9uU3RhdGUm
KQordm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbihjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Np
b25TdGF0ZSkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgY29uc3QgQmFja0Zvcndh
cmRMaXN0SXRlbVZlY3RvciYgbGlzdChzZXNzaW9uU3RhdGUubGlzdCgpKTsKKyAgICBzaXplX3Qg
c2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gY3VycmVudEl0ZW07
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogd2ViSXRlbSA9IGxpc3RbaV0uZ2V0KCk7CisgICAgICAgIERlY29k
ZXJBZGFwdGVyIGRlY29kZXIod2ViSXRlbS0+YmFja0ZvcndhcmREYXRhKCkuZGF0YSgpLCB3ZWJJ
dGVtLT5iYWNrRm9yd2FyZERhdGEoKS5zaXplKCkpOworICAgICAgICAKKyAgICAgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmRlY29kZUJhY2tGb3J3YXJkVHJlZSh3
ZWJJdGVtLT51cmwoKSwgd2ViSXRlbS0+dGl0bGUoKSwgd2ViSXRlbS0+b3JpZ2luYWxVUkwoKSwg
ZGVjb2Rlcik7CisgICAgICAgIGlmICghaXRlbSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZGVjb2RlIGEgSGlzdG9yeUl0ZW0gZnJvbSBzZXNzaW9uIHN0YXRlIGRhdGEuIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChp
ID09IHNlc3Npb25TdGF0ZS5jdXJyZW50SW5kZXgoKSkKKyAgICAgICAgICAgIGN1cnJlbnRJdGVt
ID0gaXRlbTsKKyAgICAgICAgCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRI
aXN0b3J5SXRlbUZyb21VSVByb2Nlc3MobGlzdFtpXS0+aXRlbUlEKCksIGl0ZW0ucmVsZWFzZSgp
KTsKKyAgICB9ICAgIAorICAgIEFTU0VSVChjdXJyZW50SXRlbSk7CisKKyAgICBtX3BhZ2UtPmdv
VG9JdGVtKGN1cnJlbnRJdGVtLmdldCgpLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJk
KTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCg==
</data>
<flag name="review"
          id="69474"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="69475"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>