<?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>95532</bug_id>
          
          <creation_ts>2012-08-31 00:23:28 -0700</creation_ts>
          <short_desc>[EFL] Add proper support for navigator.onLine and associated events</short_desc>
          <delta_ts>2012-08-31 07:34:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/2012/WD-html5-20120329/offline.html?path=5_4_5#event-offline</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>s.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>709343</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 00:23:28 -0700</bug_when>
    <thetext>The EFL port currently relies on the client application to provide it with the current onLine state.
We should be able to detect and monitor the onLine state without relying on the client application, similarly to what other ports are doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709345</commentid>
    <comment_count>1</comment_count>
      <attachid>161628</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 00:29:00 -0700</bug_when>
    <thetext>Created attachment 161628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709348</commentid>
    <comment_count>2</comment_count>
      <attachid>161628</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-31 00:42:00 -0700</bug_when>
    <thetext>Comment on attachment 161628
Patch

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

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:49
&gt; +    // Assume that we&apos;re offline until proven otherwise.
&gt; +    m_isOnLine = false;

It that really wise?

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:60
&gt; +        if (!syspath || !strcmp(syspath, UdevLoopBackInterfaceSysPath))

When you are already taking assumption that UdevLoo/... is non-null, why not use strncmp() with 2?

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:77
&gt; +      eeze_net_free(static_cast&lt;Eeze_Net*&gt;(data));

why different indentation

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:93
&gt; +    char buffer[4096];
&gt; +    size_t len;

why not initialize len to 4096;?

size_t len = 4096
char buffer[len]

