<?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>92343</bug_id>
          
          <creation_ts>2012-07-26 00:04:04 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implement Network Information provider</short_desc>
          <delta_ts>2012-07-26 21:25:48 -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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678935</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 00:04:04 -0700</bug_when>
    <thetext>We need to provide a Network Information provider for WebKit2 EFL and try to share as much code as possible with WebKit1 for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678943</commentid>
    <comment_count>1</comment_count>
      <attachid>154559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 00:10:27 -0700</bug_when>
    <thetext>Created attachment 154559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678972</commentid>
    <comment_count>2</comment_count>
      <attachid>154559</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 00:50:31 -0700</bug_when>
    <thetext>Comment on attachment 154559
Patch

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

The metered() is going to be supported after investigating a little further. I think this is good approach to support both WK1 and WK2. However, Kenneth objected to implement this feature to WebCore because functions(bandwidth and metered) may need to interact with user. If Kenneth reviewed this, I don&apos;t object to land this as well.

&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:2
&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.

Because concrete implementation comes from Samsung, you should keep Samsung copyright.

&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.h:2
&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp:92
&gt; +

It looks this is unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678987</commentid>
    <comment_count>3</comment_count>
      <attachid>154559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 01:08:00 -0700</bug_when>
    <thetext>Comment on attachment 154559
Patch

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

&gt;&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:2
&gt;&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; 
&gt; Because concrete implementation comes from Samsung, you should keep Samsung copyright.

Yes, indeed, my bad.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp:92
&gt;&gt; +
&gt; 
&gt; It looks this is unneeded line.

I like having blank line before a return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678991</commentid>
    <comment_count>4</comment_count>
      <attachid>154571</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 01:10:27 -0700</bug_when>
    <thetext>Created attachment 154571
Patch

Fixed the copyright. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679038</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 01:47:16 -0700</bug_when>
    <thetext>Looks fine. Let&apos;s wait for Kenneth comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679408</commentid>
    <comment_count>6</comment_count>
      <attachid>154666</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 09:22:07 -0700</bug_when>
    <thetext>Created attachment 154666
Patch

WebKit EFL no longer needs to link against EEZE library since the code was moved to WebCore (which already links against EEZE due to Gamepad support).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679424</commentid>
    <comment_count>7</comment_count>
      <attachid>154666</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-26 09:30:20 -0700</bug_when>
    <thetext>Comment on attachment 154666
Patch

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

r=me as you are basically just moving this around

&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:59
&gt; +    // FIXME : This function should consider cellular network as well. For example, 2G, 3G and 4G.
&gt; +    // See https://bugs.webkit.org/show_bug.cgi?id=89851 for detail.
&gt; +    Eeze_Net* ethNet = eeze_net_new(ethernetInterface);

didn&apos;t the spec change so that is not necessary anymore? The bug report says almost nothing

&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:61
&gt; +    if (!ethNet)
&gt; +        return 0;

so 0 is unknown? What does the spec say?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679451</commentid>
    <comment_count>8</comment_count>
      <attachid>154666</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 09:56:28 -0700</bug_when>
    <thetext>Comment on attachment 154666
Patch

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

&gt;&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:59
&gt;&gt; +    Eeze_Net* ethNet = eeze_net_new(ethernetInterface);
&gt; 
&gt; didn&apos;t the spec change so that is not necessary anymore? The bug report says almost nothing

I&apos;m not sure what you&apos;re referring to. Gyuyoung probably knows more since he implemented this. Based on the latest spec, we should report the bandwidth of the connection currently being used. Currently we hardcode &quot;eth0&quot; which is of course not a good idea since eth0 may not be the interface that is used. I think this is what the comment is about.

&gt;&gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:61
&gt;&gt; +        return 0;
&gt; 
&gt; so 0 is unknown? What does the spec say?

Spec says 0 is offline and infinity is unknown. I will switch to infinity then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679457</commentid>
    <comment_count>9</comment_count>
      <attachid>154676</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-26 10:01:58 -0700</bug_when>
    <thetext>Created attachment 154676
Patch for landing

Properly return infinity when the bandwidth is unknown, instead of 0, as per the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679468</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-26 10:19:20 -0700</bug_when>
    <thetext>I was referring to the comment. Maybe Gyuyoung can answer that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679469</commentid>
    <comment_count>11</comment_count>
      <attachid>154676</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-26 10:20:21 -0700</bug_when>
    <thetext>Comment on attachment 154676
Patch for landing

Are there any tests for this (for WebKit1) that tests the infinity thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679507</commentid>
    <comment_count>12</comment_count>
      <attachid>154676</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 10:47:39 -0700</bug_when>
    <thetext>Comment on attachment 154676
Patch for landing

Clearing flags on attachment: 154676

Committed r123769: &lt;http://trac.webkit.org/changeset/123769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679508</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 10:47:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680068</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 20:52:59 -0700</bug_when>
    <thetext>Existing implementation is partial implementation because EFL library doesn&apos;t support full feature for this specification. When I submitted this patch, I said this is initial patch. I will update this implementation after discussing with EFL developers. I&apos;m finding how to support cellular network based on EFL library, how to support metered option, how to support network is changed well. Please wait for my updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680089</commentid>
    <comment_count>15</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 21:25:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 154666 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154666&amp;action=review
&gt; 
&gt; r=me as you are basically just moving this around
&gt; 
&gt; &gt; Source/WebCore/platform/efl/NetworkInfoProviderEfl.cpp:59
&gt; &gt; +    // FIXME : This function should consider cellular network as well. For example, 2G, 3G and 4G.
&gt; &gt; +    // See https://bugs.webkit.org/show_bug.cgi?id=89851 for detail.
&gt; &gt; +    Eeze_Net* ethNet = eeze_net_new(ethernetInterface);
&gt; 
&gt; didn&apos;t the spec change so that is not necessary anymore? The bug report says almost nothing

I implemented this feature based on latest editor draft.
http://dev.w3.org/2009/dap/netinfo/

The editor draft is not interested in network type. In EFL case, however, eeze library supports network information. In order to get network information via eeze, I needed to distinguish between ethernet and wireless network. For now, eeze doesn&apos;t support wireless network. So, I used ethNet variable name. I discussed this issue with EFL developers. But, I didn&apos;t find proper solution yet. I&apos;m going to update patch as soon as I found it.


By the way, if eeze_net_new returns NULL, I thought network is offline.

Spec say *infinity* if the bandwidth is unknown and *0* if the user is currently offline;

if (!ethNet)
    return std::numeric_limits&lt;double&gt;::infinity(); // Spec says we should return infinity if unknown



bandwidth is being checked below code.

double bandwidth;
const char* attribute = eeze_net_attribute_get(ethNet, &quot;speed&quot;);
if (attribute) {
    bool ok;
    bandwidth = String::fromUTF8(attribute).toUIntStrict(&amp;ok);
} else
    bandwidth = std::numeric_limits&lt;double&gt;::infinity(); // If bandwidth is unknown, return infinity value.


So&apos; I would like to revert this modification on Bug 92454 for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154559</attachid>
            <date>2012-07-26 00:10:27 -0700</date>
            <delta_ts>2012-07-26 01:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>92343_wk2_networkinfo_provider.patch</filename>
            <type>text/plain</type>
            <size>20014</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMDMzMzc3Li42NmI5MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9u
IHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIgY29kZSBmcm9tIFdlYktpdDEKKyAg
ICAgICAgdG8gV2ViQ29yZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBXZWJLaXQyLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZWZsL05ldHdvcmtJbmZvUHJv
dmlkZXJFZmwuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsOjpzdG9wVXBkYXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6YmFuZHdpZHRo
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRlckVmbC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlckVmbCk6
CisKIDIwMTItMDctMjUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW0Nocm9taXVtXVtXaW5dIDxwcm9ncmVzcz4gYW5pbWF0aW9uIG9uIFJUTCBkaXJlY3Rp
b24gaXMgcmV2ZXJzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhOWE0ZjExLi41ZjMz
ODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDIsNiArNDIsNyBAQCBMSVNUKEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwu
Y3BwCiAgIHBsYXRmb3JtL2VmbC9Mb2dnaW5nRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvTUlNRVR5
cGVSZWdpc3RyeUVmbC5jcHAKKyAgcGxhdGZvcm0vZWZsL05ldHdvcmtJbmZvUHJvdmlkZXJFZmwu
Y3BwCiAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGxh
dGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2
ZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg3ZmNjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
TmV0d29ya0luZm9Qcm92aWRlckVmbC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtJbmZvUHJvdmlk
ZXJFZmwuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlIDxFZXplLmg+
CisjaW5jbHVkZSA8RWV6ZV9OZXQuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0
IGNoYXIgZXRoZXJuZXRJbnRlcmZhY2VbXSA9ICJldGgwIjsKKworTmV0d29ya0luZm9Qcm92aWRl
ckVmbDo6TmV0d29ya0luZm9Qcm92aWRlckVmbCgpCit7Cit9CisKK3ZvaWQgTmV0d29ya0luZm9Q
cm92aWRlckVmbDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgaWYgKCFlZXplX2luaXQoKSkKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsIHRvIHN0YXJ0IG5ldHdvcmsgaW5mb3JtYXRpb24g
Y2xpZW50LlxuIik7Cit9CisKK3ZvaWQgTmV0d29ya0luZm9Qcm92aWRlckVmbDo6c3RvcFVwZGF0
aW5nKCkKK3sKKyAgICBlZXplX3NodXRkb3duKCk7Cit9CisKK2RvdWJsZSBOZXR3b3JrSW5mb1By
b3ZpZGVyRWZsOjpiYW5kd2lkdGgoKSBjb25zdAoreworICAgIC8vIEZJWE1FIDogVGhpcyBmdW5j
dGlvbiBzaG91bGQgY29uc2lkZXIgY2VsbHVsYXIgbmV0d29yayBhcyB3ZWxsLiBGb3IgZXhhbXBs
ZSwgMkcsIDNHIGFuZCA0Ry4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg5ODUxIGZvciBkZXRhaWwuCisgICAgRWV6ZV9OZXQqIGV0aE5ldCA9IGVl
emVfbmV0X25ldyhldGhlcm5ldEludGVyZmFjZSk7CisgICAgaWYgKCFldGhOZXQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZWV6ZV9uZXRfc2NhbihldGhOZXQpOworCisgICAgLy8gRklYTUUg
OiBUaGUgZWV6ZSBsaWJyYXJ5IGRvZXNuJ3Qgc3VwcG9ydCBFRVpFX05FVF9BRERSX1RZUEVfSVAg
dHlwZSB5ZXQuIFNvLCBFRVpFX05FVF9BRERSX1RZUEVfQlJPQURDQVNUCisgICAgLy8gaXMgdXNl
ZCBmb3Igbm93LgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk4NTIgZm9yIGRldGFpbC4KKyAgICBjb25zdCBjaGFyKiBhZGRyZXNzID0gZWV6ZV9u
ZXRfYWRkcl9nZXQoZXRoTmV0LCBFRVpFX05FVF9BRERSX1RZUEVfQlJPQURDQVNUKTsKKyAgICBp
ZiAoIWFkZHJlc3MpCisgICAgICAgIHJldHVybiAwOyAvLyBJZiBuZXR3b3JrIGlzIG9mZmxpbmUs
IHJldHVybiAwLgorCisgICAgZG91YmxlIGJhbmR3aWR0aDsKKyAgICBjb25zdCBjaGFyKiBhdHRy
aWJ1dGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0KGV0aE5ldCwgInNwZWVkIik7CisgICAgaWYg
KGF0dHJpYnV0ZSkgeworICAgICAgICBib29sIG9rOworICAgICAgICBiYW5kd2lkdGggPSBTdHJp
bmc6OmZyb21VVEY4KGF0dHJpYnV0ZSkudG9VSW50U3RyaWN0KCZvayk7CisgICAgfSBlbHNlCisg
ICAgICAgIGJhbmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsgLy8gSWYgYmFuZHdpZHRoIGlzIHVua25vd24sIHJldHVybiBpbmZpbml0eSB2YWx1ZS4KKwor
ICAgIGVlemVfbmV0X2ZyZWUoZXRoTmV0KTsKKworICAgIHJldHVybiBiYW5kd2lkdGggLyA4OyAv
LyBNQi9zCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX0lORk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0
d29ya0luZm9Qcm92aWRlckVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXJFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
NThkOGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05l
dHdvcmtJbmZvUHJvdmlkZXJFZmwuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmxfaAorI2RlZmluZSBOZXR3b3JrSW5m
b1Byb3ZpZGVyRWZsX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlckVmbCB7CitwdWJsaWM6CisgICAg
TmV0d29ya0luZm9Qcm92aWRlckVmbCgpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7Cisg
ICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworICAgIGRvdWJsZSBiYW5kd2lkdGgoKSBjb25zdDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X0lORk8pCisKKyNlbmRpZiAvLyBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCBmODdhOTA4Li5lZjk5Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9u
IHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgTmV0d29ya0luZm9DbGllbnRFZmwgdXNlIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwKKyAg
ICAgICAgZnJvbSBXZWJDb3JlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24gd2l0aCBXZWJLaXQy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0b3BVcGRhdGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6YmFuZHdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjptZXRlcmVkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5ldHdvcmtJbmZvQ2xpZW50RWZsKToKKwog
MjAxMi0wNy0yNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIFVzZSBlaW5hX3N0cmluZ3NoYXJlX2FkZCBpbnN0ZWFkIG9mIHN0cmR1cC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZv
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJ
bmZvQ2xpZW50RWZsLmNwcAppbmRleCA2N2U5YzE2Li43YTdjMWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwu
Y3BwCkBAIC0yOSwyMiArMjksMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrSW5mb0NsaWVudEVmbC5o
IgogCiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKLSNpbmNsdWRlICJOZXR3b3JrSW5mby5oIgot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgPEVlemUuaD4KLSNpbmNsdWRlIDxFZXplX05ldC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBldGhlcm5ldEludGVyZmFjZSA9ICJldGgwIjsKLQogTmV0d29ya0luZm9DbGllbnRF
Zmw6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsKCkKLSAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwg
bV9tZXRlcmVkKGZhbHNlKQogewogfQogCkBAIC01NCw1MiArNDQsMjYgQEAgTmV0d29ya0luZm9D
bGllbnRFZmw6On5OZXR3b3JrSW5mb0NsaWVudEVmbCgpCiAKIHZvaWQgTmV0d29ya0luZm9DbGll
bnRFZmw6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIGlmICghZWV6ZV9pbml0KCkpIHsKLSAgICAg
ICAgRVJSKCJGYWlsIHRvIHN0YXJ0IG5ldHdvcmsgaW5mb3JtYXRpb24gY2xpZW50LiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fcHJvdmlkZXIuc3RhcnRVcGRhdGluZygpOwogfQog
CiB2b2lkIE5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcoKQogewotICAgIGVlemVf
c2h1dGRvd24oKTsKKyAgICBtX3Byb3ZpZGVyLnN0b3BVcGRhdGluZygpOwogfQogCiBkb3VibGUg
TmV0d29ya0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUg
OiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjb25zaWRlciBjZWxsdWxhciBuZXR3b3JrIGFzIHdlbGwu
IEZvciBleGFtcGxlLCAyRywgM0cgYW5kIDRHLgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTEgZm9yIGRldGFpbC4KLSAgICBFZXplX05ldCog
ZXRoTmV0ID0gZWV6ZV9uZXRfbmV3KGV0aGVybmV0SW50ZXJmYWNlKTsKLSAgICBpZiAoIWV0aE5l
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBlZXplX25ldF9zY2FuKGV0aE5ldCk7Ci0KLSAg
ICAvLyBGSVhNRSA6IFRoZSBlZXplIGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0IEVFWkVfTkVUX0FE
RFJfVFlQRV9JUCB0eXBlIHlldC4gU28sIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QKLSAg
ICAvLyBpcyB1c2VkIGZvciBub3cuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTg1MiBmb3IgZGV0YWlsLgotICAgIGNvbnN0IGNoYXIqIGFkZHJl
c3MgPSBlZXplX25ldF9hZGRyX2dldChldGhOZXQsIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENB
U1QpOwotICAgIGlmICghYWRkcmVzcykKLSAgICAgICAgcmV0dXJuIDA7IC8vIElmIG5ldHdvcmsg
aXMgb2ZmbGluZSwgcmV0dXJuIDAuCi0KLSAgICBkb3VibGUgYmFuZHdpZHRoOwotICAgIGNvbnN0
IGNoYXIqIGF0dHJpYnV0ZSA9IGVlemVfbmV0X2F0dHJpYnV0ZV9nZXQoZXRoTmV0LCAic3BlZWQi
KTsKLSAgICBpZiAoYXR0cmlidXRlKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGJhbmR3
aWR0aCA9IFN0cmluZzo6ZnJvbVVURjgoYXR0cmlidXRlKS50b1VJbnRTdHJpY3QoJm9rKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgYmFuZHdpZHRoID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpOyAvLyBJZiBiYW5kd2lkdGggaXMgdW5rbm93biwgcmV0dXJuIGluZmluaXR5
IHZhbHVlLgotCi0gICAgZWV6ZV9uZXRfZnJlZShldGhOZXQpOwotCi0gICAgcmV0dXJuIGJhbmR3
aWR0aCAvIDg7IC8vIE1CL3MKKyAgICByZXR1cm4gbV9wcm92aWRlci5iYW5kd2lkdGgoKTsKIH0K
IAogYm9vbCBOZXR3b3JrSW5mb0NsaWVudEVmbDo6bWV0ZXJlZCgpIGNvbnN0CiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbV9tZXRlcmVkOwotfQogCisgICAgcmV0dXJuIGZh
bHNlOwogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmgK
aW5kZXggMjBlOGFiNy4uNjkwODczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5oCkBAIC0zMSwxMCArMzEsMTEg
QEAKIAogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAKLSNpbmNsdWRlICJOZXR3b3JrSW5mb0Ns
aWVudC5oIgotI2luY2x1ZGUgIk5ldHdvcmtJbmZvQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPE5l
dHdvcmtJbmZvQ2xpZW50Lmg+CisjaW5jbHVkZSA8TmV0d29ya0luZm9Qcm92aWRlckVmbC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIE5ldHdvcmtJbmZvQ2xpZW50RWZsIDogcHVi
bGljIFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50IHsKIHB1YmxpYzoKICAgICBOZXR3b3JrSW5m
b0NsaWVudEVmbCgpOwpAQCAtNDcsMTEgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgbWV0ZXJlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtJbmZvQ29udHJvbGxl
ciogbV9jb250cm9sbGVyOwotCi0gICAgYm9vbCBtX21ldGVyZWQ7CisgICAgV2ViQ29yZTo6TmV0
d29ya0luZm9Qcm92aWRlckVmbCBtX3Byb3ZpZGVyOwogfTsKLX0KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKICNlbmRpZiAvLyBOZXR3b3JrSW5mb0NsaWVudEVmbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CmluZGV4IGU2ZDNiZWUuLjhiNWU3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CkBAIC00NSw2ICs0NSw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJDT1JFX0RJUn0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvYmF0dGVyeSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbnRlbnRzIgorICAgICIke1dFQkNPUkVfRElSfS9N
b2R1bGVzL25ldHdvcmtpbmZvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3ZpYnJhdGlv
biIKICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eSIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3MvanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzkzYzVlZS4uZTJmYmQxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgTmV0
d29yayBJbmZvcm1hdGlvbiBwcm92aWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgTmV0d29yayBJbmZvcm1hdGlvbiBwcm92aWRlciBmb3IgV2Vi
S2l0MiBFRkwKKyAgICAgICAgYnkgdXNpbmcgTmV0d29ya0luZm9Qcm92aWRlckVmbCBjbGFzcyBm
cm9tCisgICAgICAgIFdlYkNvcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9OZXR3
b3JrSW5mb1Byb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgICh0b05ldHdvcmtJbmZvUHJvdmlk
ZXIpOgorICAgICAgICAoc3RhcnRVcGRhdGluZ0NhbGxiYWNrKToKKyAgICAgICAgKHN0b3BVcGRh
dGluZ0NhbGxiYWNrKToKKyAgICAgICAgKGdldEJhbmR3aWR0aENhbGxiYWNrKToKKyAgICAgICAg
KGlzTWV0ZXJlZENhbGxiYWNrKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OmNyZWF0
ZSk6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjpOZXR3b3JrSW5mb1Byb3ZpZGVyKToK
KyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6On5OZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAg
ICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OmJhbmR3aWR0aCk6CisgICAgICAgIChOZXR3b3Jr
SW5mb1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcik6CisKIDIwMTItMDctMjUgIFNlb2tq
dSBLd29uICA8c2Vva2p1Lmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJ
bXBsZW1lbnQgdGhlIGluc3BlY3RvciBmb3IgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCAxOTM5YjYzLi5iMWE5MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMzcsNiArMzcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9O
ZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGE2OTIxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoTkVUV09S
S19JTkZPKQorCisjaW5jbHVkZSAiV0tOZXR3b3JrSW5mb01hbmFnZXIuaCIKKyNpbmNsdWRlIDxO
b3RJbXBsZW1lbnRlZC5oPgorCitzdGF0aWMgaW5saW5lIE5ldHdvcmtJbmZvUHJvdmlkZXIqIHRv
TmV0d29ya0luZm9Qcm92aWRlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxOZXR3b3JrSW5mb1Byb3ZpZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOworfQorCitzdGF0aWMgdm9pZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tOZXR3
b3JrSW5mb01hbmFnZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9OZXR3
b3JrSW5mb1Byb3ZpZGVyKGNsaWVudEluZm8pLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHN0b3BVcGRhdGluZ0NhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvTmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJ
bmZvKS0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK3N0YXRpYyBkb3VibGUgZ2V0QmFuZHdpZHRoQ2Fs
bGJhY2soV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgcmV0dXJuIHRvTmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJbmZvKS0+YmFuZHdpZHRo
KCk7Cit9CisKK3N0YXRpYyBib29sIGlzTWV0ZXJlZENhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5h
Z2VyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiB0b05ldHdvcmtJ
bmZvUHJvdmlkZXIoY2xpZW50SW5mbyktPm1ldGVyZWQoKTsKK30KKworUGFzc1JlZlB0cjxOZXR3
b3JrSW5mb1Byb3ZpZGVyPiBOZXR3b3JrSW5mb1Byb3ZpZGVyOjpjcmVhdGUoV0tOZXR3b3JrSW5m
b01hbmFnZXJSZWYgd2tNYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29y
a0luZm9Qcm92aWRlcih3a01hbmFnZXIpKTsKK30KKworTmV0d29ya0luZm9Qcm92aWRlcjo6TmV0
d29ya0luZm9Qcm92aWRlcihXS05ldHdvcmtJbmZvTWFuYWdlclJlZiB3a01hbmFnZXIpCisgICAg
OiBtX3drTmV0d29ya0luZm9NYW5hZ2VyKHdrTWFuYWdlcikKK3sKKyAgICBBU1NFUlQod2tNYW5h
Z2VyKTsKKworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlciB3a05ldHdvcmtJbmZvUHJvdmlkZXIg
PSB7CisgICAgICAgIGtXS05ldHdvcmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbiwKKyAgICAg
ICAgdGhpcywgLy8gY2xpZW50SW5mbworICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCisg
ICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAorICAgICAgICBnZXRCYW5kd2lkdGhDYWxsYmFj
aywKKyAgICAgICAgaXNNZXRlcmVkQ2FsbGJhY2sKKyAgICB9OworICAgIFdLTmV0d29ya0luZm9N
YW5hZ2VyU2V0UHJvdmlkZXIobV93a05ldHdvcmtJbmZvTWFuYWdlci5nZXQoKSwgJndrTmV0d29y
a0luZm9Qcm92aWRlcik7Cit9CisKK05ldHdvcmtJbmZvUHJvdmlkZXI6On5OZXR3b3JrSW5mb1By
b3ZpZGVyKCkKK3sKK30KKworZG91YmxlIE5ldHdvcmtJbmZvUHJvdmlkZXI6OmJhbmR3aWR0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvdmlkZXIuYmFuZHdpZHRoKCk7Cit9CisKK2Jvb2wg
TmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrSW5mb1Byb3ZpZGVy
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsKK30K
Kwordm9pZCBOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fcHJv
dmlkZXIuc3RvcFVwZGF0aW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0lu
Zm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0lu
Zm9Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5Zjg2ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9OZXR3
b3JrSW5mb1Byb3ZpZGVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKKyNkZWZpbmUgTmV0d29ya0luZm9Qcm92aWRl
cl9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSA8TmV0d29ya0luZm9D
bGllbnQuaD4KKyNpbmNsdWRlIDxOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlciA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtJbmZvUHJvdmlkZXI+LCBwdWJsaWMgV2ViQ29yZTo6TmV0
d29ya0luZm9DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk5ldHdvcmtJbmZvUHJvdmlk
ZXIoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXR3b3JrSW5mb1Byb3ZpZGVyPiBjcmVhdGUo
V0tOZXR3b3JrSW5mb01hbmFnZXJSZWYpOworCisgICAgLy8gTmV0d29ya0luZm9DbGllbnQgaW50
ZXJmYWNlLgorICAgIHZpcnR1YWwgZG91YmxlIGJhbmR3aWR0aCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBtZXRlcmVkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworcHJpdmF0ZToKKyAgICBO
ZXR3b3JrSW5mb1Byb3ZpZGVyKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmKTsKKworICAgIFdLUmV0
YWluUHRyPFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmPiBtX3drTmV0d29ya0luZm9NYW5hZ2VyOwor
ICAgIFdlYkNvcmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgbV9wcm92aWRlcjsKK307CisKKyNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gTmV0d29ya0luZm9Qcm92
aWRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154571</attachid>
            <date>2012-07-26 01:10:27 -0700</date>
            <delta_ts>2012-07-26 09:22:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>92343_wk2_networkinfo_provider.patch</filename>
            <type>text/plain</type>
            <size>20018</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMDMzMzc3Li42NmI5MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9u
IHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIgY29kZSBmcm9tIFdlYktpdDEKKyAg
ICAgICAgdG8gV2ViQ29yZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBXZWJLaXQyLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZWZsL05ldHdvcmtJbmZvUHJv
dmlkZXJFZmwuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsOjpzdG9wVXBkYXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6YmFuZHdpZHRo
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRlckVmbC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlckVmbCk6
CisKIDIwMTItMDctMjUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW0Nocm9taXVtXVtXaW5dIDxwcm9ncmVzcz4gYW5pbWF0aW9uIG9uIFJUTCBkaXJlY3Rp
b24gaXMgcmV2ZXJzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhOWE0ZjExLi41ZjMz
ODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDIsNiArNDIsNyBAQCBMSVNUKEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwu
Y3BwCiAgIHBsYXRmb3JtL2VmbC9Mb2dnaW5nRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvTUlNRVR5
cGVSZWdpc3RyeUVmbC5jcHAKKyAgcGxhdGZvcm0vZWZsL05ldHdvcmtJbmZvUHJvdmlkZXJFZmwu
Y3BwCiAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGxh
dGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2
ZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA2MTg1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
TmV0d29ya0luZm9Qcm92aWRlckVmbC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92
aWRlckVmbC5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgPEVlemUu
aD4KKyNpbmNsdWRlIDxFZXplX05ldC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29u
c3QgY2hhciBldGhlcm5ldEludGVyZmFjZVtdID0gImV0aDAiOworCitOZXR3b3JrSW5mb1Byb3Zp
ZGVyRWZsOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsKCkKK3sKK30KKwordm9pZCBOZXR3b3JrSW5m
b1Byb3ZpZGVyRWZsOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIWVlemVfaW5pdCgpKQor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWwgdG8gc3RhcnQgbmV0d29yayBpbmZvcm1hdGlv
biBjbGllbnQuXG4iKTsKK30KKwordm9pZCBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsOjpzdG9wVXBk
YXRpbmcoKQoreworICAgIGVlemVfc2h1dGRvd24oKTsKK30KKworZG91YmxlIE5ldHdvcmtJbmZv
UHJvdmlkZXJFZmw6OmJhbmR3aWR0aCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUUgOiBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBjb25zaWRlciBjZWxsdWxhciBuZXR3b3JrIGFzIHdlbGwuIEZvciBleGFt
cGxlLCAyRywgM0cgYW5kIDRHLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk4NTEgZm9yIGRldGFpbC4KKyAgICBFZXplX05ldCogZXRoTmV0ID0g
ZWV6ZV9uZXRfbmV3KGV0aGVybmV0SW50ZXJmYWNlKTsKKyAgICBpZiAoIWV0aE5ldCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBlZXplX25ldF9zY2FuKGV0aE5ldCk7CisKKyAgICAvLyBGSVhN
RSA6IFRoZSBlZXplIGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0IEVFWkVfTkVUX0FERFJfVFlQRV9J
UCB0eXBlIHlldC4gU28sIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QKKyAgICAvLyBpcyB1
c2VkIGZvciBub3cuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTg1MiBmb3IgZGV0YWlsLgorICAgIGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBlZXpl
X25ldF9hZGRyX2dldChldGhOZXQsIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QpOworICAg
IGlmICghYWRkcmVzcykKKyAgICAgICAgcmV0dXJuIDA7IC8vIElmIG5ldHdvcmsgaXMgb2ZmbGlu
ZSwgcmV0dXJuIDAuCisKKyAgICBkb3VibGUgYmFuZHdpZHRoOworICAgIGNvbnN0IGNoYXIqIGF0
dHJpYnV0ZSA9IGVlemVfbmV0X2F0dHJpYnV0ZV9nZXQoZXRoTmV0LCAic3BlZWQiKTsKKyAgICBp
ZiAoYXR0cmlidXRlKSB7CisgICAgICAgIGJvb2wgb2s7CisgICAgICAgIGJhbmR3aWR0aCA9IFN0
cmluZzo6ZnJvbVVURjgoYXR0cmlidXRlKS50b1VJbnRTdHJpY3QoJm9rKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYmFuZHdpZHRoID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpOyAvLyBJZiBiYW5kd2lkdGggaXMgdW5rbm93biwgcmV0dXJuIGluZmluaXR5IHZhbHVlLgor
CisgICAgZWV6ZV9uZXRfZnJlZShldGhOZXQpOworCisgICAgcmV0dXJuIGJhbmR3aWR0aCAvIDg7
IC8vIE1CL3MKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9O
ZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0
d29ya0luZm9Qcm92aWRlckVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmVjM2Y4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
TmV0d29ya0luZm9Qcm92aWRlckVmbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsX2gKKyNkZWZpbmUgTmV0d29y
a0luZm9Qcm92aWRlckVmbF9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgeworcHVibGljOgor
ICAgIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwoKTsKKworICAgIHZvaWQgc3RhcnRVcGRhdGluZygp
OworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKKyAgICBkb3VibGUgYmFuZHdpZHRoKCkgY29u
c3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19JTkZPKQorCisjZW5kaWYgLy8gTmV0d29ya0luZm9Qcm92aWRlckVmbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggZjg3YTkwOC4uZWY5OTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDEyLTA3LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgTmV0d29yayBJbmZvcm1h
dGlvbiBwcm92aWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTIzNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIE5ldHdvcmtJbmZvQ2xpZW50RWZsIHVzZSBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZs
CisgICAgICAgIGZyb20gV2ViQ29yZSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uIHdpdGggV2Vi
S2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6bWV0ZXJlZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOZXR3b3JrSW5mb0NsaWVudEVmbCk6
CisKIDIwMTItMDctMjUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXSBVc2UgZWluYV9zdHJpbmdzaGFyZV9hZGQgaW5zdGVhZCBvZiBzdHJk
dXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
SW5mb0NsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3
b3JrSW5mb0NsaWVudEVmbC5jcHAKaW5kZXggNjdlOWMxNi4uN2E3YzFjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50
RWZsLmNwcApAQCAtMjksMjIgKzI5LDEyIEBACiAjaW5jbHVkZSAiTmV0d29ya0luZm9DbGllbnRF
ZmwuaCIKIAogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCi0jaW5jbHVkZSAiTmV0d29ya0luZm8u
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCi0jaW5jbHVkZSAiZXdrX3ByaXZhdGUu
aCIKLSNpbmNsdWRlIDxFZXplLmg+Ci0jaW5jbHVkZSA8RWV6ZV9OZXQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Y29uc3QgY2hhciogZXRoZXJuZXRJbnRlcmZhY2UgPSAiZXRoMCI7Ci0KIE5ldHdvcmtJbmZvQ2xp
ZW50RWZsOjpOZXR3b3JrSW5mb0NsaWVudEVmbCgpCi0gICAgOiBtX2NvbnRyb2xsZXIoMCkKLSAg
ICAsIG1fbWV0ZXJlZChmYWxzZSkKIHsKIH0KIApAQCAtNTQsNTIgKzQ0LDI2IEBAIE5ldHdvcmtJ
bmZvQ2xpZW50RWZsOjp+TmV0d29ya0luZm9DbGllbnRFZmwoKQogCiB2b2lkIE5ldHdvcmtJbmZv
Q2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKCkKIHsKLSAgICBpZiAoIWVlemVfaW5pdCgpKSB7Ci0g
ICAgICAgIEVSUigiRmFpbCB0byBzdGFydCBuZXR3b3JrIGluZm9ybWF0aW9uIGNsaWVudC4iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsK
IH0KIAogdm9pZCBOZXR3b3JrSW5mb0NsaWVudEVmbDo6c3RvcFVwZGF0aW5nKCkKIHsKLSAgICBl
ZXplX3NodXRkb3duKCk7CisgICAgbV9wcm92aWRlci5zdG9wVXBkYXRpbmcoKTsKIH0KIAogZG91
YmxlIE5ldHdvcmtJbmZvQ2xpZW50RWZsOjpiYW5kd2lkdGgoKSBjb25zdAogewotICAgIC8vIEZJ
WE1FIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgY29uc2lkZXIgY2VsbHVsYXIgbmV0d29yayBhcyB3
ZWxsLiBGb3IgZXhhbXBsZSwgMkcsIDNHIGFuZCA0Ry4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODUxIGZvciBkZXRhaWwuCi0gICAgRWV6ZV9O
ZXQqIGV0aE5ldCA9IGVlemVfbmV0X25ldyhldGhlcm5ldEludGVyZmFjZSk7Ci0gICAgaWYgKCFl
dGhOZXQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZWV6ZV9uZXRfc2NhbihldGhOZXQpOwot
Ci0gICAgLy8gRklYTUUgOiBUaGUgZWV6ZSBsaWJyYXJ5IGRvZXNuJ3Qgc3VwcG9ydCBFRVpFX05F
VF9BRERSX1RZUEVfSVAgdHlwZSB5ZXQuIFNvLCBFRVpFX05FVF9BRERSX1RZUEVfQlJPQURDQVNU
Ci0gICAgLy8gaXMgdXNlZCBmb3Igbm93LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTIgZm9yIGRldGFpbC4KLSAgICBjb25zdCBjaGFyKiBh
ZGRyZXNzID0gZWV6ZV9uZXRfYWRkcl9nZXQoZXRoTmV0LCBFRVpFX05FVF9BRERSX1RZUEVfQlJP
QURDQVNUKTsKLSAgICBpZiAoIWFkZHJlc3MpCi0gICAgICAgIHJldHVybiAwOyAvLyBJZiBuZXR3
b3JrIGlzIG9mZmxpbmUsIHJldHVybiAwLgotCi0gICAgZG91YmxlIGJhbmR3aWR0aDsKLSAgICBj
b25zdCBjaGFyKiBhdHRyaWJ1dGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0KGV0aE5ldCwgInNw
ZWVkIik7Ci0gICAgaWYgKGF0dHJpYnV0ZSkgewotICAgICAgICBib29sIG9rOwotICAgICAgICBi
YW5kd2lkdGggPSBTdHJpbmc6OmZyb21VVEY4KGF0dHJpYnV0ZSkudG9VSW50U3RyaWN0KCZvayk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGJhbmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsgLy8gSWYgYmFuZHdpZHRoIGlzIHVua25vd24sIHJldHVybiBpbmZp
bml0eSB2YWx1ZS4KLQotICAgIGVlemVfbmV0X2ZyZWUoZXRoTmV0KTsKLQotICAgIHJldHVybiBi
YW5kd2lkdGggLyA4OyAvLyBNQi9zCisgICAgcmV0dXJuIG1fcHJvdmlkZXIuYmFuZHdpZHRoKCk7
CiB9CiAKIGJvb2wgTmV0d29ya0luZm9DbGllbnRFZmw6Om1ldGVyZWQoKSBjb25zdAogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG1fbWV0ZXJlZDsKLX0KIAorICAgIHJldHVy
biBmYWxzZTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVm
bC5oCmluZGV4IDIwZThhYjcuLjY5MDg3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaApAQCAtMzEsMTAgKzMx
LDExIEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogCi0jaW5jbHVkZSAiTmV0d29ya0lu
Zm9DbGllbnQuaCIKLSNpbmNsdWRlICJOZXR3b3JrSW5mb0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxOZXR3b3JrSW5mb0NsaWVudC5oPgorI2luY2x1ZGUgPE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBOZXR3b3JrSW5mb0NsaWVudEVmbCA6
IHB1YmxpYyBXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudCB7CiBwdWJsaWM6CiAgICAgTmV0d29y
a0luZm9DbGllbnRFZmwoKTsKQEAgLTQ3LDExICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG1ldGVyZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrSW5mb0NvbnRy
b2xsZXIqIG1fY29udHJvbGxlcjsKLQotICAgIGJvb2wgbV9tZXRlcmVkOworICAgIFdlYkNvcmU6
Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgbV9wcm92aWRlcjsKIH07Ci19CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCiAjZW5kaWYgLy8gTmV0d29ya0luZm9DbGllbnRFZmxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBlNmQzYmVlLi44YjVlN2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dApAQCAtNDUsNiArNDUsNyBAQCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2JhdHRlcnki
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW50ZW50cyIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9uZXR3b3JraW5mbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJy
YXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2JpbmRpbmdzL2pzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM5M2M1ZWUuLmUyZmJkMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNy0yNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50
IE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIgZm9y
IFdlYktpdDIgRUZMCisgICAgICAgIGJ5IHVzaW5nIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgY2xh
c3MgZnJvbQorICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
TmV0d29ya0luZm9Qcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAodG9OZXR3b3JrSW5mb1By
b3ZpZGVyKToKKyAgICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFjayk6CisgICAgICAgIChzdG9w
VXBkYXRpbmdDYWxsYmFjayk6CisgICAgICAgIChnZXRCYW5kd2lkdGhDYWxsYmFjayk6CisgICAg
ICAgIChpc01ldGVyZWRDYWxsYmFjayk6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcjo6TmV0d29ya0luZm9Qcm92aWRl
cik6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjp+TmV0d29ya0luZm9Qcm92aWRlcik6
CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgpOgorICAgICAgICAoTmV0
d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZCk6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVy
OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0b3BVcGRh
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5o
OiBBZGRlZC4KKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXIpOgorCiAyMDEyLTA3LTI1ICBT
ZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gSW1wbGVtZW50IHRoZSBpbnNwZWN0b3IgZm9yIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggMTkzOWI2My4uYjFhOTAxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhNjkyMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIu
Y3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92aWRlci5oIgorCisjaWYgRU5BQkxFKE5F
VFdPUktfSU5GTykKKworI2luY2x1ZGUgIldLTmV0d29ya0luZm9NYW5hZ2VyLmgiCisjaW5jbHVk
ZSA8Tm90SW1wbGVtZW50ZWQuaD4KKworc3RhdGljIGlubGluZSBOZXR3b3JrSW5mb1Byb3ZpZGVy
KiB0b05ldHdvcmtJbmZvUHJvdmlkZXIoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmV0d29ya0luZm9Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgc3RhcnRVcGRhdGluZ0NhbGxiYWNrKFdL
TmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRv
TmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJbmZvKS0+c3RhcnRVcGRhdGluZygpOworfQorCitz
dGF0aWMgdm9pZCBzdG9wVXBkYXRpbmdDYWxsYmFjayhXS05ldHdvcmtJbmZvTWFuYWdlclJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b05ldHdvcmtJbmZvUHJvdmlkZXIoY2xp
ZW50SW5mbyktPnN0b3BVcGRhdGluZygpOworfQorCitzdGF0aWMgZG91YmxlIGdldEJhbmR3aWR0
aENhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHJldHVybiB0b05ldHdvcmtJbmZvUHJvdmlkZXIoY2xpZW50SW5mbyktPmJhbmR3
aWR0aCgpOworfQorCitzdGF0aWMgYm9vbCBpc01ldGVyZWRDYWxsYmFjayhXS05ldHdvcmtJbmZv
TWFuYWdlclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gdG9OZXR3
b3JrSW5mb1Byb3ZpZGVyKGNsaWVudEluZm8pLT5tZXRlcmVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8
TmV0d29ya0luZm9Qcm92aWRlcj4gTmV0d29ya0luZm9Qcm92aWRlcjo6Y3JlYXRlKFdLTmV0d29y
a0luZm9NYW5hZ2VyUmVmIHdrTWFuYWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5l
dHdvcmtJbmZvUHJvdmlkZXIod2tNYW5hZ2VyKSk7Cit9CisKK05ldHdvcmtJbmZvUHJvdmlkZXI6
Ok5ldHdvcmtJbmZvUHJvdmlkZXIoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgd2tNYW5hZ2VyKQor
ICAgIDogbV93a05ldHdvcmtJbmZvTWFuYWdlcih3a01hbmFnZXIpCit7CisgICAgQVNTRVJUKHdr
TWFuYWdlcik7CisKKyAgICBXS05ldHdvcmtJbmZvUHJvdmlkZXIgd2tOZXR3b3JrSW5mb1Byb3Zp
ZGVyID0geworICAgICAgICBrV0tOZXR3b3JrSW5mb1Byb3ZpZGVyQ3VycmVudFZlcnNpb24sCisg
ICAgICAgIHRoaXMsIC8vIGNsaWVudEluZm8KKyAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNr
LAorICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgZ2V0QmFuZHdpZHRoQ2Fs
bGJhY2ssCisgICAgICAgIGlzTWV0ZXJlZENhbGxiYWNrCisgICAgfTsKKyAgICBXS05ldHdvcmtJ
bmZvTWFuYWdlclNldFByb3ZpZGVyKG1fd2tOZXR3b3JrSW5mb01hbmFnZXIuZ2V0KCksICZ3a05l
dHdvcmtJbmZvUHJvdmlkZXIpOworfQorCitOZXR3b3JrSW5mb1Byb3ZpZGVyOjp+TmV0d29ya0lu
Zm9Qcm92aWRlcigpCit7Cit9CisKK2RvdWJsZSBOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lk
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3ZpZGVyLmJhbmR3aWR0aCgpOworfQorCiti
b29sIE5ldHdvcmtJbmZvUHJvdmlkZXI6Om1ldGVyZWQoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTmV0d29ya0luZm9Qcm92
aWRlcjo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV9wcm92aWRlci5zdGFydFVwZGF0aW5nKCk7
Cit9CisKK3ZvaWQgTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBt
X3Byb3ZpZGVyLnN0b3BVcGRhdGluZygpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
SU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdv
cmtJbmZvUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWY4
NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
TmV0d29ya0luZm9Qcm92aWRlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTmV0d29ya0luZm9Qcm92aWRlcl9oCisjZGVmaW5lIE5ldHdvcmtJbmZvUHJv
dmlkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgPE5ldHdvcmtJ
bmZvQ2xpZW50Lmg+CisjaW5jbHVkZSA8TmV0d29ya0luZm9Qcm92aWRlckVmbC5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK2NsYXNzIE5ldHdvcmtJbmZvUHJvdmlkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrSW5mb1Byb3ZpZGVyPiwgcHVibGljIFdlYkNvcmU6
Ok5ldHdvcmtJbmZvQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXR3b3JrSW5mb1By
b3ZpZGVyKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0d29ya0luZm9Qcm92aWRlcj4gY3Jl
YXRlKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmKTsKKworICAgIC8vIE5ldHdvcmtJbmZvQ2xpZW50
IGludGVyZmFjZS4KKyAgICB2aXJ0dWFsIGRvdWJsZSBiYW5kd2lkdGgoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgbWV0ZXJlZCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKK3ByaXZhdGU6Cisg
ICAgTmV0d29ya0luZm9Qcm92aWRlcihXS05ldHdvcmtJbmZvTWFuYWdlclJlZik7CisKKyAgICBX
S1JldGFpblB0cjxXS05ldHdvcmtJbmZvTWFuYWdlclJlZj4gbV93a05ldHdvcmtJbmZvTWFuYWdl
cjsKKyAgICBXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsIG1fcHJvdmlkZXI7Cit9Owor
CisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIE5ldHdvcmtJbmZv
UHJvdmlkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154666</attachid>
            <date>2012-07-26 09:22:07 -0700</date>
            <delta_ts>2012-07-26 10:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>92343_wk2_networkinfo_provider.patch</filename>
            <type>text/plain</type>
            <size>22114</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTVmMzdjLi5jNmMyYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9u
IHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIgY29kZSBmcm9tIFdlYktpdDEKKyAg
ICAgICAgdG8gV2ViQ29yZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBXZWJLaXQyLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZWZsL05ldHdvcmtJbmZvUHJv
dmlkZXJFZmwuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsOjpzdG9wVXBkYXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6YmFuZHdpZHRo
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRlckVmbC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlckVmbCk6
CisKIDIwMTItMDctMjYgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29t
PgogCiAgICAgICAgIFtXZWJHTF0gQU5HTEVXZWJLaXRCcmlkZ2Ugc2hvdWxkIHN1cHBvcnQgRVNT
TCBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2QwMDcwOS4uYWU2MDI0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQyLDYgKzQyLDcgQEAgTElTVChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNw
cAogICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgcGxhdGZvcm0vZWZsL01JTUVUeXBl
UmVnaXN0cnlFZmwuY3BwCisgIHBsYXRmb3JtL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmNw
cAogICBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVu
dEVmbC5jcHAKQEAgLTMxOCw3ICszMTksNyBAQCBJRiAoRU5BQkxFX1dFQl9BVURJTykKICAgQURE
X0RFRklOSVRJT05TKC1EVU5JTlNUQUxMRURfQVVESU9fUkVTT1VSQ0VTX0RJUj0iJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzIikKIEVORElGICgpCiAKLUlGIChFTkFCTEVf
R0FNRVBBRCkKK0lGIChFTkFCTEVfR0FNRVBBRCBPUiBFTkFCTEVfTkVUV09SS19JTkZPKQogICBM
SVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0VFWkVfSU5DTFVE
RV9ESVJTfQogICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0
d29ya0luZm9Qcm92aWRlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0
d29ya0luZm9Qcm92aWRlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMDYxODVlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9OZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrSW5mb1By
b3ZpZGVyRWZsLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSA8RWV6
ZS5oPgorI2luY2x1ZGUgPEVlemVfTmV0Lmg+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBj
b25zdCBjaGFyIGV0aGVybmV0SW50ZXJmYWNlW10gPSAiZXRoMCI7CisKK05ldHdvcmtJbmZvUHJv
dmlkZXJFZmw6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwoKQoreworfQorCit2b2lkIE5ldHdvcmtJ
bmZvUHJvdmlkZXJFZmw6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIGlmICghZWV6ZV9pbml0KCkp
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbCB0byBzdGFydCBuZXR3b3JrIGluZm9ybWF0
aW9uIGNsaWVudC5cbiIpOworfQorCit2b2lkIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6OnN0b3BV
cGRhdGluZygpCit7CisgICAgZWV6ZV9zaHV0ZG93bigpOworfQorCitkb3VibGUgTmV0d29ya0lu
Zm9Qcm92aWRlckVmbDo6YmFuZHdpZHRoKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRSA6IFRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGNvbnNpZGVyIGNlbGx1bGFyIG5ldHdvcmsgYXMgd2VsbC4gRm9yIGV4
YW1wbGUsIDJHLCAzRyBhbmQgNEcuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTg1MSBmb3IgZGV0YWlsLgorICAgIEVlemVfTmV0KiBldGhOZXQg
PSBlZXplX25ldF9uZXcoZXRoZXJuZXRJbnRlcmZhY2UpOworICAgIGlmICghZXRoTmV0KQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGVlemVfbmV0X3NjYW4oZXRoTmV0KTsKKworICAgIC8vIEZJ
WE1FIDogVGhlIGVlemUgbGlicmFyeSBkb2Vzbid0IHN1cHBvcnQgRUVaRV9ORVRfQUREUl9UWVBF
X0lQIHR5cGUgeWV0LiBTbywgRUVaRV9ORVRfQUREUl9UWVBFX0JST0FEQ0FTVAorICAgIC8vIGlz
IHVzZWQgZm9yIG5vdy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5ODUyIGZvciBkZXRhaWwuCisgICAgY29uc3QgY2hhciogYWRkcmVzcyA9IGVl
emVfbmV0X2FkZHJfZ2V0KGV0aE5ldCwgRUVaRV9ORVRfQUREUl9UWVBFX0JST0FEQ0FTVCk7Cisg
ICAgaWYgKCFhZGRyZXNzKQorICAgICAgICByZXR1cm4gMDsgLy8gSWYgbmV0d29yayBpcyBvZmZs
aW5lLCByZXR1cm4gMC4KKworICAgIGRvdWJsZSBiYW5kd2lkdGg7CisgICAgY29uc3QgY2hhciog
YXR0cmlidXRlID0gZWV6ZV9uZXRfYXR0cmlidXRlX2dldChldGhOZXQsICJzcGVlZCIpOworICAg
IGlmIChhdHRyaWJ1dGUpIHsKKyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgYmFuZHdpZHRoID0g
U3RyaW5nOjpmcm9tVVRGOChhdHRyaWJ1dGUpLnRvVUludFN0cmljdCgmb2spOworICAgIH0gZWxz
ZQorICAgICAgICBiYW5kd2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7IC8vIElmIGJhbmR3aWR0aCBpcyB1bmtub3duLCByZXR1cm4gaW5maW5pdHkgdmFsdWUu
CisKKyAgICBlZXplX25ldF9mcmVlKGV0aE5ldCk7CisKKyAgICByZXR1cm4gYmFuZHdpZHRoIC8g
ODsgLy8gTUIvcworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L05ldHdvcmtJbmZvUHJvdmlkZXJFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9O
ZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWMzZjhjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9OZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmxfaAorI2RlZmluZSBOZXR3
b3JrSW5mb1Byb3ZpZGVyRWZsX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlckVmbCB7CitwdWJsaWM6
CisgICAgTmV0d29ya0luZm9Qcm92aWRlckVmbCgpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5n
KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworICAgIGRvdWJsZSBiYW5kd2lkdGgoKSBj
b25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IGQyNWZiODEuLjJmYTk1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAt
Miw2ICsyLDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lU
X0RJUn0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L2ludGVudHMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbmV0d29ya2luZm8iCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dlbmVyaWMiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDYxYjc1OTUuLjg2YzdkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9uIHByb3Zp
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktp
dCBFRkwgbm90IGxvbmdlciBuZWVkcyB0byBsaW5rIGFnYWluc3QgRUVaRQorICAgICAgICBsaWJy
YXJ5IHNpbmNlIHRoZSBOZXR3b3JrIEluZm9ybWF0aW9uIHByb3ZpZGVyCisgICAgICAgIHdhcyBt
b3ZlZCB0byBXZWJDb3JlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDctMjYgIFpvbHRhbiBOeXVsICA8em9sdGFuLm55
dWxAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEVGTCBwb3J0IHNob3VsZCB1c2UgWERHIHBh
dGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiMGIwZjA3Li42MTQ5MmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTcwLDE5ICs3MCw2IEBAIElGIChXVEZfVVNFX1BBTkdPKQog
ICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05FVFdPUktfSU5GTykKLSAgTElTVChBUFBFTkQg
V2ViS2l0X0xJTktfRkxBR1MKLSAgICAke0VFWkVfTERGTEFHU30KLSAgKQotICBMSVNUKEFQUEVO
RCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwotICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L25ldHdvcmtpbmZvIgotICAgICAke0VFWkVfSU5DTFVERV9ESVJTfQotICApCi0gIExJU1QoQVBQ
RU5EIFdlYktpdF9MSUJSQVJJRVMKLSAgICAke0VFWkVfTElCUkFSSUVTfQotICApCi1FTkRJRiAo
KQotCiBJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCiAgIExJU1QoQVBQRU5EIFdlYktpdF9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbm90aWZpY2F0aW9u
cyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwppbmRleCAzOTY1NjcyLi5hOTRjZjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3
b3JrIEluZm9ybWF0aW9uIHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgTmV0d29ya0luZm9DbGllbnRFZmwgdXNlIE5ldHdvcmtJbmZv
UHJvdmlkZXJFZmwKKyAgICAgICAgZnJvbSBXZWJDb3JlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRp
b24gd2l0aCBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9D
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnRFZmw6OnN0
b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVmbDo6YmFu
ZHdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50RWZsOjptZXRlcmVk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtJ
bmZvQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5ldHdvcmtJbmZv
Q2xpZW50RWZsKToKKwogMjAxMi0wNy0yNiAgWm9sdGFuIE55dWwgIDx6b2x0YW4ubnl1bEBpbnRl
bC5jb20+CiAKICAgICAgICAgW0VGTF0gRUZMIHBvcnQgc2hvdWxkIHVzZSBYREcgcGF0aHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xp
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZv
Q2xpZW50RWZsLmNwcAppbmRleCA2N2U5YzE2Li43YTdjMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuY3Bw
CkBAIC0yOSwyMiArMjksMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrSW5mb0NsaWVudEVmbC5oIgog
CiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKLSNpbmNsdWRlICJOZXR3b3JrSW5mby5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgPEVlemUuaD4KLSNpbmNsdWRlIDxFZXplX05ldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBldGhlcm5ldEludGVyZmFjZSA9ICJldGgwIjsKLQogTmV0d29ya0luZm9DbGllbnRFZmw6
Ok5ldHdvcmtJbmZvQ2xpZW50RWZsKCkKLSAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwgbV9t
ZXRlcmVkKGZhbHNlKQogewogfQogCkBAIC01NCw1MiArNDQsMjYgQEAgTmV0d29ya0luZm9DbGll
bnRFZmw6On5OZXR3b3JrSW5mb0NsaWVudEVmbCgpCiAKIHZvaWQgTmV0d29ya0luZm9DbGllbnRF
Zmw6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIGlmICghZWV6ZV9pbml0KCkpIHsKLSAgICAgICAg
RVJSKCJGYWlsIHRvIHN0YXJ0IG5ldHdvcmsgaW5mb3JtYXRpb24gY2xpZW50LiIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIG1fcHJvdmlkZXIuc3RhcnRVcGRhdGluZygpOwogfQogCiB2
b2lkIE5ldHdvcmtJbmZvQ2xpZW50RWZsOjpzdG9wVXBkYXRpbmcoKQogewotICAgIGVlemVfc2h1
dGRvd24oKTsKKyAgICBtX3Byb3ZpZGVyLnN0b3BVcGRhdGluZygpOwogfQogCiBkb3VibGUgTmV0
d29ya0luZm9DbGllbnRFZmw6OmJhbmR3aWR0aCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUgOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBjb25zaWRlciBjZWxsdWxhciBuZXR3b3JrIGFzIHdlbGwuIEZv
ciBleGFtcGxlLCAyRywgM0cgYW5kIDRHLgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTEgZm9yIGRldGFpbC4KLSAgICBFZXplX05ldCogZXRo
TmV0ID0gZWV6ZV9uZXRfbmV3KGV0aGVybmV0SW50ZXJmYWNlKTsKLSAgICBpZiAoIWV0aE5ldCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBlZXplX25ldF9zY2FuKGV0aE5ldCk7Ci0KLSAgICAv
LyBGSVhNRSA6IFRoZSBlZXplIGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0IEVFWkVfTkVUX0FERFJf
VFlQRV9JUCB0eXBlIHlldC4gU28sIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QKLSAgICAv
LyBpcyB1c2VkIGZvciBub3cuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04OTg1MiBmb3IgZGV0YWlsLgotICAgIGNvbnN0IGNoYXIqIGFkZHJlc3Mg
PSBlZXplX25ldF9hZGRyX2dldChldGhOZXQsIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1Qp
OwotICAgIGlmICghYWRkcmVzcykKLSAgICAgICAgcmV0dXJuIDA7IC8vIElmIG5ldHdvcmsgaXMg
b2ZmbGluZSwgcmV0dXJuIDAuCi0KLSAgICBkb3VibGUgYmFuZHdpZHRoOwotICAgIGNvbnN0IGNo
YXIqIGF0dHJpYnV0ZSA9IGVlemVfbmV0X2F0dHJpYnV0ZV9nZXQoZXRoTmV0LCAic3BlZWQiKTsK
LSAgICBpZiAoYXR0cmlidXRlKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGJhbmR3aWR0
aCA9IFN0cmluZzo6ZnJvbVVURjgoYXR0cmlidXRlKS50b1VJbnRTdHJpY3QoJm9rKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgYmFuZHdpZHRoID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpOyAvLyBJZiBiYW5kd2lkdGggaXMgdW5rbm93biwgcmV0dXJuIGluZmluaXR5IHZh
bHVlLgotCi0gICAgZWV6ZV9uZXRfZnJlZShldGhOZXQpOwotCi0gICAgcmV0dXJuIGJhbmR3aWR0
aCAvIDg7IC8vIE1CL3MKKyAgICByZXR1cm4gbV9wcm92aWRlci5iYW5kd2lkdGgoKTsKIH0KIAog
Ym9vbCBOZXR3b3JrSW5mb0NsaWVudEVmbDo6bWV0ZXJlZCgpIGNvbnN0CiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbV9tZXRlcmVkOwotfQogCisgICAgcmV0dXJuIGZhbHNl
OwogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmgKaW5k
ZXggMjBlOGFiNy4uNjkwODczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5oCkBAIC0zMSwxMCArMzEsMTEgQEAK
IAogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAKLSNpbmNsdWRlICJOZXR3b3JrSW5mb0NsaWVu
dC5oIgotI2luY2x1ZGUgIk5ldHdvcmtJbmZvQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPE5ldHdv
cmtJbmZvQ2xpZW50Lmg+CisjaW5jbHVkZSA8TmV0d29ya0luZm9Qcm92aWRlckVmbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIE5ldHdvcmtJbmZvQ2xpZW50RWZsIDogcHVibGlj
IFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50IHsKIHB1YmxpYzoKICAgICBOZXR3b3JrSW5mb0Ns
aWVudEVmbCgpOwpAQCAtNDcsMTEgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
bWV0ZXJlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtJbmZvQ29udHJvbGxlciog
bV9jb250cm9sbGVyOwotCi0gICAgYm9vbCBtX21ldGVyZWQ7CisgICAgV2ViQ29yZTo6TmV0d29y
a0luZm9Qcm92aWRlckVmbCBtX3Byb3ZpZGVyOwogfTsKLX0KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKICNlbmRpZiAvLyBOZXR3b3JrSW5mb0NsaWVudEVmbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CmluZGV4IGU2ZDNiZWUuLjhiNWU3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBA
IC00NSw2ICs0NSw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJDT1JFX0RJUn0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvYmF0dGVyeSIKICAgICAi
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbnRlbnRzIgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL25ldHdvcmtpbmZvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3ZpYnJhdGlvbiIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eSIKICAgICAiJHtXRUJDT1JFX0RJUn0v
YmluZGluZ3MvanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzYwZTU1NS4uODY2MTIwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDM0IEBACiAyMDEyLTA3LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgTmV0d29y
ayBJbmZvcm1hdGlvbiBwcm92aWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTIzNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgTmV0d29yayBJbmZvcm1hdGlvbiBwcm92aWRlciBmb3IgV2ViS2l0
MiBFRkwKKyAgICAgICAgYnkgdXNpbmcgTmV0d29ya0luZm9Qcm92aWRlckVmbCBjbGFzcyBmcm9t
CisgICAgICAgIFdlYkNvcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3Jr
SW5mb1Byb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgICh0b05ldHdvcmtJbmZvUHJvdmlkZXIp
OgorICAgICAgICAoc3RhcnRVcGRhdGluZ0NhbGxiYWNrKToKKyAgICAgICAgKHN0b3BVcGRhdGlu
Z0NhbGxiYWNrKToKKyAgICAgICAgKGdldEJhbmR3aWR0aENhbGxiYWNrKToKKyAgICAgICAgKGlz
TWV0ZXJlZENhbGxiYWNrKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OmNyZWF0ZSk6
CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjpOZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAg
ICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6On5OZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAg
ICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OmJhbmR3aWR0aCk6CisgICAgICAgIChOZXR3b3JrSW5m
b1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0
VXBkYXRpbmcpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyLmg6IEFkZGVk
LgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcik6CisKKzIwMTItMDctMjYgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtX
SzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29udGV4dAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwMDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCA5ZGJkYmUyLi5iNGZhMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
MzgsNiArMzgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5m
b1Byb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41NGE2OTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQor
CisjaW5jbHVkZSAiV0tOZXR3b3JrSW5mb01hbmFnZXIuaCIKKyNpbmNsdWRlIDxOb3RJbXBsZW1l
bnRlZC5oPgorCitzdGF0aWMgaW5saW5lIE5ldHdvcmtJbmZvUHJvdmlkZXIqIHRvTmV0d29ya0lu
Zm9Qcm92aWRlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOZXR3b3JrSW5mb1Byb3ZpZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OworfQorCitzdGF0aWMgdm9pZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tOZXR3b3JrSW5mb01h
bmFnZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9OZXR3b3JrSW5mb1By
b3ZpZGVyKGNsaWVudEluZm8pLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3N0YXRpYyB2b2lkIHN0
b3BVcGRhdGluZ0NhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIHRvTmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJbmZvKS0+c3Rv
cFVwZGF0aW5nKCk7Cit9CisKK3N0YXRpYyBkb3VibGUgZ2V0QmFuZHdpZHRoQ2FsbGJhY2soV0tO
ZXR3b3JrSW5mb01hbmFnZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0
dXJuIHRvTmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJbmZvKS0+YmFuZHdpZHRoKCk7Cit9CisK
K3N0YXRpYyBib29sIGlzTWV0ZXJlZENhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiB0b05ldHdvcmtJbmZvUHJvdmlk
ZXIoY2xpZW50SW5mbyktPm1ldGVyZWQoKTsKK30KKworUGFzc1JlZlB0cjxOZXR3b3JrSW5mb1By
b3ZpZGVyPiBOZXR3b3JrSW5mb1Byb3ZpZGVyOjpjcmVhdGUoV0tOZXR3b3JrSW5mb01hbmFnZXJS
ZWYgd2tNYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya0luZm9Qcm92
aWRlcih3a01hbmFnZXIpKTsKK30KKworTmV0d29ya0luZm9Qcm92aWRlcjo6TmV0d29ya0luZm9Q
cm92aWRlcihXS05ldHdvcmtJbmZvTWFuYWdlclJlZiB3a01hbmFnZXIpCisgICAgOiBtX3drTmV0
d29ya0luZm9NYW5hZ2VyKHdrTWFuYWdlcikKK3sKKyAgICBBU1NFUlQod2tNYW5hZ2VyKTsKKwor
ICAgIFdLTmV0d29ya0luZm9Qcm92aWRlciB3a05ldHdvcmtJbmZvUHJvdmlkZXIgPSB7CisgICAg
ICAgIGtXS05ldHdvcmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbiwKKyAgICAgICAgdGhpcywg
Ly8gY2xpZW50SW5mbworICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgIHN0
b3BVcGRhdGluZ0NhbGxiYWNrLAorICAgICAgICBnZXRCYW5kd2lkdGhDYWxsYmFjaywKKyAgICAg
ICAgaXNNZXRlcmVkQ2FsbGJhY2sKKyAgICB9OworICAgIFdLTmV0d29ya0luZm9NYW5hZ2VyU2V0
UHJvdmlkZXIobV93a05ldHdvcmtJbmZvTWFuYWdlci5nZXQoKSwgJndrTmV0d29ya0luZm9Qcm92
aWRlcik7Cit9CisKK05ldHdvcmtJbmZvUHJvdmlkZXI6On5OZXR3b3JrSW5mb1Byb3ZpZGVyKCkK
K3sKK30KKworZG91YmxlIE5ldHdvcmtJbmZvUHJvdmlkZXI6OmJhbmR3aWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJvdmlkZXIuYmFuZHdpZHRoKCk7Cit9CisKK2Jvb2wgTmV0d29ya0lu
Zm9Qcm92aWRlcjo6bWV0ZXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdGFydFVw
ZGF0aW5nKCkKK3sKKyAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fcHJvdmlkZXIuc3Rv
cFVwZGF0aW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5Zjg2ZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9OZXR3b3JrSW5mb1By
b3ZpZGVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBO
ZXR3b3JrSW5mb1Byb3ZpZGVyX2gKKyNkZWZpbmUgTmV0d29ya0luZm9Qcm92aWRlcl9oCisKKyNp
ZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSA8TmV0d29ya0luZm9DbGllbnQuaD4K
KyNpbmNsdWRlIDxOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPE5ldHdvcmtJbmZvUHJvdmlkZXI+LCBwdWJsaWMgV2ViQ29yZTo6TmV0d29ya0luZm9D
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk5ldHdvcmtJbmZvUHJvdmlkZXIoKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxOZXR3b3JrSW5mb1Byb3ZpZGVyPiBjcmVhdGUoV0tOZXR3b3Jr
SW5mb01hbmFnZXJSZWYpOworCisgICAgLy8gTmV0d29ya0luZm9DbGllbnQgaW50ZXJmYWNlLgor
ICAgIHZpcnR1YWwgZG91YmxlIGJhbmR3aWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBt
ZXRlcmVkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworcHJpdmF0ZToKKyAgICBOZXR3b3JrSW5m
b1Byb3ZpZGVyKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmKTsKKworICAgIFdLUmV0YWluUHRyPFdL
TmV0d29ya0luZm9NYW5hZ2VyUmVmPiBtX3drTmV0d29ya0luZm9NYW5hZ2VyOworICAgIFdlYkNv
cmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgbV9wcm92aWRlcjsKK307CisKKyNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gTmV0d29ya0luZm9Qcm92aWRlcl9oCg==
</data>
<flag name="review"
          id="163957"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154676</attachid>
            <date>2012-07-26 10:01:58 -0700</date>
            <delta_ts>2012-07-26 10:47:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>92343_wk2_networkinfo_provider.patch</filename>
            <type>text/plain</type>
            <size>22250</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZTVmMzdjLi4zMGE3NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIEluZm9ybWF0aW9u
IHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIE1vdmVkIE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIgY29kZSBmcm9t
IFdlYktpdDEKKyAgICAgICAgdG8gV2ViQ29yZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0
aCBXZWJLaXQyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZWZsL05l
dHdvcmtJbmZvUHJvdmlkZXJFZmwuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6Ok5ldHdvcmtJbmZv
UHJvdmlkZXJFZmwpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVmbDo6
c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZs
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9Qcm92aWRlckVm
bDo6YmFuZHdpZHRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ckVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmV0d29ya0luZm9Q
cm92aWRlckVmbCk6CisKIDIwMTItMDctMjYgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJm
aWVsZEByaW0uY29tPgogCiAgICAgICAgIFtXZWJHTF0gQU5HTEVXZWJLaXRCcmlkZ2Ugc2hvdWxk
IHN1cHBvcnQgRVNTTCBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2Qw
MDcwOS4uYWU2MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQyLDYgKzQyLDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRT
dHJpbmdzRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgcGxhdGZvcm0v
ZWZsL01JTUVUeXBlUmVnaXN0cnlFZmwuY3BwCisgIHBsYXRmb3JtL2VmbC9OZXR3b3JrSW5mb1By
b3ZpZGVyRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKICAgcGxhdGZv
cm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1BsYXRm
b3JtTW91c2VFdmVudEVmbC5jcHAKQEAgLTMxOCw3ICszMTksNyBAQCBJRiAoRU5BQkxFX1dFQl9B
VURJTykKICAgQUREX0RFRklOSVRJT05TKC1EVU5JTlNUQUxMRURfQVVESU9fUkVTT1VSQ0VTX0RJ
Uj0iJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzIikKIEVORElGICgpCiAK
LUlGIChFTkFCTEVfR0FNRVBBRCkKK0lGIChFTkFCTEVfR0FNRVBBRCBPUiBFTkFCTEVfTkVUV09S
S19JTkZPKQogICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAk
e0VFWkVfSU5DTFVERV9ESVJTfQogICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92aWRlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWNjNTNlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmNwcApAQCAtMCwwICsxLDg3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrSW5mb1Byb3ZpZGVyRWZsLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisj
aW5jbHVkZSA8RWV6ZS5oPgorI2luY2x1ZGUgPEVlemVfTmV0Lmg+CisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBjb25zdCBjaGFyIGV0aGVybmV0SW50ZXJmYWNlW10gPSAiZXRoMCI7CisKK05l
dHdvcmtJbmZvUHJvdmlkZXJFZmw6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwoKQoreworfQorCit2
b2lkIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmw6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIGlmICgh
ZWV6ZV9pbml0KCkpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbCB0byBzdGFydCBuZXR3
b3JrIGluZm9ybWF0aW9uIGNsaWVudC5cbiIpOworfQorCit2b2lkIE5ldHdvcmtJbmZvUHJvdmlk
ZXJFZmw6OnN0b3BVcGRhdGluZygpCit7CisgICAgZWV6ZV9zaHV0ZG93bigpOworfQorCitkb3Vi
bGUgTmV0d29ya0luZm9Qcm92aWRlckVmbDo6YmFuZHdpZHRoKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGNvbnNpZGVyIGNlbGx1bGFyIG5ldHdvcmsgYXMg
d2VsbC4gRm9yIGV4YW1wbGUsIDJHLCAzRyBhbmQgNEcuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg1MSBmb3IgZGV0YWlsLgorICAgIEVlemVf
TmV0KiBldGhOZXQgPSBlZXplX25ldF9uZXcoZXRoZXJuZXRJbnRlcmZhY2UpOworICAgIGlmICgh
ZXRoTmV0KQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpOyAvLyBTcGVjIHNheXMgd2Ugc2hvdWxkIHJldHVybiBpbmZpbml0eSBpZiB1bmtub3du
CisKKyAgICBlZXplX25ldF9zY2FuKGV0aE5ldCk7CisKKyAgICAvLyBGSVhNRSA6IFRoZSBlZXpl
IGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0IEVFWkVfTkVUX0FERFJfVFlQRV9JUCB0eXBlIHlldC4g
U28sIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QKKyAgICAvLyBpcyB1c2VkIGZvciBub3cu
CisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg1
MiBmb3IgZGV0YWlsLgorICAgIGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBlZXplX25ldF9hZGRyX2dl
dChldGhOZXQsIEVFWkVfTkVUX0FERFJfVFlQRV9CUk9BRENBU1QpOworICAgIGlmICghYWRkcmVz
cykKKyAgICAgICAgcmV0dXJuIDA7IC8vIElmIG5ldHdvcmsgaXMgb2ZmbGluZSwgcmV0dXJuIDAu
CisKKyAgICBkb3VibGUgYmFuZHdpZHRoOworICAgIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZSA9IGVl
emVfbmV0X2F0dHJpYnV0ZV9nZXQoZXRoTmV0LCAic3BlZWQiKTsKKyAgICBpZiAoYXR0cmlidXRl
KSB7CisgICAgICAgIGJvb2wgb2s7CisgICAgICAgIGJhbmR3aWR0aCA9IFN0cmluZzo6ZnJvbVVU
RjgoYXR0cmlidXRlKS50b1VJbnRTdHJpY3QoJm9rKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFu
ZHdpZHRoID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOyAvLyBJZiBi
YW5kd2lkdGggaXMgdW5rbm93biwgcmV0dXJuIGluZmluaXR5IHZhbHVlLgorCisgICAgZWV6ZV9u
ZXRfZnJlZShldGhOZXQpOworCisgICAgcmV0dXJuIGJhbmR3aWR0aCAvIDg7IC8vIE1CL3MKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5G
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9OZXR3b3JrSW5mb1By
b3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Qcm92
aWRlckVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjM2Y4YzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTmV0d29ya0luZm9Q
cm92aWRlckVmbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsX2gKKyNkZWZpbmUgTmV0d29ya0luZm9Qcm92aWRl
ckVmbF9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgeworcHVibGljOgorICAgIE5ldHdvcmtJ
bmZvUHJvdmlkZXJFZmwoKTsKKworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQg
c3RvcFVwZGF0aW5nKCk7CisKKyAgICBkb3VibGUgYmFuZHdpZHRoKCkgY29uc3Q7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQor
CisjZW5kaWYgLy8gTmV0d29ya0luZm9Qcm92aWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRl
eCBkMjVmYjgxLi4yZmE5NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTIsNiArMiw3IEBAIFNF
VChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9IgogICAgICIk
e1dFQkNPUkVfRElSfSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbnRlbnRzIgorICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25ldHdvcmtpbmZvIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgogICAgICIke1dFQkNPUkVfRElSfS9hY2Nlc3NpYmlsaXR5
IgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9nZW5lcmljIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MWI3
NTk1Li44MzE1OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTI2ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBJbXBsZW1lbnQgTmV0d29yayBJbmZvcm1hdGlvbiBwcm92aWRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBXZWJLaXQg
RUZMIG5vdCBsb25nZXIgbmVlZHMgdG8gbGluayBhZ2FpbnN0IEVFWkUKKyAgICAgICAgbGlicmFy
eSBzaW5jZSB0aGUgTmV0d29yayBJbmZvcm1hdGlvbiBwcm92aWRlcgorICAgICAgICB3YXMgbW92
ZWQgdG8gV2ViQ29yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBs
YXRmb3JtRWZsLmNtYWtlOgorCiAyMDEyLTA3LTI2ICBab2x0YW4gTnl1bCAgPHpvbHRhbi5ueXVs
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFRkwgcG9ydCBzaG91bGQgdXNlIFhERyBwYXRo
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYjBiMGYwNy4uNjE0OTJmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC03MCwxOSArNzAsNiBAQCBJRiAoV1RGX1VTRV9QQU5HTykKICAg
KQogRU5ESUYgKCkKIAotSUYgKEVOQUJMRV9ORVRXT1JLX0lORk8pCi0gIExJU1QoQVBQRU5EIFdl
YktpdF9MSU5LX0ZMQUdTCi0gICAgJHtFRVpFX0xERkxBR1N9Ci0gICkKLSAgTElTVChBUFBFTkQg
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9u
ZXR3b3JraW5mbyIKLSAgICAgJHtFRVpFX0lOQ0xVREVfRElSU30KLSAgKQotICBMSVNUKEFQUEVO
RCBXZWJLaXRfTElCUkFSSUVTCi0gICAgJHtFRVpFX0xJQlJBUklFU30KLSAgKQotRU5ESUYgKCkK
LQogSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggMzk2NTY3Mi4uMTE2NDlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDEyLTA3LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgTmV0d29y
ayBJbmZvcm1hdGlvbiBwcm92aWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTIzNDMKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KKworICAgICAgICBNYWtlIE5ldHdvcmtJbmZvQ2xpZW50RWZsIHVzZSBO
ZXR3b3JrSW5mb1Byb3ZpZGVyRWZsCisgICAgICAgIGZyb20gV2ViQ29yZSB0byBhdm9pZCBjb2Rl
IGR1cGxpY2F0aW9uIHdpdGggV2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05l
dHdvcmtJbmZvQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xp
ZW50RWZsOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xp
ZW50RWZsOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0luZm9DbGll
bnRFZmw6OmJhbmR3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudEVm
bDo6bWV0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9OZXR3b3JrSW5mb0NsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChO
ZXR3b3JrSW5mb0NsaWVudEVmbCk6CisKIDIwMTItMDctMjYgIFpvbHRhbiBOeXVsICA8em9sdGFu
Lm55dWxAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEVGTCBwb3J0IHNob3VsZCB1c2UgWERH
IHBhdGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3
b3JrSW5mb0NsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
ZXR3b3JrSW5mb0NsaWVudEVmbC5jcHAKaW5kZXggNjdlOWMxNi4uN2E3YzFjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xp
ZW50RWZsLmNwcApAQCAtMjksMjIgKzI5LDEyIEBACiAjaW5jbHVkZSAiTmV0d29ya0luZm9DbGll
bnRFZmwuaCIKIAogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCi0jaW5jbHVkZSAiTmV0d29ya0lu
Zm8uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCi0jaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKLSNpbmNsdWRlIDxFZXplLmg+Ci0jaW5jbHVkZSA8RWV6ZV9OZXQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3QgY2hhciogZXRoZXJuZXRJbnRlcmZhY2UgPSAiZXRoMCI7Ci0KIE5ldHdvcmtJbmZv
Q2xpZW50RWZsOjpOZXR3b3JrSW5mb0NsaWVudEVmbCgpCi0gICAgOiBtX2NvbnRyb2xsZXIoMCkK
LSAgICAsIG1fbWV0ZXJlZChmYWxzZSkKIHsKIH0KIApAQCAtNTQsNTIgKzQ0LDI2IEBAIE5ldHdv
cmtJbmZvQ2xpZW50RWZsOjp+TmV0d29ya0luZm9DbGllbnRFZmwoKQogCiB2b2lkIE5ldHdvcmtJ
bmZvQ2xpZW50RWZsOjpzdGFydFVwZGF0aW5nKCkKIHsKLSAgICBpZiAoIWVlemVfaW5pdCgpKSB7
Ci0gICAgICAgIEVSUigiRmFpbCB0byBzdGFydCBuZXR3b3JrIGluZm9ybWF0aW9uIGNsaWVudC4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmco
KTsKIH0KIAogdm9pZCBOZXR3b3JrSW5mb0NsaWVudEVmbDo6c3RvcFVwZGF0aW5nKCkKIHsKLSAg
ICBlZXplX3NodXRkb3duKCk7CisgICAgbV9wcm92aWRlci5zdG9wVXBkYXRpbmcoKTsKIH0KIAog
ZG91YmxlIE5ldHdvcmtJbmZvQ2xpZW50RWZsOjpiYW5kd2lkdGgoKSBjb25zdAogewotICAgIC8v
IEZJWE1FIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgY29uc2lkZXIgY2VsbHVsYXIgbmV0d29yayBh
cyB3ZWxsLiBGb3IgZXhhbXBsZSwgMkcsIDNHIGFuZCA0Ry4KLSAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODUxIGZvciBkZXRhaWwuCi0gICAgRWV6
ZV9OZXQqIGV0aE5ldCA9IGVlemVfbmV0X25ldyhldGhlcm5ldEludGVyZmFjZSk7Ci0gICAgaWYg
KCFldGhOZXQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZWV6ZV9uZXRfc2NhbihldGhOZXQp
OwotCi0gICAgLy8gRklYTUUgOiBUaGUgZWV6ZSBsaWJyYXJ5IGRvZXNuJ3Qgc3VwcG9ydCBFRVpF
X05FVF9BRERSX1RZUEVfSVAgdHlwZSB5ZXQuIFNvLCBFRVpFX05FVF9BRERSX1RZUEVfQlJPQURD
QVNUCi0gICAgLy8gaXMgdXNlZCBmb3Igbm93LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NTIgZm9yIGRldGFpbC4KLSAgICBjb25zdCBjaGFy
KiBhZGRyZXNzID0gZWV6ZV9uZXRfYWRkcl9nZXQoZXRoTmV0LCBFRVpFX05FVF9BRERSX1RZUEVf
QlJPQURDQVNUKTsKLSAgICBpZiAoIWFkZHJlc3MpCi0gICAgICAgIHJldHVybiAwOyAvLyBJZiBu
ZXR3b3JrIGlzIG9mZmxpbmUsIHJldHVybiAwLgotCi0gICAgZG91YmxlIGJhbmR3aWR0aDsKLSAg
ICBjb25zdCBjaGFyKiBhdHRyaWJ1dGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0KGV0aE5ldCwg
InNwZWVkIik7Ci0gICAgaWYgKGF0dHJpYnV0ZSkgewotICAgICAgICBib29sIG9rOwotICAgICAg
ICBiYW5kd2lkdGggPSBTdHJpbmc6OmZyb21VVEY4KGF0dHJpYnV0ZSkudG9VSW50U3RyaWN0KCZv
ayk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJhbmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKTsgLy8gSWYgYmFuZHdpZHRoIGlzIHVua25vd24sIHJldHVybiBp
bmZpbml0eSB2YWx1ZS4KLQotICAgIGVlemVfbmV0X2ZyZWUoZXRoTmV0KTsKLQotICAgIHJldHVy
biBiYW5kd2lkdGggLyA4OyAvLyBNQi9zCisgICAgcmV0dXJuIG1fcHJvdmlkZXIuYmFuZHdpZHRo
KCk7CiB9CiAKIGJvb2wgTmV0d29ya0luZm9DbGllbnRFZmw6Om1ldGVyZWQoKSBjb25zdAogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG1fbWV0ZXJlZDsKLX0KIAorICAgIHJl
dHVybiBmYWxzZTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVu
dEVmbC5oCmluZGV4IDIwZThhYjcuLjY5MDg3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTmV0d29ya0luZm9DbGllbnRFZmwuaApAQCAtMzEsMTAg
KzMxLDExIEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogCi0jaW5jbHVkZSAiTmV0d29y
a0luZm9DbGllbnQuaCIKLSNpbmNsdWRlICJOZXR3b3JrSW5mb0NvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlIDxOZXR3b3JrSW5mb0NsaWVudC5oPgorI2luY2x1ZGUgPE5ldHdvcmtJbmZvUHJvdmlkZXJF
ZmwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBOZXR3b3JrSW5mb0NsaWVudEVm
bCA6IHB1YmxpYyBXZWJDb3JlOjpOZXR3b3JrSW5mb0NsaWVudCB7CiBwdWJsaWM6CiAgICAgTmV0
d29ya0luZm9DbGllbnRFZmwoKTsKQEAgLTQ3LDExICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIG1ldGVyZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrSW5mb0Nv
bnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLQotICAgIGJvb2wgbV9tZXRlcmVkOworICAgIFdlYkNv
cmU6Ok5ldHdvcmtJbmZvUHJvdmlkZXJFZmwgbV9wcm92aWRlcjsKIH07Ci19CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCiAjZW5kaWYgLy8gTmV0d29ya0luZm9DbGllbnRFZmxf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBlNmQzYmVlLi44YjVlN2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dApAQCAtNDUsNiArNDUsNyBAQCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2JhdHRl
cnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW50ZW50cyIKKyAgICAiJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9uZXR3b3JraW5mbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92
aWJyYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL2pzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM2MGU1NTUuLjQ1YmZjYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwzNCBAQAogMjAxMi0wNy0yNiAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVt
ZW50IE5ldHdvcmsgSW5mb3JtYXRpb24gcHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQWRkIE5ldHdvcmsgSW5mb3JtYXRp
b24gcHJvdmlkZXIgZm9yIFdlYktpdDIgRUZMCisgICAgICAgIGJ5IHVzaW5nIE5ldHdvcmtJbmZv
UHJvdmlkZXJFZmwgY2xhc3MgZnJvbQorICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
dG9OZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFjayk6
CisgICAgICAgIChzdG9wVXBkYXRpbmdDYWxsYmFjayk6CisgICAgICAgIChnZXRCYW5kd2lkdGhD
YWxsYmFjayk6CisgICAgICAgIChpc01ldGVyZWRDYWxsYmFjayk6CisgICAgICAgIChOZXR3b3Jr
SW5mb1Byb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcjo6TmV0
d29ya0luZm9Qcm92aWRlcik6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjp+TmV0d29y
a0luZm9Qcm92aWRlcik6CisgICAgICAgIChOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgp
OgorICAgICAgICAoTmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZCk6CisgICAgICAgIChOZXR3
b3JrSW5mb1Byb3ZpZGVyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKE5ldHdvcmtJbmZvUHJv
dmlkZXI6OnN0b3BVcGRhdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29y
a0luZm9Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKE5ldHdvcmtJbmZvUHJvdmlkZXIpOgor
CisyMDEyLTA3LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bV0syXSBBZGQgdW5pdCB0ZXN0cyBmb3IgRXdrX0NvbnRleHQK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDA1CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggOWRiZGJlMi4uYjRmYTBhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTM4LDYgKzM4LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
CiAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhNjkyMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL05ldHdvcmtJbmZv
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92aWRlci5oIgorCisjaWYg
RU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIldLTmV0d29ya0luZm9NYW5hZ2VyLmgi
CisjaW5jbHVkZSA8Tm90SW1wbGVtZW50ZWQuaD4KKworc3RhdGljIGlubGluZSBOZXR3b3JrSW5m
b1Byb3ZpZGVyKiB0b05ldHdvcmtJbmZvUHJvdmlkZXIoY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmV0d29ya0luZm9Qcm92aWRlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgc3RhcnRVcGRhdGluZ0Nh
bGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIHRvTmV0d29ya0luZm9Qcm92aWRlcihjbGllbnRJbmZvKS0+c3RhcnRVcGRhdGluZygp
OworfQorCitzdGF0aWMgdm9pZCBzdG9wVXBkYXRpbmdDYWxsYmFjayhXS05ldHdvcmtJbmZvTWFu
YWdlclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b05ldHdvcmtJbmZvUHJv
dmlkZXIoY2xpZW50SW5mbyktPnN0b3BVcGRhdGluZygpOworfQorCitzdGF0aWMgZG91YmxlIGdl
dEJhbmR3aWR0aENhbGxiYWNrKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIHJldHVybiB0b05ldHdvcmtJbmZvUHJvdmlkZXIoY2xpZW50SW5m
byktPmJhbmR3aWR0aCgpOworfQorCitzdGF0aWMgYm9vbCBpc01ldGVyZWRDYWxsYmFjayhXS05l
dHdvcmtJbmZvTWFuYWdlclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gdG9OZXR3b3JrSW5mb1Byb3ZpZGVyKGNsaWVudEluZm8pLT5tZXRlcmVkKCk7Cit9CisKK1Bh
c3NSZWZQdHI8TmV0d29ya0luZm9Qcm92aWRlcj4gTmV0d29ya0luZm9Qcm92aWRlcjo6Y3JlYXRl
KFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIHdrTWFuYWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE5ldHdvcmtJbmZvUHJvdmlkZXIod2tNYW5hZ2VyKSk7Cit9CisKK05ldHdvcmtJbmZv
UHJvdmlkZXI6Ok5ldHdvcmtJbmZvUHJvdmlkZXIoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgd2tN
YW5hZ2VyKQorICAgIDogbV93a05ldHdvcmtJbmZvTWFuYWdlcih3a01hbmFnZXIpCit7CisgICAg
QVNTRVJUKHdrTWFuYWdlcik7CisKKyAgICBXS05ldHdvcmtJbmZvUHJvdmlkZXIgd2tOZXR3b3Jr
SW5mb1Byb3ZpZGVyID0geworICAgICAgICBrV0tOZXR3b3JrSW5mb1Byb3ZpZGVyQ3VycmVudFZl
cnNpb24sCisgICAgICAgIHRoaXMsIC8vIGNsaWVudEluZm8KKyAgICAgICAgc3RhcnRVcGRhdGlu
Z0NhbGxiYWNrLAorICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgZ2V0QmFu
ZHdpZHRoQ2FsbGJhY2ssCisgICAgICAgIGlzTWV0ZXJlZENhbGxiYWNrCisgICAgfTsKKyAgICBX
S05ldHdvcmtJbmZvTWFuYWdlclNldFByb3ZpZGVyKG1fd2tOZXR3b3JrSW5mb01hbmFnZXIuZ2V0
KCksICZ3a05ldHdvcmtJbmZvUHJvdmlkZXIpOworfQorCitOZXR3b3JrSW5mb1Byb3ZpZGVyOjp+
TmV0d29ya0luZm9Qcm92aWRlcigpCit7Cit9CisKK2RvdWJsZSBOZXR3b3JrSW5mb1Byb3ZpZGVy
OjpiYW5kd2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3ZpZGVyLmJhbmR3aWR0aCgp
OworfQorCitib29sIE5ldHdvcmtJbmZvUHJvdmlkZXI6Om1ldGVyZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTmV0d29y
a0luZm9Qcm92aWRlcjo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV9wcm92aWRlci5zdGFydFVw
ZGF0aW5nKCk7Cit9CisKK3ZvaWQgTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKCkK
K3sKKyAgICBtX3Byb3ZpZGVyLnN0b3BVcGRhdGluZygpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iOWY4NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya0luZm9Qcm92aWRlcl9oCisjZGVmaW5lIE5ldHdv
cmtJbmZvUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUg
PE5ldHdvcmtJbmZvQ2xpZW50Lmg+CisjaW5jbHVkZSA8TmV0d29ya0luZm9Qcm92aWRlckVmbC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK2NsYXNzIE5ldHdvcmtJbmZv
UHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrSW5mb1Byb3ZpZGVyPiwgcHVibGlj
IFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXR3
b3JrSW5mb1Byb3ZpZGVyKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0d29ya0luZm9Qcm92
aWRlcj4gY3JlYXRlKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmKTsKKworICAgIC8vIE5ldHdvcmtJ
bmZvQ2xpZW50IGludGVyZmFjZS4KKyAgICB2aXJ0dWFsIGRvdWJsZSBiYW5kd2lkdGgoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgbWV0ZXJlZCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKK3By
aXZhdGU6CisgICAgTmV0d29ya0luZm9Qcm92aWRlcihXS05ldHdvcmtJbmZvTWFuYWdlclJlZik7
CisKKyAgICBXS1JldGFpblB0cjxXS05ldHdvcmtJbmZvTWFuYWdlclJlZj4gbV93a05ldHdvcmtJ
bmZvTWFuYWdlcjsKKyAgICBXZWJDb3JlOjpOZXR3b3JrSW5mb1Byb3ZpZGVyRWZsIG1fcHJvdmlk
ZXI7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIE5l
dHdvcmtJbmZvUHJvdmlkZXJfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>