then replace it

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:102
&gt; +            if (nlh-&gt;nlmsg_type == RTM_NEWADDR
&gt; +                || nlh-&gt;nlmsg_type == RTM_DELADDR) {

why not just keep that on one line?

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:116
&gt; +        int sock = ecore_main_fd_handler_fd_get(m_fdHandler);

socket?

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:120
&gt; +    eeze_shutdown();

what if it is used elsewhere? (I believe it is)

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:147
&gt; +    if (bind(sock, (struct sockaddr *)&amp;addr, sizeof(addr)) == -1) {

wrong styled cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709366</commentid>
    <comment_count>3</comment_count>
      <attachid>161628</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-31 01:17:26 -0700</bug_when>
    <thetext>Comment on attachment 161628
Patch

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

&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:89
&gt; +static Eina_Bool readSocketCallback(void* userData, Ecore_Fd_Handler* handler)

We decided to use standard boolean type except for public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709369</commentid>
    <comment_count>4</comment_count>
      <attachid>161628</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 01:22:01 -0700</bug_when>
    <thetext>Comment on attachment 161628
Patch

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

&gt;&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:89
&gt;&gt; +static Eina_Bool readSocketCallback(void* userData, Ecore_Fd_Handler* handler)
&gt; 
&gt; We decided to use standard boolean type except for public API.

It is a EFL callback, I&apos;m not sure I can use bool but I&apos;ll try.

&gt;&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:120
&gt;&gt; +    eeze_shutdown();
&gt; 
&gt; what if it is used elsewhere? (I believe it is)

Not a problem. This merely decreases some ref count. I call _init() to increment refcount so I need to call _shutdown() to decrement it as well:
http://docs.enlightenment.org/auto/eeze/group__main.html#ga908dda677760bf318a67428938a07d42</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709372</commentid>
    <comment_count>5</comment_count>
      <attachid>161628</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 01:24:34 -0700</bug_when>
    <thetext>Comment on attachment 161628
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:89
&gt;&gt;&gt; +static Eina_Bool readSocketCallback(void* userData, Ecore_Fd_Handler* handler)
&gt;&gt; 
&gt;&gt; We decided to use standard boolean type except for public API.
&gt; 
&gt; It is a EFL callback, I&apos;m not sure I can use bool but I&apos;ll try.

As I thought, this won&apos;t compile. It needs to be Eina_Bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709391</commentid>
    <comment_count>6</comment_count>
      <attachid>161640</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 01:54:35 -0700</bug_when>
    <thetext>Created attachment 161640
Patch for landing

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709399</commentid>
    <comment_count>7</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-08-31 01:59:45 -0700</bug_when>
    <thetext>Does this work with --no-networkinfo as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709445</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-31 03:03:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 161628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161628&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/network/efl/NetworkStateNotifierEfl.cpp:89
&gt; &gt;&gt;&gt; +static Eina_Bool readSocketCallback(void* userData, Ecore_Fd_Handler* handler)
&gt; &gt;&gt; 
&gt; &gt;&gt; We decided to use standard boolean type except for public API.
&gt; &gt; 
&gt; &gt; It is a EFL callback, I&apos;m not sure I can use bool but I&apos;ll try.
&gt; 
&gt; As I thought, this won&apos;t compile. It needs to be Eina_Bool.

Yes, I add this case to EFL coding style wiki page. Thanks.
https://trac.webkit.org/wiki/EFLWebKitCodingStyle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709448</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 03:09:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Does this work with --no-networkinfo as well?

Right, it Gamepads and NetworkInfo support is disabled then it won&apos;t compile. I&apos;ll fix the CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709451</commentid>
    <comment_count>10</comment_count>
      <attachid>161649</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 03:14:18 -0700</bug_when>
    <thetext>Created attachment 161649
Patch for landing

Link unconditionally against Eeze library now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709505</commentid>
    <comment_count>11</comment_count>
      <attachid>161649</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 05:11:00 -0700</bug_when>
    <thetext>Comment on attachment 161649
Patch for landing

I need to double check something before this lands. I think it may cause a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709510</commentid>
    <comment_count>12</comment_count>
      <attachid>161672</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-31 05:25:46 -0700</bug_when>
    <thetext>Created attachment 161672
Fixed patch

Fix 2 issues with the first version of the patch
1. use ssize_t instead of size_t for len (used to store return value of recv()). We cannot use size_t since recv() returns -1 when there is nothing to read anymore.
2. Use MSG_DONTWAIT flag for recv() to make the operation non-blocking.

Setting r? again since those are not style changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709601</commentid>
    <comment_count>13</comment_count>
      <attachid>161672</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 07:34:51 -0700</bug_when>
    <thetext>Comment on attachment 161672
Fixed patch

Clearing flags on attachment: 161672

Committed r127258: &lt;http://trac.webkit.org/changeset/127258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709602</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 07:34:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161628</attachid>
            <date>2012-08-31 00:29:00 -0700</date>
            <delta_ts>2012-08-31 01:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>95532_navigator_isOnline.patch</filename>
            <type>text/plain</type>
            <size>12307</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYzIzN2YzLi43NTEyZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMDgtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIG5hdmlnYXRvci5v
bkxpbmUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZXRlY3Rpbmcgb25saW5lIHN0YXRl
IGluIEVGTCBwb3J0IGFuZAorICAgICAgICBtb25pdG9yIHN0YXRlIGNoYW5nZXMuIFRoZSBFRkwg
cG9ydCBub3cgaGFzIHByb3BlcgorICAgICAgICBzdXBwb3J0IGZvciBuYXZpZ2F0b3Iub25MaW5l
IGFuZCBhc3NvY2lhdGVkIGV2ZW50cy4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMg
YmFzZWQgb24gRWV6ZSBsaWJyYXJ5IGZvcgorICAgICAgICBkZXRlY3RpbmcgbmV0d29yayBpbnRl
cmZhY2VzIGFuZCB0aGVpciBjb25maWd1cmF0aW9uLgorICAgICAgICBEZXRlY3Rpb24gb2Ygb25s
aW5lIHN0YXRlIGNoYW5nZXMgcmVsaWVzIG9uIHJ0bmV0bGluay4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rh
dGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgIChOZXR3b3JrU3RhdGVOb3Rp
Zmllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Vm
bC9OZXR3b3JrU3RhdGVOb3RpZmllckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Om5ldHdvcmtJbnRlcmZhY2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRTb2NrZXRDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6fk5ldHdvcmtTdGF0ZU5vdGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpOZXR3b3JrU3RhdGVOb3Rp
Zmllcik6CisKIDIwMTItMDgtMjkgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gc2V0TmVlZHNBbmltYXRlIHNob3VsZCBub3QgY2F1c2UgY29tbWl0
UmVxdWVzdGVkIHRvIGJlY29tZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDg4
OGQ1NDUuLjliMzA3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03Miw2ICs3Miw3
IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCiAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZp
Y2VMaW51eC5jcHAKICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyLmNwcAorICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3b3JrU3RhdGVO
b3RpZmllckVmbC5jcHAKICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3Bw
CiAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAK
aW5kZXggMTljOGY5OC4uNmM4NWZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0TmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0
aW9uKHZvaWQoKmZ1bmN0aW9uKSgpKQogICAgIG1fbmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0aW9u
ID0gZnVuY3Rpb247CiB9CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oRUZM
KQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0
T25MaW5lKGJvb2wgb25MaW5lKQogewogICAgIGlmIChtX2lzT25MaW5lID09IG9uTGluZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuaAppbmRleCA2YTMzMGM5Li5iODZlN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC00NSw2ICs0
NSwxMCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX1NDRHluYW1pY1N0b3JlICogU0NEeW5hbWlj
U3RvcmVSZWY7CiAKICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgogCisjZWxpZiBQTEFURk9S
TShFRkwpCisKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRs
ZXI7CisKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywxNCArNjEsMTkgQEAg
Y2xhc3MgTmV0d29ya1N0YXRlTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtTdGF0ZU5vdGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTmV0d29ya1N0YXRlTm90aWZpZXIoKTsKKyNpZiBQTEFURk9STShFRkwpCisgICAgfk5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCk7CisjZW5kaWYKICAgICB2b2lkIHNldE5ldHdvcmtTdGF0ZUNoYW5n
ZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKIAogICAgIGJvb2wgb25MaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9pc09uTGluZTsgfQogCiAjaWYgKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19C
RUFSRVJNQU5BR0VNRU5UKSkKICAgICB2b2lkIHNldE5ldHdvcmtBY2Nlc3NBbGxvd2VkKGJvb2wp
OwotI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRG
T1JNKENIUk9NSVVNKQogICAgIHZvaWQgc2V0T25MaW5lKGJvb2wpOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIHZvaWQgbmV0d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKQEAgLTk0LDEzICsxMDMsMTYgQEAgcHJpdmF0ZToKICAgICBI
QU5ETEUgbV93YWl0SGFuZGxlOwogICAgIE9WRVJMQVBQRUQgbV9vdmVybGFwcGVkOwogCisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfRmRfSGFuZGxlciogbV9mZEhhbmRsZXI7CisKICNl
bGlmIChQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCkpCiAg
ICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTsKICAgICBOZXR3b3Jr
U3RhdGVOb3RpZmllclByaXZhdGUqIHA7CiAjZW5kaWYKIH07CiAKLSNpZiAhUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19C
RUFSRVJNQU5BR0VNRU5UKSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaWYgIVBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRf
Tk9fQkVBUkVSTUFOQUdFTUVOVCkpICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZP
Uk0oRUZMKQogCiBpbmxpbmUgTmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlm
aWVyKCkKICAgICA6IG1faXNPbkxpbmUodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODAxYTI4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9lZmwvTmV0d29ya1N0YXRl
Tm90aWZpZXJFZmwuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVlemUu
aD4KKyNpbmNsdWRlIDxFZXplX05ldC5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1
ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisKK3N0YXRpYyBjb25zdCBjaGFyIFVkZXZMb29wQmFja0ludGVyZmFjZVN5c1BhdGhbXSA9
ICJsbyI7CitzdGF0aWMgY29uc3QgY2hhciBVZGV2T3BlcnN0YXRlQXR0cmlidXRlW10gPSAib3Bl
cnN0YXRlIjsKK3N0YXRpYyBjb25zdCBjaGFyIFVkZXZPcGVyc3RhdGVVcFtdID0gInVwIjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVT
dGF0ZSgpCit7CisgICAgLy8gQXNzdW1lIHRoYXQgd2UncmUgb2ZmbGluZSB1bnRpbCBwcm92ZW4g
b3RoZXJ3aXNlLgorICAgIG1faXNPbkxpbmUgPSBmYWxzZTsKKworICAgIEVpbmFfTGlzdCogbmV0
d29ya0ludGVyZmFjZXMgPSBlZXplX25ldF9saXN0KCk7CisKKyAgICBFaW5hX0xpc3QqIGxpc3Q7
CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChuZXR3b3JrSW50ZXJmYWNl
cywgbGlzdCwgZGF0YSkgeworICAgICAgICBFZXplX05ldCogbmV0d29ya0ludGVyZmFjZSA9IHN0
YXRpY19jYXN0PEVlemVfTmV0Kj4oZGF0YSk7CisKKyAgICAgICAgLy8gU2tpcCBMb29wYmFjayBp
bnRlcmZhY2UuCisgICAgICAgIGNvbnN0IGNoYXIqIHN5c3BhdGggPSBlZXplX25ldF9zeXNwYXRo
X2dldChuZXR3b3JrSW50ZXJmYWNlKTsKKyAgICAgICAgaWYgKCFzeXNwYXRoIHx8ICFzdHJjbXAo
c3lzcGF0aCwgVWRldkxvb3BCYWNrSW50ZXJmYWNlU3lzUGF0aCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAvLyBTa2lwIGludGVyZmFjZXMgdGhhdCBhcmUgbm90IHVwLgorICAg
ICAgICBjb25zdCBjaGFyKiBzdGF0ZSA9IGVlemVfbmV0X2F0dHJpYnV0ZV9nZXQobmV0d29ya0lu
dGVyZmFjZSwgVWRldk9wZXJzdGF0ZUF0dHJpYnV0ZSk7CisgICAgICAgIGlmICghc3RhdGUgfHwg
c3RyY21wKHN0YXRlLCBVZGV2T3BlcnN0YXRlVXApKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGludGVyZmFjZSBoYXMgYW4gSVAgYWRkcmVzcy4KKyAg
ICAgICAgZWV6ZV9uZXRfc2NhbihuZXR3b3JrSW50ZXJmYWNlKTsKKyAgICAgICAgaWYgKGVlemVf
bmV0X2FkZHJfZ2V0KG5ldHdvcmtJbnRlcmZhY2UsIEVFWkVfTkVUX0FERFJfVFlQRV9JUCkgfHwg
ZWV6ZV9uZXRfYWRkcl9nZXQobmV0d29ya0ludGVyZmFjZSwgRUVaRV9ORVRfQUREUl9UWVBFX0lQ
NikpIHsKKyAgICAgICAgICAgIG1faXNPbkxpbmUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFSU5BX0xJU1RfRlJFRShuZXR3b3JrSW50ZXJmYWNl
cywgZGF0YSkKKyAgICAgIGVlemVfbmV0X2ZyZWUoc3RhdGljX2Nhc3Q8RWV6ZV9OZXQqPihkYXRh
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6Om5ldHdvcmtJbnRlcmZhY2VDaGFu
Z2VkKCkKK3sKKyAgICBib29sIHdhc09ubGluZSA9IG1faXNPbkxpbmU7CisgICAgdXBkYXRlU3Rh
dGUoKTsKKworICAgIGlmICh3YXNPbmxpbmUgIT0gbV9pc09uTGluZSAmJiBtX25ldHdvcmtTdGF0
ZUNoYW5nZWRGdW5jdGlvbikKKyAgICAgICAgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24o
KTsKK30KKworc3RhdGljIEVpbmFfQm9vbCByZWFkU29ja2V0Q2FsbGJhY2sodm9pZCogdXNlckRh
dGEsIEVjb3JlX0ZkX0hhbmRsZXIqIGhhbmRsZXIpCit7CisgICAgaW50IHNvY2sgPSBlY29yZV9t
YWluX2ZkX2hhbmRsZXJfZmRfZ2V0KGhhbmRsZXIpOworICAgIGNoYXIgYnVmZmVyWzQwOTZdOwor
ICAgIHNpemVfdCBsZW47CisgICAgbmxtc2doZHIqIG5saCA9IHJlaW50ZXJwcmV0X2Nhc3Q8bmxt
c2doZHIqPihidWZmZXIpOworICAgIHdoaWxlICgobGVuID0gcmVjdihzb2NrLCBubGgsIDQwOTYs
IDApKSA+IDApIHsKKyAgICAgICAgd2hpbGUgKChOTE1TR19PSyhubGgsIGxlbikpICYmIChubGgt
Pm5sbXNnX3R5cGUgIT0gTkxNU0dfRE9ORSkpIHsKKyAgICAgICAgICAgIGlmIChubGgtPm5sbXNn
X3R5cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHdoaWxlIHJlYWRpbmcgc29ja2V0LCBzdG9wIG1vbml0b3Jpbmcgb25MaW5lIHN0YXRlLiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobmxoLT5ubG1zZ190eXBlID09IFJUTV9ORVdBRERSCisgICAg
ICAgICAgICAgICAgfHwgbmxoLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZGV0ZWN0ZWQgYW4gSVAgYWRkcmVzcyBjaGFuZ2UsIHJlY2hlY2sgb25M
aW5lIHN0YXRlLgorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE5ldHdvcmtTdGF0ZU5vdGlm
aWVyKj4odXNlckRhdGEpLT5uZXR3b3JrSW50ZXJmYWNlQ2hhbmdlZCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbmxoID0gTkxNU0dfTkVYVChubGgsIGxlbik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7Cit9CisKK05ldHdvcmtTdGF0
ZU5vdGlmaWVyOjp+TmV0d29ya1N0YXRlTm90aWZpZXIoKQoreworICAgIGlmIChtX2ZkSGFuZGxl
cikgeworICAgICAgICBpbnQgc29jayA9IGVjb3JlX21haW5fZmRfaGFuZGxlcl9mZF9nZXQobV9m
ZEhhbmRsZXIpOworICAgICAgICBlY29yZV9tYWluX2ZkX2hhbmRsZXJfZGVsKG1fZmRIYW5kbGVy
KTsKKyAgICAgICAgY2xvc2Uoc29jayk7CisgICAgfQorICAgIGVlemVfc2h1dGRvd24oKTsKK30K
KworTmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKKyAgICA6IG1f
aXNPbkxpbmUoZmFsc2UpCisgICAgLCBtX25ldHdvcmtTdGF0ZUNoYW5nZWRGdW5jdGlvbigwKQor
ICAgICwgbV9mZEhhbmRsZXIoMCkKK3sKKyAgICBpZiAoZWV6ZV9pbml0KCkgPCAwKSB7CisgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgZWV6ZSBsaWJyYXJ5LiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdXBkYXRlU3RhdGUoKTsKKworICAgIC8vIFdhdGNo
IGZvciBuZXR3b3JrIGFkZHJlc3MgY2hhbmdlcyB0byBrZWVwIG9ubGluZSBzdGF0ZSB1cC10by1k
YXRlLgorICAgIGludCBzb2NrOworICAgIGlmICgoc29jayA9IHNvY2tldChQRl9ORVRMSU5LLCBT
T0NLX1JBVywgTkVUTElOS19ST1VURSkpID09IC0xKSB7CisgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3Qgb3BlbiBORVRMSU5LX1JPVVRFIHNvY2tldC4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNvY2thZGRyX25sIGFkZHI7CisgICAgbWVtc2V0KCZhZGRyLCAwLCBzaXplb2Yo
YWRkcikpOworICAgIGFkZHIubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKyAgICBhZGRyLm5sX2dy
b3VwcyA9IFJUTUdSUF9JUFY0X0lGQUREUiB8IFJUTUdSUF9JUFY2X0lGQUREUjsKKworICAgIGlm
IChiaW5kKHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKSA9PSAt
MSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGJpbmQgdG8gTkVUTElOS19ST1VURSBz
b2NrZXQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZkSGFuZGxlciA9IGVj
b3JlX21haW5fZmRfaGFuZGxlcl9hZGQoc29jaywgRUNPUkVfRkRfUkVBRCwgcmVhZFNvY2tldENh
bGxiYWNrLCB0aGlzLCAwLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDE2YTg5MWUuLjcwMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMi0wOC0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgbmF2aWdh
dG9yLm9uTGluZSBhbmQgYXNzb2NpYXRlZCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGV3a19uZXR3b3JrX3N0YXRlX25vdGlmaWVy
X29ubGluZV9zZXQoKSBBUEkgc2luY2UKKyAgICAgICAgdGhlIEVGTCBwb3J0IG5vIGxvbmdlciBy
ZWxpZXMgb24gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0bworICAgICAgICBwcm92aWRlIGl0IHdp
dGggdGhlIG9ubGluZSBzdGF0ZS4KKworICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Cisg
ICAgICAgICogZXdrL2V3a19uZXR3b3JrLmg6CisKIDIwMTItMDgtMjkgIEthbWlsIEJsYW5rICA8
ay5ibGFua0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgc2V0dGluZyBBUEkgZm9y
IGFsbG93IHVuaXZlcnNhbC9maWxlIGFjY2VzcyBmcm9tIGZpbGUgVVJMcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDc4MWU5NDUuLjY4NjNhYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtNjIsMTEgKzYyLDYgQEAgY29uc3QgY2hhciog
ZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKQogICAgIHJldHVybiBlaW5hX3N0cmluZ3No
YXJlX2FkZChwcm94eS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBld2tfbmV0d29ya19zdGF0
ZV9ub3RpZmllcl9vbmxpbmVfc2V0KEVpbmFfQm9vbCBvbmxpbmUpCi17Ci0gICAgV2ViQ29yZTo6
bmV0d29ya1N0YXRlTm90aWZpZXIoKS5zZXRPbkxpbmUob25saW5lKTsKLX0KLQogRWluYV9Cb29s
IGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19nZXQoKQogewogICAgIGJvb2wgY2hl
Y2tDZXJ0aWZpY2F0ZXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbmV0d29yay5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmgKaW5k
ZXggZDIyNmYyMy4uM2YxZWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19uZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmgKQEAg
LTU5LDEzICs1OSw2IEBAIEVBUEkgdm9pZCAgICAgICAgICAgICBld2tfbmV0d29ya19wcm94eV91
cmlfc2V0KGNvbnN0IGNoYXIgKnByb3h5KTsKIEVBUEkgY29uc3QgY2hhciAgICAgICpld2tfbmV0
d29ya19wcm94eV91cmlfZ2V0KHZvaWQpOwogCiAvKioKLSAqIFNldHMgaWYgbmV0d29yayBiYWNr
ZW5kIGlzIG9ubGluZSBvciBub3QuCi0gKiAKLSAqIEBwYXJhbSBvbmxpbmUgQGMgRUlOQV9GQUxT
RSBpZiBuZXR3b3JrIGlzIGRpc2Nvbm5lY3RlZAotICovCi1FQVBJIHZvaWQgICAgICAgICAgICAg
ZXdrX25ldHdvcmtfc3RhdGVfbm90aWZpZXJfb25saW5lX3NldChFaW5hX0Jvb2wgb25saW5lKTsK
LQotLyoqCiAgKiBSZXR1cm5zIHdoZXRoZXIgSFRUUFMgY29ubmVjdGlvbnMgc2hvdWxkIGNoZWNr
IHRoZSByZWNlaXZlZCBjZXJ0aWZpY2F0ZSBhbmQgZXJyb3Igb3V0IGlmIGl0IGlzIGludmFsaWQu
CiAgKgogICogQnkgZGVmYXVsdCwgSFRUUFMgY29ubmVjdGlvbnMgYXJlIHBlcmZvcm1lZCByZWdh
cmRsZXNzIG9mIHRoZSB2YWxpZGl0eSBvZiB0aGUgY2VydGlmaWNhdGUgcHJvdmlkZWQuCg==
</data>
<flag name="review"
          id="172493"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="172494"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161640</attachid>
            <date>2012-08-31 01:54:35 -0700</date>
            <delta_ts>2012-08-31 03:14:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>95532_navigator_isOnline.patch</filename>
            <type>text/plain</type>
            <size>12378</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYzIzN2YzLi4xMDczZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMDgtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIG5hdmlnYXRvci5v
bkxpbmUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZXRlY3Rpbmcg
b25saW5lIHN0YXRlIGluIEVGTCBwb3J0IGFuZAorICAgICAgICBtb25pdG9yIHN0YXRlIGNoYW5n
ZXMuIFRoZSBFRkwgcG9ydCBub3cgaGFzIHByb3BlcgorICAgICAgICBzdXBwb3J0IGZvciBuYXZp
Z2F0b3Iub25MaW5lIGFuZCBhc3NvY2lhdGVkIGV2ZW50cy4KKworICAgICAgICBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgYmFzZWQgb24gRWV6ZSBsaWJyYXJ5IGZvcgorICAgICAgICBkZXRlY3Rpbmcg
bmV0d29yayBpbnRlcmZhY2VzIGFuZCB0aGVpciBjb25maWd1cmF0aW9uLgorICAgICAgICBEZXRl
Y3Rpb24gb2Ygb25saW5lIHN0YXRlIGNoYW5nZXMgcmVsaWVzIG9uIHJ0bmV0bGluay4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgIChOZXR3
b3JrU3RhdGVOb3RpZmllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2VmbC9OZXR3b3JrU3RhdGVOb3RpZmllckVmbC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBk
YXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Om5ldHdv
cmtJbnRlcmZhY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRTb2NrZXRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6fk5ldHdvcmtTdGF0
ZU5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpOZXR3
b3JrU3RhdGVOb3RpZmllcik6CisKIDIwMTItMDgtMjkgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gc2V0TmVlZHNBbmltYXRlIHNob3VsZCBub3Qg
Y2F1c2UgY29tbWl0UmVxdWVzdGVkIHRvIGJlY29tZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDg4OGQ1NDUuLjliMzA3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC03Miw2ICs3Miw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCiAgIHBsYXRmb3JtL2xpbnV4
L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAorICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9O
ZXR3b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZUphclNvdXAuY3BwCiAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5j
cHAKICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5jcHAKaW5kZXggMTljOGY5OC4uNmM4NWZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0TmV0d29ya1N0YXRl
Q2hhbmdlZEZ1bmN0aW9uKHZvaWQoKmZ1bmN0aW9uKSgpKQogICAgIG1fbmV0d29ya1N0YXRlQ2hh
bmdlZEZ1bmN0aW9uID0gZnVuY3Rpb247CiB9CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwg
UExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogdm9pZCBOZXR3b3JrU3RhdGVO
b3RpZmllcjo6c2V0T25MaW5lKGJvb2wgb25MaW5lKQogewogICAgIGlmIChtX2lzT25MaW5lID09
IG9uTGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0YXRlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0YXRlTm90aWZpZXIuaAppbmRleCA2YTMzMGM5Li5iODZlN2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5o
CkBAIC00NSw2ICs0NSwxMCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX1NDRHluYW1pY1N0b3Jl
ICogU0NEeW5hbWljU3RvcmVSZWY7CiAKICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgogCisj
ZWxpZiBQTEFURk9STShFRkwpCisKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9GZF9IYW5kbGVyIEVj
b3JlX0ZkX0hhbmRsZXI7CisKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nywx
NCArNjEsMTkgQEAgY2xhc3MgTmV0d29ya1N0YXRlTm90aWZpZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE5ldHdvcmtTdGF0ZU5vdGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgTmV0d29ya1N0YXRlTm90aWZpZXIoKTsKKyNpZiBQTEFURk9STShFRkwp
CisgICAgfk5ldHdvcmtTdGF0ZU5vdGlmaWVyKCk7CisjZW5kaWYKICAgICB2b2lkIHNldE5ldHdv
cmtTdGF0ZUNoYW5nZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKIAogICAgIGJvb2wgb25MaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9pc09uTGluZTsgfQogCiAjaWYgKFBMQVRGT1JNKFFUKSAmJiAhZGVm
aW5lZChRVF9OT19CRUFSRVJNQU5BR0VNRU5UKSkKICAgICB2b2lkIHNldE5ldHdvcmtBY2Nlc3NB
bGxvd2VkKGJvb2wpOwotI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEVGTCkK
KyNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZvaWQgc2V0T25MaW5lKGJvb2wpOworI2Vs
aWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgbmV0d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKQEAgLTk0LDEzICsxMDMsMTYgQEAgcHJp
dmF0ZToKICAgICBIQU5ETEUgbV93YWl0SGFuZGxlOwogICAgIE9WRVJMQVBQRUQgbV9vdmVybGFw
cGVkOwogCisjZWxpZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfRmRfSGFuZGxlciogbV9mZEhh
bmRsZXI7CisKICNlbGlmIChQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFO
QUdFTUVOVCkpCiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTsK
ICAgICBOZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUqIHA7CiAjZW5kaWYKIH07CiAKLSNpZiAh
UExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiAhZGVm
aW5lZChRVF9OT19CRUFSRVJNQU5BR0VNRU5UKSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCisj
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShRVCkgJiYg
IWRlZmluZWQoUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCkpICYmICFQTEFURk9STShCTEFDS0JFUlJZ
KSAmJiAhUExBVEZPUk0oRUZMKQogCiBpbmxpbmUgTmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCkKICAgICA6IG1faXNPbkxpbmUodHJ1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5v
dGlmaWVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2MzNDE2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9lZmwv
TmV0d29ya1N0YXRlTm90aWZpZXJFZmwuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90
aWZpZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2lu
Y2x1ZGUgPEVlemUuaD4KKyNpbmNsdWRlIDxFZXplX05ldC5oPgorI2luY2x1ZGUgPGFzbS90eXBl
cy5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxp
bmsuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyBjb25zdCBjaGFyIHVkZXZMb29wQmFja0ludGVyZmFj
ZVN5c1BhdGhbXSA9ICJsbyI7CitzdGF0aWMgY29uc3QgY2hhciB1ZGV2T3BlcnN0YXRlQXR0cmli
dXRlW10gPSAib3BlcnN0YXRlIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVkZXZPcGVyc3RhdGVVcFtd
ID0gInVwIjsKK3N0YXRpYyBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IDQwOTY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGUo
KQoreworICAgIC8vIEFzc3VtZSB0aGF0IHdlJ3JlIG9mZmxpbmUgdW50aWwgcHJvdmVuIG90aGVy
d2lzZS4KKyAgICBtX2lzT25MaW5lID0gZmFsc2U7CisKKyAgICBFaW5hX0xpc3QqIG5ldHdvcmtJ
bnRlcmZhY2VzID0gZWV6ZV9uZXRfbGlzdCgpOworCisgICAgRWluYV9MaXN0KiBsaXN0OworICAg
IHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobmV0d29ya0ludGVyZmFjZXMsIGxp
c3QsIGRhdGEpIHsKKyAgICAgICAgRWV6ZV9OZXQqIG5ldHdvcmtJbnRlcmZhY2UgPSBzdGF0aWNf
Y2FzdDxFZXplX05ldCo+KGRhdGEpOworCisgICAgICAgIC8vIFNraXAgTG9vcGJhY2sgaW50ZXJm
YWNlLgorICAgICAgICBjb25zdCBjaGFyKiBzeXNwYXRoID0gZWV6ZV9uZXRfc3lzcGF0aF9nZXQo
bmV0d29ya0ludGVyZmFjZSk7CisgICAgICAgIGlmICghc3lzcGF0aCB8fCAhc3RyY21wKHN5c3Bh
dGgsIHVkZXZMb29wQmFja0ludGVyZmFjZVN5c1BhdGgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgLy8gU2tpcCBpbnRlcmZhY2VzIHRoYXQgYXJlIG5vdCB1cC4KKyAgICAgICAg
Y29uc3QgY2hhciogc3RhdGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0KG5ldHdvcmtJbnRlcmZh
Y2UsIHVkZXZPcGVyc3RhdGVBdHRyaWJ1dGUpOworICAgICAgICBpZiAoIXN0YXRlIHx8IHN0cmNt
cChzdGF0ZSwgdWRldk9wZXJzdGF0ZVVwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBpbnRlcmZhY2UgaGFzIGFuIElQIGFkZHJlc3MuCisgICAgICAg
IGVlemVfbmV0X3NjYW4obmV0d29ya0ludGVyZmFjZSk7CisgICAgICAgIGlmIChlZXplX25ldF9h
ZGRyX2dldChuZXR3b3JrSW50ZXJmYWNlLCBFRVpFX05FVF9BRERSX1RZUEVfSVApIHx8IGVlemVf
bmV0X2FkZHJfZ2V0KG5ldHdvcmtJbnRlcmZhY2UsIEVFWkVfTkVUX0FERFJfVFlQRV9JUDYpKSB7
CisgICAgICAgICAgICBtX2lzT25MaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgRUlOQV9MSVNUX0ZSRUUobmV0d29ya0ludGVyZmFjZXMsIGRh
dGEpCisgICAgICAgIGVlemVfbmV0X2ZyZWUoc3RhdGljX2Nhc3Q8RWV6ZV9OZXQqPihkYXRhKSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6Om5ldHdvcmtJbnRlcmZhY2VDaGFuZ2Vk
KCkKK3sKKyAgICBib29sIHdhc09ubGluZSA9IG1faXNPbkxpbmU7CisgICAgdXBkYXRlU3RhdGUo
KTsKKworICAgIGlmICh3YXNPbmxpbmUgIT0gbV9pc09uTGluZSAmJiBtX25ldHdvcmtTdGF0ZUNo
YW5nZWRGdW5jdGlvbikKKyAgICAgICAgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oKTsK
K30KKworc3RhdGljIEVpbmFfQm9vbCByZWFkU29ja2V0Q2FsbGJhY2sodm9pZCogdXNlckRhdGEs
IEVjb3JlX0ZkX0hhbmRsZXIqIGhhbmRsZXIpCit7CisgICAgaW50IHNvY2sgPSBlY29yZV9tYWlu
X2ZkX2hhbmRsZXJfZmRfZ2V0KGhhbmRsZXIpOworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVd
OworICAgIHNpemVfdCBsZW47CisgICAgbmxtc2doZHIqIG5saCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
bmxtc2doZHIqPihidWZmZXIpOworICAgIHdoaWxlICgobGVuID0gcmVjdihzb2NrLCBubGgsIGJ1
ZmZlclNpemUsIDApKSA+IDApIHsKKyAgICAgICAgd2hpbGUgKChOTE1TR19PSyhubGgsIGxlbikp
ICYmIChubGgtPm5sbXNnX3R5cGUgIT0gTkxNU0dfRE9ORSkpIHsKKyAgICAgICAgICAgIGlmIChu
bGgtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkVycm9yIHdoaWxlIHJlYWRpbmcgc29ja2V0LCBzdG9wIG1vbml0b3Jpbmcgb25MaW5lIHN0
YXRlLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmxoLT5ubG1zZ190eXBlID09IFJUTV9ORVdB
RERSIHx8IG5saC0+bmxtc2dfdHlwZSA9PSBSVE1fREVMQUREUikgeworICAgICAgICAgICAgICAg
IC8vIFdlIGRldGVjdGVkIGFuIElQIGFkZHJlc3MgY2hhbmdlLCByZWNoZWNrIG9uTGluZSBzdGF0
ZS4KKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOZXR3b3JrU3RhdGVOb3RpZmllcio+KHVz
ZXJEYXRhKS0+bmV0d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG5saCA9IE5MTVNHX05FWFQobmxoLCBsZW4pOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCitOZXR3b3JrU3RhdGVOb3RpZmll
cjo6fk5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKK3sKKyAgICBpZiAobV9mZEhhbmRsZXIpIHsKKyAg
ICAgICAgaW50IHNvY2sgPSBlY29yZV9tYWluX2ZkX2hhbmRsZXJfZmRfZ2V0KG1fZmRIYW5kbGVy
KTsKKyAgICAgICAgZWNvcmVfbWFpbl9mZF9oYW5kbGVyX2RlbChtX2ZkSGFuZGxlcik7CisgICAg
ICAgIGNsb3NlKHNvY2spOworICAgIH0KKyAgICBlZXplX3NodXRkb3duKCk7Cit9CisKK05ldHdv
cmtTdGF0ZU5vdGlmaWVyOjpOZXR3b3JrU3RhdGVOb3RpZmllcigpCisgICAgOiBtX2lzT25MaW5l
KGZhbHNlKQorICAgICwgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oMCkKKyAgICAsIG1f
ZmRIYW5kbGVyKDApCit7CisgICAgaWYgKGVlemVfaW5pdCgpIDwgMCkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIGVlemUgbGlicmFyeS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHVwZGF0ZVN0YXRlKCk7CisKKyAgICAvLyBXYXRjaCBmb3IgbmV0
d29yayBhZGRyZXNzIGNoYW5nZXMgdG8ga2VlcCBvbmxpbmUgc3RhdGUgdXAtdG8tZGF0ZS4KKyAg
ICBpbnQgc29jazsKKyAgICBpZiAoKHNvY2sgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19SQVcs
IE5FVExJTktfUk9VVEUpKSA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IG9w
ZW4gTkVUTElOS19ST1VURSBzb2NrZXQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzb2NrYWRkcl9ubCBhZGRyOworICAgIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsK
KyAgICBhZGRyLm5sX2ZhbWlseSA9IEFGX05FVExJTks7CisgICAgYWRkci5ubF9ncm91cHMgPSBS
VE1HUlBfSVBWNF9JRkFERFIgfCBSVE1HUlBfSVBWNl9JRkFERFI7CisKKyAgICBpZiAoYmluZChz
b2NrLCByZWludGVycHJldF9jYXN0PHNvY2thZGRyKj4oJmFkZHIpLCBzaXplb2YoYWRkcikpID09
IC0xKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYmluZCB0byBORVRMSU5LX1JPVVRF
IHNvY2tldC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmRIYW5kbGVyID0g
ZWNvcmVfbWFpbl9mZF9oYW5kbGVyX2FkZChzb2NrLCBFQ09SRV9GRF9SRUFELCByZWFkU29ja2V0
Q2FsbGJhY2ssIHRoaXMsIDAsIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggMTZhODkxZS4uYzkxOGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTA4LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIHByb3BlciBzdXBwb3J0IGZvciBuYXZp
Z2F0b3Iub25MaW5lIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBSZW1vdmUgZXdrX25ldHdvcmtf
c3RhdGVfbm90aWZpZXJfb25saW5lX3NldCgpIEFQSSBzaW5jZQorICAgICAgICB0aGUgRUZMIHBv
cnQgbm8gbG9uZ2VyIHJlbGllcyBvbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvCisgICAgICAg
IHByb3ZpZGUgaXQgd2l0aCB0aGUgb25saW5lIHN0YXRlLgorCisgICAgICAgICogZXdrL2V3a19u
ZXR3b3JrLmNwcDoKKyAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKKwogMjAxMi0wOC0yOSAg
S2FtaWwgQmxhbmsgIDxrLmJsYW5rQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBz
ZXR0aW5nIEFQSSBmb3IgYWxsb3cgdW5pdmVyc2FsL2ZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKaW5kZXggNzgxZTk0NS4uNjg2M2Fh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCkBAIC02MiwxMSArNjIsNiBA
QCBjb25zdCBjaGFyKiBld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCiAgICAgcmV0dXJu
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHByb3h5LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIGV3
a19uZXR3b3JrX3N0YXRlX25vdGlmaWVyX29ubGluZV9zZXQoRWluYV9Cb29sIG9ubGluZSkKLXsK
LSAgICBXZWJDb3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcigpLnNldE9uTGluZShvbmxpbmUpOwot
fQotCiBFaW5hX0Jvb2wgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dldCgpCiB7
CiAgICAgYm9vbCBjaGVja0NlcnRpZmljYXRlcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X25ldHdvcmsuaAppbmRleCBkMjI2ZjIzLi4zZjFlYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X25ldHdvcmsuaApAQCAtNTksMTMgKzU5LDYgQEAgRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19u
ZXR3b3JrX3Byb3h5X3VyaV9zZXQoY29uc3QgY2hhciAqcHJveHkpOwogRUFQSSBjb25zdCBjaGFy
ICAgICAgKmV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCk7CiAKIC8qKgotICogU2V0cyBp
ZiBuZXR3b3JrIGJhY2tlbmQgaXMgb25saW5lIG9yIG5vdC4KLSAqIAotICogQHBhcmFtIG9ubGlu
ZSBAYyBFSU5BX0ZBTFNFIGlmIG5ldHdvcmsgaXMgZGlzY29ubmVjdGVkCi0gKi8KLUVBUEkgdm9p
ZCAgICAgICAgICAgICBld2tfbmV0d29ya19zdGF0ZV9ub3RpZmllcl9vbmxpbmVfc2V0KEVpbmFf
Qm9vbCBvbmxpbmUpOwotCi0vKioKICAqIFJldHVybnMgd2hldGhlciBIVFRQUyBjb25uZWN0aW9u
cyBzaG91bGQgY2hlY2sgdGhlIHJlY2VpdmVkIGNlcnRpZmljYXRlIGFuZCBlcnJvciBvdXQgaWYg
aXQgaXMgaW52YWxpZC4KICAqCiAgKiBCeSBkZWZhdWx0LCBIVFRQUyBjb25uZWN0aW9ucyBhcmUg
cGVyZm9ybWVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbGlkaXR5IG9mIHRoZSBjZXJ0aWZpY2F0ZSBw
cm92aWRlZC4K
</data>
<flag name="commit-queue"
          id="172514"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161649</attachid>
            <date>2012-08-31 03:14:18 -0700</date>
            <delta_ts>2012-08-31 05:25:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>95532_navigator_isOnline.patch</filename>
            <type>text/plain</type>
            <size>13221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYzIzN2YzLi5mZGEzMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDgtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIG5hdmlnYXRvci5v
bkxpbmUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZXRlY3Rpbmcg
b25saW5lIHN0YXRlIGluIEVGTCBwb3J0IGFuZAorICAgICAgICBtb25pdG9yIHN0YXRlIGNoYW5n
ZXMuIFRoZSBFRkwgcG9ydCBub3cgaGFzIHByb3BlcgorICAgICAgICBzdXBwb3J0IGZvciBuYXZp
Z2F0b3Iub25MaW5lIGFuZCBhc3NvY2lhdGVkIGV2ZW50cy4KKworICAgICAgICBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgYmFzZWQgb24gRWV6ZSBsaWJyYXJ5IGZvcgorICAgICAgICBkZXRlY3Rpbmcg
bmV0d29yayBpbnRlcmZhY2VzIGFuZCB0aGVpciBjb25maWd1cmF0aW9uLgorICAgICAgICBEZXRl
Y3Rpb24gb2Ygb25saW5lIHN0YXRlIGNoYW5nZXMgcmVsaWVzIG9uIHJ0bmV0bGluay4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IExpbmsgdW5jb25kaXRpb25hbGx5IGFnYWlu
c3QgRWV6ZQorICAgICAgICBsaWJyYXJ5IG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAgKE5ldHdv
cmtTdGF0ZU5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRh
dGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6bmV0d29y
a0ludGVyZmFjZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFNvY2tldENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp+TmV0d29ya1N0YXRl
Tm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdv
cmtTdGF0ZU5vdGlmaWVyKToKKwogMjAxMi0wOC0yOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBzZXROZWVkc0FuaW1hdGUgc2hvdWxkIG5vdCBj
YXVzZSBjb21taXRSZXF1ZXN0ZWQgdG8gYmVjb21lIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKaW5kZXggODg4ZDU0NS4uNDU0ZWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTcyLDYgKzcyLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKICAgcGxhdGZvcm0vbGludXgv
R2FtZXBhZERldmljZUxpbnV4LmNwcAogICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCisgIHBsYXRmb3JtL25ldHdvcmsvZWZsL05l
dHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcAogICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAKICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNw
cAogICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcApAQCAt
MTk0LDYgKzE5NSw3IEBAIEVORElGICgpCiBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwog
ICAke0NBSVJPX0xJQlJBUklFU30KICAgJHtFQ09SRV9YX0xJQlJBUklFU30KKyAgJHtFRVpFX0xJ
QlJBUklFU30KICAgJHtFRkxERVBTX0xJQlJBUklFU30KICAgJHtFVkFTX0xJQlJBUklFU30KICAg
JHtGT05UQ09ORklHX0xJQlJBUklFU30KQEAgLTIxNCw2ICsyMTYsNyBAQCBMSVNUKEFQUEVORCBX
ZWJDb3JlX0xJQlJBUklFUwogTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICR7Q0FJUk9fSU5DTFVERV9ESVJTfQogICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQorICAk
e0VFWkVfSU5DTFVERV9ESVJTfQogICAke0VGTERFUFNfSU5DTFVERV9ESVJTfQogICAke0VWQVNf
SU5DTFVERV9ESVJTfQogICAke0ZSRUVUWVBFX0lOQ0xVREVfRElSU30KQEAgLTMyMSwxMiArMzI0
LDMgQEAgSUYgKEVOQUJMRV9XRUJfQVVESU8pCiAgIEFERF9ERUZJTklUSU9OUygtRFVOSU5TVEFM
TEVEX0FVRElPX1JFU09VUkNFU19ESVI9IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2F1ZGlvL3Jl
c291cmNlcyIpCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX0dBTUVQQUQgT1IgRU5BQkxFX05FVFdP
UktfSU5GTykKLSAgTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAg
JHtFRVpFX0lOQ0xVREVfRElSU30KLSAgKQotICBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UwotICAgICR7RUVaRV9MSUJSQVJJRVN9Ci0gICkKLUVORElGICgpCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAK
aW5kZXggMTljOGY5OC4uNmM4NWZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0TmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0
aW9uKHZvaWQoKmZ1bmN0aW9uKSgpKQogICAgIG1fbmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0aW9u
ID0gZnVuY3Rpb247CiB9CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oRUZM
KQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0
T25MaW5lKGJvb2wgb25MaW5lKQogewogICAgIGlmIChtX2lzT25MaW5lID09IG9uTGluZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuaAppbmRleCA2YTMzMGM5Li5iODZlN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC00NSw2ICs0
NSwxMCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX1NDRHluYW1pY1N0b3JlICogU0NEeW5hbWlj
U3RvcmVSZWY7CiAKICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgogCisjZWxpZiBQTEFURk9S
TShFRkwpCisKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRs
ZXI7CisKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywxNCArNjEsMTkgQEAg
Y2xhc3MgTmV0d29ya1N0YXRlTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtTdGF0ZU5vdGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTmV0d29ya1N0YXRlTm90aWZpZXIoKTsKKyNpZiBQTEFURk9STShFRkwpCisgICAgfk5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCk7CisjZW5kaWYKICAgICB2b2lkIHNldE5ldHdvcmtTdGF0ZUNoYW5n
ZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKIAogICAgIGJvb2wgb25MaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9pc09uTGluZTsgfQogCiAjaWYgKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19C
RUFSRVJNQU5BR0VNRU5UKSkKICAgICB2b2lkIHNldE5ldHdvcmtBY2Nlc3NBbGxvd2VkKGJvb2wp
OwotI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRG
T1JNKENIUk9NSVVNKQogICAgIHZvaWQgc2V0T25MaW5lKGJvb2wpOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIHZvaWQgbmV0d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKQEAgLTk0LDEzICsxMDMsMTYgQEAgcHJpdmF0ZToKICAgICBI
QU5ETEUgbV93YWl0SGFuZGxlOwogICAgIE9WRVJMQVBQRUQgbV9vdmVybGFwcGVkOwogCisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfRmRfSGFuZGxlciogbV9mZEhhbmRsZXI7CisKICNl
bGlmIChQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCkpCiAg
ICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTsKICAgICBOZXR3b3Jr
U3RhdGVOb3RpZmllclByaXZhdGUqIHA7CiAjZW5kaWYKIH07CiAKLSNpZiAhUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19C
RUFSRVJNQU5BR0VNRU5UKSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaWYgIVBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRf
Tk9fQkVBUkVSTUFOQUdFTUVOVCkpICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZP
Uk0oRUZMKQogCiBpbmxpbmUgTmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlm
aWVyKCkKICAgICA6IG1faXNPbkxpbmUodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2MzNDE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9lZmwvTmV0d29ya1N0YXRl
Tm90aWZpZXJFZmwuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVlemUu
aD4KKyNpbmNsdWRlIDxFZXplX05ldC5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1
ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisKK3N0YXRpYyBjb25zdCBjaGFyIHVkZXZMb29wQmFja0ludGVyZmFjZVN5c1BhdGhbXSA9
ICJsbyI7CitzdGF0aWMgY29uc3QgY2hhciB1ZGV2T3BlcnN0YXRlQXR0cmlidXRlW10gPSAib3Bl
cnN0YXRlIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVkZXZPcGVyc3RhdGVVcFtdID0gInVwIjsKK3N0
YXRpYyBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGUoKQoreworICAgIC8v
IEFzc3VtZSB0aGF0IHdlJ3JlIG9mZmxpbmUgdW50aWwgcHJvdmVuIG90aGVyd2lzZS4KKyAgICBt
X2lzT25MaW5lID0gZmFsc2U7CisKKyAgICBFaW5hX0xpc3QqIG5ldHdvcmtJbnRlcmZhY2VzID0g
ZWV6ZV9uZXRfbGlzdCgpOworCisgICAgRWluYV9MaXN0KiBsaXN0OworICAgIHZvaWQqIGRhdGE7
CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobmV0d29ya0ludGVyZmFjZXMsIGxpc3QsIGRhdGEpIHsK
KyAgICAgICAgRWV6ZV9OZXQqIG5ldHdvcmtJbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDxFZXplX05l
dCo+KGRhdGEpOworCisgICAgICAgIC8vIFNraXAgTG9vcGJhY2sgaW50ZXJmYWNlLgorICAgICAg
ICBjb25zdCBjaGFyKiBzeXNwYXRoID0gZWV6ZV9uZXRfc3lzcGF0aF9nZXQobmV0d29ya0ludGVy
ZmFjZSk7CisgICAgICAgIGlmICghc3lzcGF0aCB8fCAhc3RyY21wKHN5c3BhdGgsIHVkZXZMb29w
QmFja0ludGVyZmFjZVN5c1BhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
Ly8gU2tpcCBpbnRlcmZhY2VzIHRoYXQgYXJlIG5vdCB1cC4KKyAgICAgICAgY29uc3QgY2hhciog
c3RhdGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0KG5ldHdvcmtJbnRlcmZhY2UsIHVkZXZPcGVy
c3RhdGVBdHRyaWJ1dGUpOworICAgICAgICBpZiAoIXN0YXRlIHx8IHN0cmNtcChzdGF0ZSwgdWRl
dk9wZXJzdGF0ZVVwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIENoZWNr
IGlmIHRoZSBpbnRlcmZhY2UgaGFzIGFuIElQIGFkZHJlc3MuCisgICAgICAgIGVlemVfbmV0X3Nj
YW4obmV0d29ya0ludGVyZmFjZSk7CisgICAgICAgIGlmIChlZXplX25ldF9hZGRyX2dldChuZXR3
b3JrSW50ZXJmYWNlLCBFRVpFX05FVF9BRERSX1RZUEVfSVApIHx8IGVlemVfbmV0X2FkZHJfZ2V0
KG5ldHdvcmtJbnRlcmZhY2UsIEVFWkVfTkVUX0FERFJfVFlQRV9JUDYpKSB7CisgICAgICAgICAg
ICBtX2lzT25MaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgRUlOQV9MSVNUX0ZSRUUobmV0d29ya0ludGVyZmFjZXMsIGRhdGEpCisgICAgICAg
IGVlemVfbmV0X2ZyZWUoc3RhdGljX2Nhc3Q8RWV6ZV9OZXQqPihkYXRhKSk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0YXRlTm90aWZpZXI6Om5ldHdvcmtJbnRlcmZhY2VDaGFuZ2VkKCkKK3sKKyAgICBi
b29sIHdhc09ubGluZSA9IG1faXNPbkxpbmU7CisgICAgdXBkYXRlU3RhdGUoKTsKKworICAgIGlm
ICh3YXNPbmxpbmUgIT0gbV9pc09uTGluZSAmJiBtX25ldHdvcmtTdGF0ZUNoYW5nZWRGdW5jdGlv
bikKKyAgICAgICAgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oKTsKK30KKworc3RhdGlj
IEVpbmFfQm9vbCByZWFkU29ja2V0Q2FsbGJhY2sodm9pZCogdXNlckRhdGEsIEVjb3JlX0ZkX0hh
bmRsZXIqIGhhbmRsZXIpCit7CisgICAgaW50IHNvY2sgPSBlY29yZV9tYWluX2ZkX2hhbmRsZXJf
ZmRfZ2V0KGhhbmRsZXIpOworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdOworICAgIHNpemVf
dCBsZW47CisgICAgbmxtc2doZHIqIG5saCA9IHJlaW50ZXJwcmV0X2Nhc3Q8bmxtc2doZHIqPihi
dWZmZXIpOworICAgIHdoaWxlICgobGVuID0gcmVjdihzb2NrLCBubGgsIGJ1ZmZlclNpemUsIDAp
KSA+IDApIHsKKyAgICAgICAgd2hpbGUgKChOTE1TR19PSyhubGgsIGxlbikpICYmIChubGgtPm5s
bXNnX3R5cGUgIT0gTkxNU0dfRE9ORSkpIHsKKyAgICAgICAgICAgIGlmIChubGgtPm5sbXNnX3R5
cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIHdo
aWxlIHJlYWRpbmcgc29ja2V0LCBzdG9wIG1vbml0b3Jpbmcgb25MaW5lIHN0YXRlLiIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAobmxoLT5ubG1zZ190eXBlID09IFJUTV9ORVdBRERSIHx8IG5saC0+
bmxtc2dfdHlwZSA9PSBSVE1fREVMQUREUikgeworICAgICAgICAgICAgICAgIC8vIFdlIGRldGVj
dGVkIGFuIElQIGFkZHJlc3MgY2hhbmdlLCByZWNoZWNrIG9uTGluZSBzdGF0ZS4KKyAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxOZXR3b3JrU3RhdGVOb3RpZmllcio+KHVzZXJEYXRhKS0+bmV0
d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5saCA9
IE5MTVNHX05FWFQobmxoLCBsZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVD
T1JFX0NBTExCQUNLX1JFTkVXOworfQorCitOZXR3b3JrU3RhdGVOb3RpZmllcjo6fk5ldHdvcmtT
dGF0ZU5vdGlmaWVyKCkKK3sKKyAgICBpZiAobV9mZEhhbmRsZXIpIHsKKyAgICAgICAgaW50IHNv
Y2sgPSBlY29yZV9tYWluX2ZkX2hhbmRsZXJfZmRfZ2V0KG1fZmRIYW5kbGVyKTsKKyAgICAgICAg
ZWNvcmVfbWFpbl9mZF9oYW5kbGVyX2RlbChtX2ZkSGFuZGxlcik7CisgICAgICAgIGNsb3NlKHNv
Y2spOworICAgIH0KKyAgICBlZXplX3NodXRkb3duKCk7Cit9CisKK05ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpOZXR3b3JrU3RhdGVOb3RpZmllcigpCisgICAgOiBtX2lzT25MaW5lKGZhbHNlKQorICAg
ICwgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oMCkKKyAgICAsIG1fZmRIYW5kbGVyKDAp
Cit7CisgICAgaWYgKGVlemVfaW5pdCgpIDwgMCkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBpbml0aWFsaXplIGVlemUgbGlicmFyeS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHVwZGF0ZVN0YXRlKCk7CisKKyAgICAvLyBXYXRjaCBmb3IgbmV0d29yayBhZGRyZXNz
IGNoYW5nZXMgdG8ga2VlcCBvbmxpbmUgc3RhdGUgdXAtdG8tZGF0ZS4KKyAgICBpbnQgc29jazsK
KyAgICBpZiAoKHNvY2sgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19SQVcsIE5FVExJTktfUk9V
VEUpKSA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IG9wZW4gTkVUTElOS19S
T1VURSBzb2NrZXQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrYWRkcl9u
bCBhZGRyOworICAgIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsKKyAgICBhZGRyLm5s
X2ZhbWlseSA9IEFGX05FVExJTks7CisgICAgYWRkci5ubF9ncm91cHMgPSBSVE1HUlBfSVBWNF9J
RkFERFIgfCBSVE1HUlBfSVBWNl9JRkFERFI7CisKKyAgICBpZiAoYmluZChzb2NrLCByZWludGVy
cHJldF9jYXN0PHNvY2thZGRyKj4oJmFkZHIpLCBzaXplb2YoYWRkcikpID09IC0xKSB7CisgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYmluZCB0byBORVRMSU5LX1JPVVRFIHNvY2tldC4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmRIYW5kbGVyID0gZWNvcmVfbWFpbl9m
ZF9oYW5kbGVyX2FkZChzb2NrLCBFQ09SRV9GRF9SRUFELCByZWFkU29ja2V0Q2FsbGJhY2ssIHRo
aXMsIDAsIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5k
ZXggMTZhODkxZS4uYzkxOGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTA4LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKKyAgICAgICAgW0VGTF0gQWRkIHByb3BlciBzdXBwb3J0IGZvciBuYXZpZ2F0b3Iub25MaW5l
IGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KKworICAgICAgICBSZW1vdmUgZXdrX25ldHdvcmtfc3RhdGVfbm90aWZp
ZXJfb25saW5lX3NldCgpIEFQSSBzaW5jZQorICAgICAgICB0aGUgRUZMIHBvcnQgbm8gbG9uZ2Vy
IHJlbGllcyBvbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvCisgICAgICAgIHByb3ZpZGUgaXQg
d2l0aCB0aGUgb25saW5lIHN0YXRlLgorCisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoK
KyAgICAgICAgKiBld2svZXdrX25ldHdvcmsuaDoKKwogMjAxMi0wOC0yOSAgS2FtaWwgQmxhbmsg
IDxrLmJsYW5rQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIEFQSSBm
b3IgYWxsb3cgdW5pdmVyc2FsL2ZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKaW5kZXggNzgxZTk0NS4uNjg2M2FhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCkBAIC02MiwxMSArNjIsNiBAQCBjb25zdCBjaGFy
KiBld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCiAgICAgcmV0dXJuIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKHByb3h5LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIGV3a19uZXR3b3JrX3N0
YXRlX25vdGlmaWVyX29ubGluZV9zZXQoRWluYV9Cb29sIG9ubGluZSkKLXsKLSAgICBXZWJDb3Jl
OjpuZXR3b3JrU3RhdGVOb3RpZmllcigpLnNldE9uTGluZShvbmxpbmUpOwotfQotCiBFaW5hX0Jv
b2wgZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dldCgpCiB7CiAgICAgYm9vbCBj
aGVja0NlcnRpZmljYXRlcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19uZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaApp
bmRleCBkMjI2ZjIzLi4zZjFlYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaApA
QCAtNTksMTMgKzU5LDYgQEAgRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19uZXR3b3JrX3Byb3h5
X3VyaV9zZXQoY29uc3QgY2hhciAqcHJveHkpOwogRUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19u
ZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCk7CiAKIC8qKgotICogU2V0cyBpZiBuZXR3b3JrIGJh
Y2tlbmQgaXMgb25saW5lIG9yIG5vdC4KLSAqIAotICogQHBhcmFtIG9ubGluZSBAYyBFSU5BX0ZB
TFNFIGlmIG5ldHdvcmsgaXMgZGlzY29ubmVjdGVkCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAg
ICBld2tfbmV0d29ya19zdGF0ZV9ub3RpZmllcl9vbmxpbmVfc2V0KEVpbmFfQm9vbCBvbmxpbmUp
OwotCi0vKioKICAqIFJldHVybnMgd2hldGhlciBIVFRQUyBjb25uZWN0aW9ucyBzaG91bGQgY2hl
Y2sgdGhlIHJlY2VpdmVkIGNlcnRpZmljYXRlIGFuZCBlcnJvciBvdXQgaWYgaXQgaXMgaW52YWxp
ZC4KICAqCiAgKiBCeSBkZWZhdWx0LCBIVFRQUyBjb25uZWN0aW9ucyBhcmUgcGVyZm9ybWVkIHJl
Z2FyZGxlc3Mgb2YgdGhlIHZhbGlkaXR5IG9mIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4K
</data>
<flag name="commit-queue"
          id="172531"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161672</attachid>
            <date>2012-08-31 05:25:46 -0700</date>
            <delta_ts>2012-08-31 07:34:51 -0700</delta_ts>
            <desc>Fixed patch</desc>
            <filename>95532_navigator_isOnline.patch</filename>
            <type>text/plain</type>
            <size>13209</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYzIzN2YzLi4xZWZjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDgtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIG5hdmlnYXRvci5v
bkxpbmUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZXRlY3Rpbmcgb25saW5lIHN0YXRl
IGluIEVGTCBwb3J0IGFuZAorICAgICAgICBtb25pdG9yIHN0YXRlIGNoYW5nZXMuIFRoZSBFRkwg
cG9ydCBub3cgaGFzIHByb3BlcgorICAgICAgICBzdXBwb3J0IGZvciBuYXZpZ2F0b3Iub25MaW5l
IGFuZCBhc3NvY2lhdGVkIGV2ZW50cy4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMg
YmFzZWQgb24gRWV6ZSBsaWJyYXJ5IGZvcgorICAgICAgICBkZXRlY3RpbmcgbmV0d29yayBpbnRl
cmZhY2VzIGFuZCB0aGVpciBjb25maWd1cmF0aW9uLgorICAgICAgICBEZXRlY3Rpb24gb2Ygb25s
aW5lIHN0YXRlIGNoYW5nZXMgcmVsaWVzIG9uIHJ0bmV0bGluay4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6IExpbmsgdW5jb25kaXRpb25hbGx5IGFnYWluc3QgRWV6ZQorICAg
ICAgICBsaWJyYXJ5IG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAgKE5ldHdvcmtTdGF0ZU5vdGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZWZs
L05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6bmV0d29ya0ludGVyZmFjZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFNvY2tldENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp+TmV0d29ya1N0YXRlTm90aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlm
aWVyKToKKwogMjAxMi0wOC0yOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBzZXROZWVkc0FuaW1hdGUgc2hvdWxkIG5vdCBjYXVzZSBjb21taXRS
ZXF1ZXN0ZWQgdG8gYmVjb21lIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODg4
ZDU0NS4uNDU0ZWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTcyLDYgKzcyLDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmlj
ZUxpbnV4LmNwcAogICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuY3BwCisgIHBsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5v
dGlmaWVyRWZsLmNwcAogICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogICBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcApAQCAtMTk0LDYgKzE5NSw3
IEBAIEVORElGICgpCiBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAke0NBSVJPX0xJ
QlJBUklFU30KICAgJHtFQ09SRV9YX0xJQlJBUklFU30KKyAgJHtFRVpFX0xJQlJBUklFU30KICAg
JHtFRkxERVBTX0xJQlJBUklFU30KICAgJHtFVkFTX0xJQlJBUklFU30KICAgJHtGT05UQ09ORklH
X0xJQlJBUklFU30KQEAgLTIxNCw2ICsyMTYsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJB
UklFUwogTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICR7Q0FJUk9f
SU5DTFVERV9ESVJTfQogICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQorICAke0VFWkVfSU5DTFVE
RV9ESVJTfQogICAke0VGTERFUFNfSU5DTFVERV9ESVJTfQogICAke0VWQVNfSU5DTFVERV9ESVJT
fQogICAke0ZSRUVUWVBFX0lOQ0xVREVfRElSU30KQEAgLTMyMSwxMiArMzI0LDMgQEAgSUYgKEVO
QUJMRV9XRUJfQVVESU8pCiAgIEFERF9ERUZJTklUSU9OUygtRFVOSU5TVEFMTEVEX0FVRElPX1JF
U09VUkNFU19ESVI9IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcyIpCiBF
TkRJRiAoKQogCi1JRiAoRU5BQkxFX0dBTUVQQUQgT1IgRU5BQkxFX05FVFdPUktfSU5GTykKLSAg
TElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgJHtFRVpFX0lOQ0xV
REVfRElSU30KLSAgKQotICBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwotICAgICR7RUVa
RV9MSUJSQVJJRVN9Ci0gICkKLUVORElGICgpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKaW5kZXggMTljOGY5
OC4uNmM4NWZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6c2V0TmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0aW9uKHZvaWQoKmZ1
bmN0aW9uKSgpKQogICAgIG1fbmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0aW9uID0gZnVuY3Rpb247
CiB9CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0T25MaW5lKGJvb2wg
b25MaW5lKQogewogICAgIGlmIChtX2lzT25MaW5lID09IG9uTGluZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAppbmRl
eCA2YTMzMGM5Li5iODZlN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC00NSw2ICs0NSwxMCBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX1NDRHluYW1pY1N0b3JlICogU0NEeW5hbWljU3RvcmVSZWY7CiAK
ICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgogCisjZWxpZiBQTEFURk9STShFRkwpCisKK3R5
cGVkZWYgc3RydWN0IF9FY29yZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRsZXI7CisKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywxNCArNjEsMTkgQEAgY2xhc3MgTmV0d29y
a1N0YXRlTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdGF0ZU5v
dGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29ya1N0
YXRlTm90aWZpZXIoKTsKKyNpZiBQTEFURk9STShFRkwpCisgICAgfk5ldHdvcmtTdGF0ZU5vdGlm
aWVyKCk7CisjZW5kaWYKICAgICB2b2lkIHNldE5ldHdvcmtTdGF0ZUNoYW5nZWRGdW5jdGlvbih2
b2lkICgqKSgpKTsKIAogICAgIGJvb2wgb25MaW5lKCkgY29uc3QgeyByZXR1cm4gbV9pc09uTGlu
ZTsgfQogCiAjaWYgKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19CRUFSRVJNQU5BR0VN
RU5UKSkKICAgICB2b2lkIHNldE5ldHdvcmtBY2Nlc3NBbGxvd2VkKGJvb2wpOwotI2VsaWYgUExB
VEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKENIUk9NSVVN
KQogICAgIHZvaWQgc2V0T25MaW5lKGJvb2wpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHZv
aWQgbmV0d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQkxB
Q0tCRVJSWSkKQEAgLTk0LDEzICsxMDMsMTYgQEAgcHJpdmF0ZToKICAgICBIQU5ETEUgbV93YWl0
SGFuZGxlOwogICAgIE9WRVJMQVBQRUQgbV9vdmVybGFwcGVkOwogCisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgRWNvcmVfRmRfSGFuZGxlciogbV9mZEhhbmRsZXI7CisKICNlbGlmIChQTEFURk9S
TShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCkpCiAgICAgZnJpZW5kIGNs
YXNzIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTsKICAgICBOZXR3b3JrU3RhdGVOb3RpZmll
clByaXZhdGUqIHA7CiAjZW5kaWYKIH07CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oV0lOKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19CRUFSRVJNQU5BR0VN
RU5UKSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKFdJTikgJiYgIShQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFO
QUdFTUVOVCkpICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZPUk0oRUZMKQogCiBp
bmxpbmUgTmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKICAgICA6
IG1faXNPbkxpbmUodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg5NzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9lZmwvTmV0d29ya1N0YXRlTm90aWZpZXJFZmwu
Y3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVlemUuaD4KKyNpbmNsdWRl
IDxFZXplX05ldC5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L25l
dGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRp
YyBjb25zdCBjaGFyIHVkZXZMb29wQmFja0ludGVyZmFjZVN5c1BhdGhbXSA9ICJsbyI7CitzdGF0
aWMgY29uc3QgY2hhciB1ZGV2T3BlcnN0YXRlQXR0cmlidXRlW10gPSAib3BlcnN0YXRlIjsKK3N0
YXRpYyBjb25zdCBjaGFyIHVkZXZPcGVyc3RhdGVVcFtdID0gInVwIjsKK3N0YXRpYyBjb25zdCBz
aXplX3QgYnVmZmVyU2l6ZSA9IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGUoKQoreworICAgIC8vIEFzc3VtZSB0aGF0
IHdlJ3JlIG9mZmxpbmUgdW50aWwgcHJvdmVuIG90aGVyd2lzZS4KKyAgICBtX2lzT25MaW5lID0g
ZmFsc2U7CisKKyAgICBFaW5hX0xpc3QqIG5ldHdvcmtJbnRlcmZhY2VzID0gZWV6ZV9uZXRfbGlz
dCgpOworCisgICAgRWluYV9MaXN0KiBsaXN0OworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9M
SVNUX0ZPUkVBQ0gobmV0d29ya0ludGVyZmFjZXMsIGxpc3QsIGRhdGEpIHsKKyAgICAgICAgRWV6
ZV9OZXQqIG5ldHdvcmtJbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDxFZXplX05ldCo+KGRhdGEpOwor
CisgICAgICAgIC8vIFNraXAgTG9vcGJhY2sgaW50ZXJmYWNlLgorICAgICAgICBjb25zdCBjaGFy
KiBzeXNwYXRoID0gZWV6ZV9uZXRfc3lzcGF0aF9nZXQobmV0d29ya0ludGVyZmFjZSk7CisgICAg
ICAgIGlmICghc3lzcGF0aCB8fCAhc3RyY21wKHN5c3BhdGgsIHVkZXZMb29wQmFja0ludGVyZmFj
ZVN5c1BhdGgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gU2tpcCBpbnRl
cmZhY2VzIHRoYXQgYXJlIG5vdCB1cC4KKyAgICAgICAgY29uc3QgY2hhciogc3RhdGUgPSBlZXpl
X25ldF9hdHRyaWJ1dGVfZ2V0KG5ldHdvcmtJbnRlcmZhY2UsIHVkZXZPcGVyc3RhdGVBdHRyaWJ1
dGUpOworICAgICAgICBpZiAoIXN0YXRlIHx8IHN0cmNtcChzdGF0ZSwgdWRldk9wZXJzdGF0ZVVw
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpbnRl
cmZhY2UgaGFzIGFuIElQIGFkZHJlc3MuCisgICAgICAgIGVlemVfbmV0X3NjYW4obmV0d29ya0lu
dGVyZmFjZSk7CisgICAgICAgIGlmIChlZXplX25ldF9hZGRyX2dldChuZXR3b3JrSW50ZXJmYWNl
LCBFRVpFX05FVF9BRERSX1RZUEVfSVApIHx8IGVlemVfbmV0X2FkZHJfZ2V0KG5ldHdvcmtJbnRl
cmZhY2UsIEVFWkVfTkVUX0FERFJfVFlQRV9JUDYpKSB7CisgICAgICAgICAgICBtX2lzT25MaW5l
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgRUlO
QV9MSVNUX0ZSRUUobmV0d29ya0ludGVyZmFjZXMsIGRhdGEpCisgICAgICAgIGVlemVfbmV0X2Zy
ZWUoc3RhdGljX2Nhc3Q8RWV6ZV9OZXQqPihkYXRhKSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0YXRl
Tm90aWZpZXI6Om5ldHdvcmtJbnRlcmZhY2VDaGFuZ2VkKCkKK3sKKyAgICBib29sIHdhc09ubGlu
ZSA9IG1faXNPbkxpbmU7CisgICAgdXBkYXRlU3RhdGUoKTsKKworICAgIGlmICh3YXNPbmxpbmUg
IT0gbV9pc09uTGluZSAmJiBtX25ldHdvcmtTdGF0ZUNoYW5nZWRGdW5jdGlvbikKKyAgICAgICAg
bV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBy
ZWFkU29ja2V0Q2FsbGJhY2sodm9pZCogdXNlckRhdGEsIEVjb3JlX0ZkX0hhbmRsZXIqIGhhbmRs
ZXIpCit7CisgICAgaW50IHNvY2sgPSBlY29yZV9tYWluX2ZkX2hhbmRsZXJfZmRfZ2V0KGhhbmRs
ZXIpOworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdOworICAgIHNzaXplX3QgbGVuOworICAg
IG5sbXNnaGRyKiBubGggPSByZWludGVycHJldF9jYXN0PG5sbXNnaGRyKj4oYnVmZmVyKTsKKyAg
ICB3aGlsZSAoKGxlbiA9IHJlY3Yoc29jaywgbmxoLCBidWZmZXJTaXplLCBNU0dfRE9OVFdBSVQp
KSA+IDApIHsKKyAgICAgICAgd2hpbGUgKChOTE1TR19PSyhubGgsIGxlbikpICYmIChubGgtPm5s
bXNnX3R5cGUgIT0gTkxNU0dfRE9ORSkpIHsKKyAgICAgICAgICAgIGlmIChubGgtPm5sbXNnX3R5
cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIHdo
aWxlIHJlYWRpbmcgc29ja2V0LCBzdG9wIG1vbml0b3Jpbmcgb25MaW5lIHN0YXRlLiIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAobmxoLT5ubG1zZ190eXBlID09IFJUTV9ORVdBRERSIHx8IG5saC0+
bmxtc2dfdHlwZSA9PSBSVE1fREVMQUREUikgeworICAgICAgICAgICAgICAgIC8vIFdlIGRldGVj
dGVkIGFuIElQIGFkZHJlc3MgY2hhbmdlLCByZWNoZWNrIG9uTGluZSBzdGF0ZS4KKyAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxOZXR3b3JrU3RhdGVOb3RpZmllcio+KHVzZXJEYXRhKS0+bmV0
d29ya0ludGVyZmFjZUNoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5saCA9
IE5MTVNHX05FWFQobmxoLCBsZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVD
T1JFX0NBTExCQUNLX1JFTkVXOworfQorCitOZXR3b3JrU3RhdGVOb3RpZmllcjo6fk5ldHdvcmtT
dGF0ZU5vdGlmaWVyKCkKK3sKKyAgICBpZiAobV9mZEhhbmRsZXIpIHsKKyAgICAgICAgaW50IHNv
Y2sgPSBlY29yZV9tYWluX2ZkX2hhbmRsZXJfZmRfZ2V0KG1fZmRIYW5kbGVyKTsKKyAgICAgICAg
ZWNvcmVfbWFpbl9mZF9oYW5kbGVyX2RlbChtX2ZkSGFuZGxlcik7CisgICAgICAgIGNsb3NlKHNv
Y2spOworICAgIH0KKyAgICBlZXplX3NodXRkb3duKCk7Cit9CisKK05ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpOZXR3b3JrU3RhdGVOb3RpZmllcigpCisgICAgOiBtX2lzT25MaW5lKGZhbHNlKQorICAg
ICwgbV9uZXR3b3JrU3RhdGVDaGFuZ2VkRnVuY3Rpb24oMCkKKyAgICAsIG1fZmRIYW5kbGVyKDAp
Cit7CisgICAgaWYgKGVlemVfaW5pdCgpIDwgMCkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBpbml0aWFsaXplIGVlemUgbGlicmFyeS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHVwZGF0ZVN0YXRlKCk7CisKKyAgICAvLyBXYXRjaCBmb3IgbmV0d29yayBhZGRyZXNz
IGNoYW5nZXMgdG8ga2VlcCBvbmxpbmUgc3RhdGUgdXAtdG8tZGF0ZS4KKyAgICBpbnQgc29jazsK
KyAgICBpZiAoKHNvY2sgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19SQVcsIE5FVExJTktfUk9V
VEUpKSA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IG9wZW4gTkVUTElOS19S
T1VURSBzb2NrZXQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrYWRkcl9u
bCBhZGRyOworICAgIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsKKyAgICBhZGRyLm5s
X2ZhbWlseSA9IEFGX05FVExJTks7CisgICAgYWRkci5ubF9ncm91cHMgPSBSVE1HUlBfSVBWNF9J
RkFERFIgfCBSVE1HUlBfSVBWNl9JRkFERFI7CisKKyAgICBpZiAoYmluZChzb2NrLCByZWludGVy
cHJldF9jYXN0PHNvY2thZGRyKj4oJmFkZHIpLCBzaXplb2YoYWRkcikpID09IC0xKSB7CisgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYmluZCB0byBORVRMSU5LX1JPVVRFIHNvY2tldC4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmRIYW5kbGVyID0gZWNvcmVfbWFpbl9m
ZF9oYW5kbGVyX2FkZChzb2NrLCBFQ09SRV9GRF9SRUFELCByZWFkU29ja2V0Q2FsbGJhY2ssIHRo
aXMsIDAsIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5k
ZXggMTZhODkxZS4uNzAyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTA4LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKKyAgICAgICAgW0VGTF0gQWRkIHByb3BlciBzdXBwb3J0IGZvciBuYXZpZ2F0b3Iub25MaW5l
IGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgZXdrX25ldHdvcmtfc3RhdGVfbm90aWZpZXJfb25saW5lX3Nl
dCgpIEFQSSBzaW5jZQorICAgICAgICB0aGUgRUZMIHBvcnQgbm8gbG9uZ2VyIHJlbGllcyBvbiB0
aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvCisgICAgICAgIHByb3ZpZGUgaXQgd2l0aCB0aGUgb25s
aW5lIHN0YXRlLgorCisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKKyAgICAgICAgKiBl
d2svZXdrX25ldHdvcmsuaDoKKwogMjAxMi0wOC0yOSAgS2FtaWwgQmxhbmsgIDxrLmJsYW5rQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBzZXR0aW5nIEFQSSBmb3IgYWxsb3cgdW5p
dmVyc2FsL2ZpbGUgYWNjZXNzIGZyb20gZmlsZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bmV0d29yay5jcHAKaW5kZXggNzgxZTk0NS4uNjg2M2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25ldHdvcmsuY3BwCkBAIC02MiwxMSArNjIsNiBAQCBjb25zdCBjaGFyKiBld2tfbmV0d29y
a19wcm94eV91cmlfZ2V0KHZvaWQpCiAgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHBy
b3h5LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIGV3a19uZXR3b3JrX3N0YXRlX25vdGlmaWVy
X29ubGluZV9zZXQoRWluYV9Cb29sIG9ubGluZSkKLXsKLSAgICBXZWJDb3JlOjpuZXR3b3JrU3Rh
dGVOb3RpZmllcigpLnNldE9uTGluZShvbmxpbmUpOwotfQotCiBFaW5hX0Jvb2wgZXdrX25ldHdv
cmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX2dldCgpCiB7CiAgICAgYm9vbCBjaGVja0NlcnRpZmlj
YXRlcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3
b3JrLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaAppbmRleCBkMjI2ZjIz
Li4zZjFlYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuaApAQCAtNTksMTMgKzU5
LDYgQEAgRUFQSSB2b2lkICAgICAgICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQoY29u
c3QgY2hhciAqcHJveHkpOwogRUFQSSBjb25zdCBjaGFyICAgICAgKmV3a19uZXR3b3JrX3Byb3h5
X3VyaV9nZXQodm9pZCk7CiAKIC8qKgotICogU2V0cyBpZiBuZXR3b3JrIGJhY2tlbmQgaXMgb25s
aW5lIG9yIG5vdC4KLSAqIAotICogQHBhcmFtIG9ubGluZSBAYyBFSU5BX0ZBTFNFIGlmIG5ldHdv
cmsgaXMgZGlzY29ubmVjdGVkCi0gKi8KLUVBUEkgdm9pZCAgICAgICAgICAgICBld2tfbmV0d29y
a19zdGF0ZV9ub3RpZmllcl9vbmxpbmVfc2V0KEVpbmFfQm9vbCBvbmxpbmUpOwotCi0vKioKICAq
IFJldHVybnMgd2hldGhlciBIVFRQUyBjb25uZWN0aW9ucyBzaG91bGQgY2hlY2sgdGhlIHJlY2Vp
dmVkIGNlcnRpZmljYXRlIGFuZCBlcnJvciBvdXQgaWYgaXQgaXMgaW52YWxpZC4KICAqCiAgKiBC
eSBkZWZhdWx0LCBIVFRQUyBjb25uZWN0aW9ucyBhcmUgcGVyZm9ybWVkIHJlZ2FyZGxlc3Mgb2Yg
dGhlIHZhbGlkaXR5IG9mIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>