<?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>91193</bug_id>
          
          <creation_ts>2012-07-12 23:41:53 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add request manager client</short_desc>
          <delta_ts>2012-07-23 08:49:29 -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>WebKit2</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>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668644</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 23:41:53 -0700</bug_when>
    <thetext>We need to define a request manager client and attach it to the Ewk_Context. This will allow the client to define custom handlers for particular URL schemes (e.g. &quot;about:&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668918</commentid>
    <comment_count>1</comment_count>
      <attachid>152229</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 05:42:05 -0700</bug_when>
    <thetext>Created attachment 152229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668921</commentid>
    <comment_count>2</comment_count>
      <attachid>152231</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 05:47:50 -0700</bug_when>
    <thetext>Created attachment 152231
Patch

Remove useless header include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668925</commentid>
    <comment_count>3</comment_count>
      <attachid>152232</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 05:56:26 -0700</bug_when>
    <thetext>Created attachment 152232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668959</commentid>
    <comment_count>4</comment_count>
      <attachid>152244</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 06:34:49 -0700</bug_when>
    <thetext>Created attachment 152244
Patch

Make new ewk header installable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669243</commentid>
    <comment_count>5</comment_count>
      <attachid>152303</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 10:58:38 -0700</bug_when>
    <thetext>Created attachment 152303
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669940</commentid>
    <comment_count>6</comment_count>
      <attachid>152454</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-15 00:41:07 -0700</bug_when>
    <thetext>Created attachment 152454
Patch

Add destructor for Ewk_Url_Scheme_Request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670949</commentid>
    <comment_count>7</comment_count>
      <attachid>152454</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-16 20:50:03 -0700</bug_when>
    <thetext>Comment on attachment 152454
Patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        The client application can now register a URL scheme
&gt; +        via the Ewk_Context API and provide a callback handler
&gt; +        that will get called whenever a URL request with this
&gt; +        scheme is made.
&gt; +

Did you check how Qt is doing this? I think Zeno made a quite nice API for us, so maybe you should have a look (it is QML based though). I think it was slightly more powerful, but I might be wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671025</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-16 23:35:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 152454 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152454&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        The client application can now register a URL scheme
&gt; &gt; +        via the Ewk_Context API and provide a callback handler
&gt; &gt; +        that will get called whenever a URL request with this
&gt; &gt; +        scheme is made.
&gt; &gt; +
&gt; 
&gt; Did you check how Qt is doing this? I think Zeno made a quite nice API for us, so maybe you should have a look (it is QML based though). I think it was slightly more powerful, but I might be wrong

Yes, I checked the Qt implementation but I chose to follow the one from GTK port instead. The issue is that the Qt implementation is for QML and it does not closely match what we can/should do in EFL.

If you look for example at:
Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_applicationScheme.qml

Basically, you can define in QML delegates for URL schemes that will return data (and possible a contentType) when a URL request matches one of the schemes. I might be missing something but it does not look more powerful. You can achieve exactly the same thing with the EFL alternative. The major difference is that one is nicely integrated in QML while the other uses the &quot;old&quot; callback way.

If I missed something, please tell me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671028</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-16 23:41:23 -0700</bug_when>
    <thetext>Let&apos;s cc Zeno</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672287</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 05:49:15 -0700</bug_when>
    <thetext>Any update on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675589</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 03:45:24 -0700</bug_when>
    <thetext>Zeno might be on vacation? Is there any big problem preventing this patch from landing? I mean, we can always improve later if we find missing functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675599</commentid>
    <comment_count>12</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-07-23 04:02:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Zeno might be on vacation? Is there any big problem preventing this patch from landing? I mean, we can always improve later if we find missing functionality.

No, I&apos;m here. Sorry I didn&apos;t realize i was cc&apos;ed on this bug. :-)
Will read up on it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675604</commentid>
    <comment_count>13</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-07-23 04:15:35 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Let&apos;s cc Zeno

Implementation wise it looks similar to what we&apos;ve done for the Qt port.
Of course the API is different, and of course as mentioned before our &quot;callbacks&quot; are meant to be used with QML. Also in this patch i only really see API/port specific code. So I don&apos;t think there is much code duplication etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675657</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-23 06:02:14 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675661</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 06:09:05 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; r=me

Thanks, could you please set r+ flag then? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675704</commentid>
    <comment_count>16</comment_count>
      <attachid>152454</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-23 07:45:22 -0700</bug_when>
    <thetext>Comment on attachment 152454
Patch

sure but I had problems loading the site at work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675706</commentid>
    <comment_count>17</comment_count>
      <attachid>152454</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 07:46:59 -0700</bug_when>
    <thetext>Comment on attachment 152454
Patch

Rejecting attachment 152454 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ager_client.cpp
patching file Source/WebKit2/UIProcess/API/efl/ewk_context_request_manager_client_private.h
patching file Source/WebKit2/UIProcess/API/efl/ewk_url_scheme_request.cpp
patching file Source/WebKit2/UIProcess/API/efl/ewk_url_scheme_request.h
patching file Source/WebKit2/UIProcess/API/efl/ewk_url_scheme_request_private.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Ro...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13330042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675711</commentid>
    <comment_count>18</comment_count>
      <attachid>153798</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 08:01:50 -0700</bug_when>
    <thetext>Created attachment 153798
Patch for landing

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675735</commentid>
    <comment_count>19</comment_count>
      <attachid>153798</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 08:49:22 -0700</bug_when>
    <thetext>Comment on attachment 153798
Patch for landing

Clearing flags on attachment: 153798

Committed r123341: &lt;http://trac.webkit.org/changeset/123341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675736</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 08:49:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152229</attachid>
            <date>2012-07-13 05:42:05 -0700</date>
            <delta_ts>2012-07-13 05:47:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager_client.patch</filename>
            <type>text/plain</type>
            <size>28369</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOTk0ZmJmLi5mY2YxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyOjpfRXdrX1VybF9TY2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3Rf
dW5yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldCk6CisgICAgICAgIChld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfaWRfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKwog
MjAxMi0wNy0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViS2l0MiBjcmFzaCB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNWU1NGU2Li40OGYyZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMzcsMTEgKzM3LDEzIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDhmYTkwYWUuLmI2YmM0ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNp
bmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmlu
ZGV4IGUxY2NmZjIuLjEwYTE5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDIwICsyMyw1NiBAQAogCiAjaW5jbHVkZSAi
QmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tD
b250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAorc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKKyAgICBfRXdrX1VybF9TY2hlbWVf
SGFuZGxlcigpCisgICAgICAgIDogY2FsbGJhY2soMCkKKyAgICAgICAgLCB1c2VyRGF0YSgwKQor
ICAgIHsKKyAgICB9CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIoRXdrX1VybF9TY2hlbWVf
UmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCisgICAgICAgIDogY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgICAgICwgdXNlckRhdGEodXNlckRhdGEpCisgICAgeworICAgIH0KKwor
ICAgIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRh
dGE7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBfRXdrX1VybF9TY2hlbWVfSGFuZGxl
cj4gVVJMU2NoZW1lSGFuZGxlck1hcDsKKwogc3RydWN0IF9Fd2tfQ29udGV4dCB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0OworCisgICAgVVJMU2NoZW1lSGFuZGxlck1h
cCB1cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBS
ZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7CiAjZW5kaWYKKyAgICBXS1Jl
dGFpblB0cjxXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZj4gcmVxdWVzdE1hbmFnZXI7CiAKICAgICBf
RXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgICAgIDogY29udGV4dChj
b250ZXh0UmVmKQotICAgIHsgfQorICAgICAgICAsIHJlcXVlc3RNYW5hZ2VyKFdLQ29udGV4dEdl
dFNvdXBSZXF1ZXN0TWFuYWdlcihjb250ZXh0UmVmKSkKKyAgICB7CisjaWYgRU5BQkxFKEJBVFRF
UllfU1RBVFVTKQorICAgICAgICBXS0JhdHRlcnlNYW5hZ2VyUmVmIHdrQmF0dGVyeU1hbmFnZXIg
PSBXS0NvbnRleHRHZXRCYXR0ZXJ5TWFuYWdlcihjb250ZXh0UmVmKTsKKyAgICAgICAgYmF0dGVy
eVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUod2tCYXR0ZXJ5TWFuYWdlcik7Cisj
ZW5kaWYKKworICAgICAgICBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X2F0dGFj
aCh0aGlzKTsKKyAgICB9CiB9OwogCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0
X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKQEAgLTQ0LDE3ICs4MCw0MCBAQCBX
S0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCkKICAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5nZXQoKTsKIH0KIAot
c3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQoKQorLyoq
CisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSByZXF1ZXN0IG1hbmFnZXIgZm9yIEBhIGV3
a0NvbnRleHQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0NvbnRleHQgb2JqZWN0
LgorICovCitXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFn
ZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogewotICAgIFdLQ29udGV4dFJl
ZiB3a0NvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOwotICAgIEV3
a19Db250ZXh0KiBld2tDb250ZXh0ID0gbmV3IEV3a19Db250ZXh0KHdrQ29udGV4dCk7CisgICAg
cmV0dXJuIGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyLmdldCgpOworfQogCi0jaWYgRU5BQkxF
KEJBVFRFUllfU1RBVFVTKQotICAgIFdLQmF0dGVyeU1hbmFnZXJSZWYgd2tCYXR0ZXJ5TWFuYWdl
ciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2VyKHdrQ29udGV4dCk7Ci0gICAgZXdrQ29udGV4
dC0+YmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUod2tCYXR0ZXJ5TWFu
YWdlcik7Ci0jZW5kaWYKKy8qKgorICogQGludGVybmFsCisgKiBBIG5ldyBVUkwgcmVxdWVzdCB3
YXMgcmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0NvbnRleHQgb2Jq
ZWN0LgorICogQHBhcmFtIHNjaGVtZVJlcXVlc3QgYSAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBv
YmplY3QuCisgKi8KK3ZvaWQgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZXF1ZXN0X3JlY2VpdmVk
KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBzY2hlbWVS
ZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNjaGVtZVJlcXVlc3QpOwogCi0gICAgcmV0
dXJuIGV3a0NvbnRleHQ7CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIgaGFuZGxlciA9IGV3
a0NvbnRleHQtPnVybFNjaGVtZUhhbmRsZXJzLmdldChld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3Nj
aGVtZV9nZXQoc2NoZW1lUmVxdWVzdCkpOworICAgIGlmICghaGFuZGxlci5jYWxsYmFjaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlci5jYWxsYmFjayhzY2hlbWVSZXF1ZXN0LCBoYW5k
bGVyLnVzZXJEYXRhKTsKK30KKworc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogY3JlYXRlRGVm
YXVsdEV3a0NvbnRleHQoKQoreworICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSBXS0NvbnRl
eHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOworICAgIHJldHVybiBuZXcgRXdrX0NvbnRleHQo
d2tDb250ZXh0KTsKIH0KIAogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkK
QEAgLTYzLDMgKzEyMiwxNiBAQCBFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQo
KQogCiAgICAgcmV0dXJuIGRlZmF1bHRDb250ZXh0OwogfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfdXJpX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hh
ciogc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2Vy
RGF0YSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrQ29udGV4dCwg
ZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzY2hlbWUsIGZhbHNl
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FsbGJhY2ssIGZhbHNlKTsK
KworICAgIGV3a0NvbnRleHQtPnVybFNjaGVtZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4
KHNjaGVtZSksIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NjaGVtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY2hlbWUpKTsKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclJl
Z2lzdGVyVVJJU2NoZW1lKGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyLmdldCgpLCB3a1NjaGVt
ZS5nZXQoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IDc5NGQwNTIuLjk5YjFjMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMjks
NiArMjksNyBAQAogI2lmbmRlZiBld2tfY29udGV4dF9oCiAjZGVmaW5lIGV3a19jb250ZXh0X2gK
IAorI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlIDxFdmFzLmg+
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzksMTIgKzQwLDYxIEBAIGV4dGVybiAiQyIgewog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OwogCiAvKioKKyAqIEB0eXBl
ZGVmIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYgor
ICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a19jb250ZXh0X3VyaV9zY2hl
bWVfcmVnaXN0ZXIoKS4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1VybF9TY2hlbWVfUmVxdWVz
dF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKnVzZXJfZGF0YSk7
CisKKy8qKgogICogR2V0cyBkZWZhdWx0IEV3a19Db250ZXh0IGluc3RhbmNlLgogICoKICAqIEBy
ZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0LgogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpOwogCisvKioKKyAqIFJlZ2lzdGVyIEBhIHNjaGVtZSBpbiBAYSBj
b250ZXh0LgorICoKKyAqIFdoZW4gYW4gVVJMIHJlcXVlc3Qgd2l0aCBAYSBzY2hlbWUgaXMgbWFk
ZSBpbiB0aGUgI0V3a19Db250ZXh0LCB0aGUgY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIHByb3ZpZGVk
IHdpbGwgYmUgY2FsbGVkIHdpdGggYSAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdC4KKyAqCisgKiBJ
dCBpcyBwb3NzaWJsZSB0byBoYW5kbGUgVVJMIHNjaGVtZSByZXF1ZXN0cyBhc3luY2hyb25vdXNs
eSwgYnkgY2FsbGluZyBld2tfdXJsX3NjaGVtZV9yZWYoKSBvbiB0aGUKKyAqICNFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0IGFuZCBjYWxsaW5nIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKCkg
bGF0ZXIgd2hlbiB0aGUgZGF0YSBvZgorICogdGhlIHJlcXVlc3QgaXMgYXZhaWxhYmxlLgorICoK
KyAqIEBwYXJhbSBjb250ZXh0IGEgI0V3a19Db250ZXh0IG9iamVjdC4KKyAqIEBwYXJhbSBzY2hl
bWUgdGhlIG5ldHdvcmsgc2NoZW1lIHRvIHJlZ2lzdGVyCisgKiBAcGFyYW0gY2FsbGJhY2sgdGhl
IGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGFuIFVSTCByZXF1ZXN0IHdpdGggQGEgc2NoZW1l
IGlzIG1hZGUuCisgKiBAcGFyYW0gdXNlcl9kYXRhIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBm
dW5jdGlvbgorICoKKyAqIEBjb2RlCisgKiBzdGF0aWMgdm9pZCBhYm91dF91cmlfc2NoZW1lX3Jl
cXVlc3RfY2IoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAqdXNlcl9kYXRh
KQorICogeworICogICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgKiAgICAgY2hhciAqY29udGVudHNf
ZGF0YSA9IE5VTEw7CisgKiAgICAgdW5zaWduZWQgaW50IGNvbnRlbnRzX2xlbmd0aCA9IDA7Cisg
KgorICogICAgIHBhdGggPSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KHJlcXVlc3Qp
OworICogICAgIGlmICghc3RyY21wKHBhdGgsICJwbHVnaW5zIikpIHsKKyAqICAgICAgICAgLy8g
SW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhlIGNvbnRlbnRzIG9mIHBsdWdpbnMgYWJv
dXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0g
ZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAibWVtb3J5IikpIHsKKyAqICAgICAgICAgLy8gSW5pdGlh
bGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhlIGNvbnRlbnRzIG9mIG1lbW9yeSBhYm91dCBwYWdl
LCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29udGVudHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIGlm
ICghc3RyY21wKHBhdGgsICJhcHBsaWNhdGlvbnMiKSkgeworICogICAgICAgICAvLyBJbml0aWFs
aXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUgY29udGVudHMgb2YgYXBwbGljYXRpb24gYWJvdXQg
cGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0gZWxz
ZSB7CisgKiAgICAgICAgIEVpbmFfU3RyYnVmICpidWYgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKyAq
ICAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWYsICImbHQ7aHRtbCZndDsmbHQ7
Ym9keSZndDsmbHQ7cCZndDtJbnZhbGlkIGFib3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5
Jmd0OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsKKyAqICAgICAgICAgY29udGVudHNfZGF0YSA9IGVp
bmFfc3RyYnVmX3N0cmluZ19zdGVhbChidWYpOworICogICAgICAgICBjb250ZW50c19sZW5ndGgg
PSBzdHJsZW4oY29udGVudHMpOworICogICAgICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1Zik7Cisg
KiAgICAgfQorICogICAgIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIGNv
bnRlbnRzX2RhdGEsIGNvbnRlbnRzX2xlbmd0aCwgInRleHQvaHRtbCIpOworICogICAgIGZyZWUo
Y29udGVudHNfZGF0YSk7CisgKiB9CisgKiBAZW5kY29kZQorICovCitFQVBJIEVpbmFfQm9vbCBl
d2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0ICpjb250ZXh0LCBjb25z
dCBjaGFyICpzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQg
KnVzZXJfZGF0YSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgK
aW5kZXggODEzYTk0Mi4uZDc4ZTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsMTAgQEAK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRl
eHQgRXdrX0NvbnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0OwogCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250
ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCopOworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgZXdr
X2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4dCopOwordm9pZCBl
d2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2ZWQoRXdrX0NvbnRleHQqLCBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyYmQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9j
bGllbnQuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUgIldLU291cFJlcXVl
c3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGUuaCIKKworc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogdG9Fd2tDb250ZXh0
KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19D
b250ZXh0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCitzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVz
dE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHNjaGVtZVJl
cXVlc3QgPSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhzb3VwUmVxdWVzdE1hbmFnZXJSZWYs
IHVybFJlZiwgcmVxdWVzdElEKTsKKyAgICBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3Rf
cmVjZWl2ZWQodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBzY2hlbWVSZXF1ZXN0KTsKKyAgICBl
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3VucmVmKHNjaGVtZVJlcXVlc3QpOworfQorCit2b2lkIGV3
a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKEV3a19Db250ZXh0KiBjb250
ZXh0KQoreworICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IHdrUmVxdWVzdE1hbmFnZXJD
bGllbnQ7CisgICAgbWVtc2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQpKTsKKworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQu
dmVyc2lvbiA9IGtXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAg
IHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuY2xpZW50SW5mbyA9IGNvbnRleHQ7CisgICAgd2tSZXF1
ZXN0TWFuYWdlckNsaWVudC5kaWRSZWNlaXZlVVJJUmVxdWVzdCA9IGRpZFJlY2VpdmVVUklSZXF1
ZXN0OworCisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoZXdrX2NvbnRleHRfcmVx
dWVzdF9tYW5hZ2VyX2dldChjb250ZXh0KSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODliYmY2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZh
dGVfaAorI2RlZmluZSBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVf
aAorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7CisKK3ZvaWQgZXdr
X2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRhY2goRXdrX0NvbnRleHQqIGNvbnRl
eHQpOworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTBhNTdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV0tEYXRhLmgiCisjaW5jbHVkZSAiV0tS
ZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUg
IldLU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
CisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IGRhdGEuCisgKi8K
K3N0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCB7CisgICAgdW5zaWduZWQgaW50IF9fcmVm
OyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLworICAgIFdLUmV0YWlu
UHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiB3a1JlcXVlc3RNYW5hZ2VyOworICAgIGNvbnN0
IGNoYXIqIHVybDsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQ7CisgICAgY29uc3QgY2hhciogc2No
ZW1lOworICAgIGNvbnN0IGNoYXIqIHBhdGg7CisKKyAgICBfRXdrX1VybF9TY2hlbWVfUmVxdWVz
dChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBfdXJsLCB1aW50
NjRfdCBfcmVxdWVzdElEKQorICAgICAgICA6IF9fcmVmKDEpCisgICAgICAgICwgd2tSZXF1ZXN0
TWFuYWdlcihtYW5hZ2VyKQorICAgICAgICAsIHVybChlaW5hX3N0cmluZ3NoYXJlX2FkZChfdXJs
KSkKKyAgICAgICAgLCByZXF1ZXN0SUQoX3JlcXVlc3RJRCkKKyAgICB7CisgICAgICAgIFNvdXBV
UkkqIHNvdXBVUkkgPSBzb3VwX3VyaV9uZXcoX3VybCk7CisgICAgICAgIHNjaGVtZSA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKHNvdXBVUkktPnNjaGVtZSk7CisgICAgICAgIHBhdGggPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZChzb3VwVVJJLT5wYXRoKTsKKyAgICAgICAgc291cF91cmlfZnJlZShzb3Vw
VVJJKTsKKyAgICB9Cit9OworCit2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfcmVmKEV3a19V
cmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4ocmVxdWVzdCk7CisgICAgKytyZXF1ZXN0LT5fX3JlZjsKK30KKwordm9pZCBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3VucmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVxdWVzdCk7CisKKyAgICBpZiAoLS1y
ZXF1ZXN0LT5fX3JlZikKKyAgICAgICAgcmV0dXJuOworCisgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwocmVxdWVzdC0+dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXF1ZXN0LT5zY2hl
bWUpOworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlcXVlc3QtPnBhdGgpOworICAgIGRlbGV0
ZSByZXF1ZXN0OworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3NjaGVt
ZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVx
dWVzdC0+c2NoZW1lOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3Vy
bF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVx
dWVzdC0+dXJsOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3BhdGhf
Z2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVl
c3QtPnBhdGg7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXR1cm5zIHRoZSAjRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdCBpZGVudGlmaWVyLgorICovCit1aW50NjRfdCBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X2lkX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsKKworICAg
IHJldHVybiByZXF1ZXN0LT5yZXF1ZXN0SUQ7Cit9CisKK0VpbmFfQm9vbCBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X2ZpbmlzaChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0LCB2
b2lkKiBjb250ZW50RGF0YSwgdW5zaWduZWQgaW50IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIq
IG1pbWVUeXBlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCBmYWxzZSk7CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBX
S0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNvbnRlbnRMZW5ndGgpKTsKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlwZSkpIDogMDsKKworICAgIC8vIEluIGNhc2Ug
b2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgV0tEYXRhUmVmIGlzIHNlbnQgdG8gdGhlIFdlYlByb2Nl
c3MuCisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KHJlcXVlc3Qt
PndrUmVxdWVzdE1hbmFnZXIuZ2V0KCksIHdrRGF0YS5nZXQoKSwgY29udGVudExlbmd0aCwgd2tN
aW1lVHlwZS5nZXQoKSwgcmVxdWVzdC0+cmVxdWVzdElEKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3QuCisgKi8KK0V3a19VcmxfU2NoZW1lX1JlcXVlc3QqIGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfbmV3KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHJlcXVlc3RNYW5hZ2VyLCBXS1VSTFJlZiB1
cmwsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwocmVxdWVzdE1hbmFnZXIsIDApOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh1cmwsIDApOworCisgICAgcmV0dXJuIG5ldyBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KHJl
cXVlc3RNYW5hZ2VyLCB0b0ltcGwodXJsKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVz
dElEKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wMzRjYmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a191cmxfc2NoZW1lX3JlcXVlc3Qu
aAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgVVJMIHNjaGVtZSByZXF1ZXN0IEFQSS4K
KyAqLworCisjaWZuZGVmIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaAorI2RlZmluZSBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7CisKKy8qKgorICogSW5jcmVhc2VzIHRo
ZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcmVx
dWVzdCB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3JlZihFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBEZWNyZWFzZXMgdGhlIHJl
ZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0Lgor
ICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQgMCwgdGhlIFVSTCBz
Y2hlbWUgcmVxdWVzdCBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB0aGUgVVJMIHJl
cXVlc3Qgb2JqZWN0IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2
b2lkIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAq
cmVxdWVzdCk7CisKKy8qKgorICogUXVlcnkgdGhlIFVSTCBzY2hlbWUgZm9yIHRoaXMgcmVxdWVz
dC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisg
KiBAcmV0dXJuIHRoZSBVUkwgc2NoZW1lIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRo
aXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBj
cHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisg
Ki8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KGNv
bnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5IHRo
ZSBVUkwgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9i
amVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkg
YmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUg
ZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5
b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3No
YXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAg
ICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3VybF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgor
ICogUXVlcnkgdGhlIHBhdGggcGFydCBvZiB0aGUgVVJMIGZvciB0aGlzIHJlcXVlc3QuCisgKgor
ICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVy
biB0aGUgcGF0aCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMK
KyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZl
ciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0
cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0
IGNoYXIgKmV3a191cmxfc2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQoY29uc3QgRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRmluaXNoIGEgRXdrX1VybF9TY2hlbWVf
UmVxdWVzdCBieSBzZXR0aW5nIHRoZSBjb250ZW50IG9mIHRoZSByZXF1ZXN0IGFuZCBpdHMgbWlt
ZSB0eXBlLgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IGEgRXdrX1VybF9TY2hlbWVfUmVxdWVzdC4K
KyAqIEBwYXJhbSBjb250ZW50X2RhdGEgdGhlIGRhdGEgY29udGVudCBvZiB0aGUgcmVxdWVzdCAo
bWF5IGJlICVjIE5VTEwgaWYgdGhlIGNvbnRlbnQgaXMgZW1wdHkpLgorICogQHBhcmFtIGNvbnRl
bnRfbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIEBhIGNvbnRlbnRfZGF0YS4KKyAqIEBwYXJhbSBt
aW1lX3R5cGUgdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgc3RyZWFtIG9yICVjIE5VTEwgaWYgbm90
IGtub3duCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNo
KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKmNvbnRlbnRfZGF0
YSwgdW5zaWduZWQgaW50IGNvbnRlbnRfbGVuZ3RoLCBjb25zdCBjaGFyICptaW1lX3R5cGUpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3VybF9zY2hl
bWVfcmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZGQ0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZh
dGUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V3
a19VcmxfU2NoZW1lX1JlcXVlc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdDsKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworRXdrX1VybF9TY2hlbWVfUmVxdWVzdCog
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJM
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCit1aW50NjRfdCBld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X2lkX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0KTsKKworI2Vu
ZGlmIC8vIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152231</attachid>
            <date>2012-07-13 05:47:50 -0700</date>
            <delta_ts>2012-07-13 05:56:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager_client.patch</filename>
            <type>text/plain</type>
            <size>28324</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOTk0ZmJmLi5mY2YxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyOjpfRXdrX1VybF9TY2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3Rf
dW5yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldCk6CisgICAgICAgIChld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfaWRfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKwog
MjAxMi0wNy0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViS2l0MiBjcmFzaCB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNWU1NGU2Li40OGYyZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMzcsMTEgKzM3LDEzIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDhmYTkwYWUuLmI2YmM0ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNp
bmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmlu
ZGV4IGUxY2NmZjIuLjk0MmNmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDIwICsyMyw1NSBAQAogCiAjaW5jbHVkZSAi
QmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tD
b250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAorc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKKyAgICBfRXdr
X1VybF9TY2hlbWVfSGFuZGxlcigpCisgICAgICAgIDogY2FsbGJhY2soMCkKKyAgICAgICAgLCB1
c2VyRGF0YSgwKQorICAgIHsKKyAgICB9CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIoRXdr
X1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCisgICAgICAg
IDogY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgdXNlckRhdGEodXNlckRhdGEpCisgICAg
eworICAgIH0KKworICAgIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2s7CisgICAg
dm9pZCogdXNlckRhdGE7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcj4gVVJMU2NoZW1lSGFuZGxlck1hcDsKKwogc3RydWN0IF9Fd2tfQ29udGV4
dCB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0OworCisgICAgVVJMU2No
ZW1lSGFuZGxlck1hcCB1cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIEVOQUJMRShCQVRURVJZX1NU
QVRVUykKICAgICBSZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7CiAjZW5k
aWYKKyAgICBXS1JldGFpblB0cjxXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZj4gcmVxdWVzdE1hbmFn
ZXI7CiAKICAgICBfRXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgICAg
IDogY29udGV4dChjb250ZXh0UmVmKQotICAgIHsgfQorICAgICAgICAsIHJlcXVlc3RNYW5hZ2Vy
KFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihjb250ZXh0UmVmKSkKKyAgICB7CisjaWYg
RU5BQkxFKEJBVFRFUllfU1RBVFVTKQorICAgICAgICBXS0JhdHRlcnlNYW5hZ2VyUmVmIHdrQmF0
dGVyeU1hbmFnZXIgPSBXS0NvbnRleHRHZXRCYXR0ZXJ5TWFuYWdlcihjb250ZXh0UmVmKTsKKyAg
ICAgICAgYmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUod2tCYXR0ZXJ5
TWFuYWdlcik7CisjZW5kaWYKKworICAgICAgICBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJf
Y2xpZW50X2F0dGFjaCh0aGlzKTsKKyAgICB9CiB9OwogCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRl
eHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKQEAgLTQ0LDE3
ICs3OSw0MCBAQCBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBF
d2tfQ29udGV4dCogZXdrQ29udGV4dCkKICAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5n
ZXQoKTsKIH0KIAotc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdEV3a0Nv
bnRleHQoKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSByZXF1ZXN0IG1hbmFn
ZXIgZm9yIEBhIGV3a0NvbnRleHQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0Nv
bnRleHQgb2JqZWN0LgorICovCitXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBld2tfY29udGV4dF9y
ZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogewotICAg
IFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4
dCgpOwotICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0ID0gbmV3IEV3a19Db250ZXh0KHdrQ29u
dGV4dCk7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyLmdldCgpOworfQog
Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdLQmF0dGVyeU1hbmFnZXJSZWYgd2tC
YXR0ZXJ5TWFuYWdlciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2VyKHdrQ29udGV4dCk7Ci0g
ICAgZXdrQ29udGV4dC0+YmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUo
d2tCYXR0ZXJ5TWFuYWdlcik7Ci0jZW5kaWYKKy8qKgorICogQGludGVybmFsCisgKiBBIG5ldyBV
UkwgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdr
X0NvbnRleHQgb2JqZWN0LgorICogQHBhcmFtIHNjaGVtZVJlcXVlc3QgYSAjRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCBvYmplY3QuCisgKi8KK3ZvaWQgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZXF1
ZXN0X3JlY2VpdmVkKEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0KiBzY2hlbWVSZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3
a0NvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNjaGVtZVJlcXVlc3Qp
OwogCi0gICAgcmV0dXJuIGV3a0NvbnRleHQ7CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIg
aGFuZGxlciA9IGV3a0NvbnRleHQtPnVybFNjaGVtZUhhbmRsZXJzLmdldChld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3NjaGVtZV9nZXQoc2NoZW1lUmVxdWVzdCkpOworICAgIGlmICghaGFuZGxlci5j
YWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlci5jYWxsYmFjayhzY2hlbWVS
ZXF1ZXN0LCBoYW5kbGVyLnVzZXJEYXRhKTsKK30KKworc3RhdGljIGlubGluZSBFd2tfQ29udGV4
dCogY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQoKQoreworICAgIFdLQ29udGV4dFJlZiB3a0NvbnRl
eHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOworICAgIHJldHVybiBuZXcg
RXdrX0NvbnRleHQod2tDb250ZXh0KTsKIH0KIAogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2Rl
ZmF1bHRfZ2V0KCkKQEAgLTYzLDMgKzEyMSwxNiBAQCBFd2tfQ29udGV4dCogZXdrX2NvbnRleHRf
ZGVmYXVsdF9nZXQoKQogCiAgICAgcmV0dXJuIGRlZmF1bHRDb250ZXh0OwogfQorCitFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29udGV4
dCwgY29uc3QgY2hhciogc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNr
LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZXdrQ29udGV4dCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
Y2hlbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FsbGJh
Y2ssIGZhbHNlKTsKKworICAgIGV3a0NvbnRleHQtPnVybFNjaGVtZUhhbmRsZXJzLnNldChTdHJp
bmc6OmZyb21VVEY4KHNjaGVtZSksIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyKGNhbGxiYWNrLCB1
c2VyRGF0YSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NjaGVtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY2hlbWUpKTsKKyAgICBXS1NvdXBSZXF1
ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyLmdl
dCgpLCB3a1NjaGVtZS5nZXQoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IDc5NGQwNTIuLjk5
YjFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBld2tfY29udGV4dF9oCiAjZGVmaW5lIGV3
a19jb250ZXh0X2gKIAorI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNs
dWRlIDxFdmFzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzksMTIgKzQwLDYxIEBAIGV4
dGVybiAiQyIgewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OwogCiAv
KioKKyAqIEB0eXBlZGVmIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgRXdrX1VybF9TY2hlbWVf
UmVxdWVzdF9DYgorICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a19jb250
ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoKS4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQg
KnVzZXJfZGF0YSk7CisKKy8qKgogICogR2V0cyBkZWZhdWx0IEV3a19Db250ZXh0IGluc3RhbmNl
LgogICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0LgogICovCiBFQVBJIEV3a19Db250
ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwogCisvKioKKyAqIFJlZ2lzdGVyIEBhIHNj
aGVtZSBpbiBAYSBjb250ZXh0LgorICoKKyAqIFdoZW4gYW4gVVJMIHJlcXVlc3Qgd2l0aCBAYSBz
Y2hlbWUgaXMgbWFkZSBpbiB0aGUgI0V3a19Db250ZXh0LCB0aGUgY2FsbGJhY2sKKyAqIGZ1bmN0
aW9uIHByb3ZpZGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggYSAjRXdrX1VybF9TY2hlbWVfUmVxdWVz
dC4KKyAqCisgKiBJdCBpcyBwb3NzaWJsZSB0byBoYW5kbGUgVVJMIHNjaGVtZSByZXF1ZXN0cyBh
c3luY2hyb25vdXNseSwgYnkgY2FsbGluZyBld2tfdXJsX3NjaGVtZV9yZWYoKSBvbiB0aGUKKyAq
ICNFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGFuZCBjYWxsaW5nIGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfZmluaXNoKCkgbGF0ZXIgd2hlbiB0aGUgZGF0YSBvZgorICogdGhlIHJlcXVlc3QgaXMgYXZh
aWxhYmxlLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IGEgI0V3a19Db250ZXh0IG9iamVjdC4KKyAq
IEBwYXJhbSBzY2hlbWUgdGhlIG5ldHdvcmsgc2NoZW1lIHRvIHJlZ2lzdGVyCisgKiBAcGFyYW0g
Y2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGFuIFVSTCByZXF1ZXN0IHdp
dGggQGEgc2NoZW1lIGlzIG1hZGUuCisgKiBAcGFyYW0gdXNlcl9kYXRhIGRhdGEgdG8gcGFzcyB0
byBjYWxsYmFjayBmdW5jdGlvbgorICoKKyAqIEBjb2RlCisgKiBzdGF0aWMgdm9pZCBhYm91dF91
cmlfc2NoZW1lX3JlcXVlc3RfY2IoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCwgdm9p
ZCAqdXNlcl9kYXRhKQorICogeworICogICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgKiAgICAgY2hh
ciAqY29udGVudHNfZGF0YSA9IE5VTEw7CisgKiAgICAgdW5zaWduZWQgaW50IGNvbnRlbnRzX2xl
bmd0aCA9IDA7CisgKgorICogICAgIHBhdGggPSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3BhdGhf
Z2V0KHJlcXVlc3QpOworICogICAgIGlmICghc3RyY21wKHBhdGgsICJwbHVnaW5zIikpIHsKKyAq
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhlIGNvbnRlbnRzIG9m
IHBsdWdpbnMgYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0
aAorICogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAibWVtb3J5IikpIHsKKyAqICAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhlIGNvbnRlbnRzIG9mIG1lbW9y
eSBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29udGVudHNfbGVuZ3RoCisgKiAg
ICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgsICJhcHBsaWNhdGlvbnMiKSkgeworICogICAgICAg
ICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUgY29udGVudHMgb2YgYXBwbGlj
YXRpb24gYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0aAor
ICogICAgIH0gZWxzZSB7CisgKiAgICAgICAgIEVpbmFfU3RyYnVmICpidWYgPSBlaW5hX3N0cmJ1
Zl9uZXcoKTsKKyAqICAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWYsICImbHQ7
aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZndDtJbnZhbGlkIGFib3V0OiVzIHBhZ2UmbHQ7L3Am
Z3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsKKyAqICAgICAgICAgY29udGVu
dHNfZGF0YSA9IGVpbmFfc3RyYnVmX3N0cmluZ19zdGVhbChidWYpOworICogICAgICAgICBjb250
ZW50c19sZW5ndGggPSBzdHJsZW4oY29udGVudHMpOworICogICAgICAgICBlaW5hX3N0cmJ1Zl9m
cmVlKGJ1Zik7CisgKiAgICAgfQorICogICAgIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNo
KHJlcXVlc3QsIGNvbnRlbnRzX2RhdGEsIGNvbnRlbnRzX2xlbmd0aCwgInRleHQvaHRtbCIpOwor
ICogICAgIGZyZWUoY29udGVudHNfZGF0YSk7CisgKiB9CisgKiBAZW5kY29kZQorICovCitFQVBJ
IEVpbmFfQm9vbCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0ICpj
b250ZXh0LCBjb25zdCBjaGFyICpzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2Fs
bGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKaW5kZXggODEzYTk0Mi4uZDc4ZTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMjMs
NyArMjMsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiB0eXBlZGVmIHN0cnVj
dCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0OwogCiBXS0NvbnRleHRSZWYgZXdrX2Nv
bnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCopOworV0tTb3VwUmVxdWVzdE1h
bmFnZXJSZWYgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4
dCopOwordm9pZCBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2ZWQoRXdrX0Nv
bnRleHQqLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBld2tfY29udGV4
dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyYmQzNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnQuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUg
IldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKKworc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCog
dG9Fd2tDb250ZXh0KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEV3a19Db250ZXh0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQor
CitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJl
ZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwgdWludDY0X3QgcmVxdWVz
dElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3a19VcmxfU2NoZW1lX1JlcXVl
c3QqIHNjaGVtZVJlcXVlc3QgPSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhzb3VwUmVxdWVz
dE1hbmFnZXJSZWYsIHVybFJlZiwgcmVxdWVzdElEKTsKKyAgICBld2tfY29udGV4dF91cmxfc2No
ZW1lX3JlcXVlc3RfcmVjZWl2ZWQodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBzY2hlbWVSZXF1
ZXN0KTsKKyAgICBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3VucmVmKHNjaGVtZVJlcXVlc3QpOwor
fQorCit2b2lkIGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKEV3a19D
b250ZXh0KiBjb250ZXh0KQoreworICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IHdrUmVx
dWVzdE1hbmFnZXJDbGllbnQ7CisgICAgbWVtc2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAw
LCBzaXplb2YoV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQpKTsKKworICAgIHdrUmVxdWVzdE1h
bmFnZXJDbGllbnQudmVyc2lvbiA9IGtXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEN1cnJlbnRW
ZXJzaW9uOworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuY2xpZW50SW5mbyA9IGNvbnRleHQ7
CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5kaWRSZWNlaXZlVVJJUmVxdWVzdCA9IGRpZFJl
Y2VpdmVVUklSZXF1ZXN0OworCisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoZXdr
X2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dldChjb250ZXh0KSwgJndrUmVxdWVzdE1hbmFnZXJD
bGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50
X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODliYmY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJf
Y2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xp
ZW50X3ByaXZhdGVfaAorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7
CisKK3ZvaWQgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRhY2goRXdrX0Nv
bnRleHQqIGNvbnRleHQpOworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2Vy
X2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZTBhNTdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC0wLDAg
KzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV0tEYXRhLmgiCisj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5o
IgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0CisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0
IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCB7CisgICAgdW5zaWdu
ZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwor
ICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiB3a1JlcXVlc3RNYW5hZ2Vy
OworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQ7CisgICAgY29u
c3QgY2hhciogc2NoZW1lOworICAgIGNvbnN0IGNoYXIqIHBhdGg7CisKKyAgICBfRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBjaGFy
KiBfdXJsLCB1aW50NjRfdCBfcmVxdWVzdElEKQorICAgICAgICA6IF9fcmVmKDEpCisgICAgICAg
ICwgd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2VyKQorICAgICAgICAsIHVybChlaW5hX3N0cmluZ3No
YXJlX2FkZChfdXJsKSkKKyAgICAgICAgLCByZXF1ZXN0SUQoX3JlcXVlc3RJRCkKKyAgICB7Cisg
ICAgICAgIFNvdXBVUkkqIHNvdXBVUkkgPSBzb3VwX3VyaV9uZXcoX3VybCk7CisgICAgICAgIHNj
aGVtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNvdXBVUkktPnNjaGVtZSk7CisgICAgICAgIHBh
dGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzb3VwVVJJLT5wYXRoKTsKKyAgICAgICAgc291cF91
cmlfZnJlZShzb3VwVVJJKTsKKyAgICB9Cit9OworCit2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfcmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4ocmVxdWVzdCk7CisgICAgKytyZXF1ZXN0LT5fX3JlZjsKK30KKwor
dm9pZCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3VucmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVxdWVzdCk7CisK
KyAgICBpZiAoLS1yZXF1ZXN0LT5fX3JlZikKKyAgICAgICAgcmV0dXJuOworCisgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwocmVxdWVzdC0+dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChy
ZXF1ZXN0LT5zY2hlbWUpOworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlcXVlc3QtPnBhdGgp
OworICAgIGRlbGV0ZSByZXF1ZXN0OworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAg
ICByZXR1cm4gcmVxdWVzdC0+c2NoZW1lOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3VybF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAg
ICByZXR1cm4gcmVxdWVzdC0+dXJsOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3BhdGhfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAg
cmV0dXJuIHJlcXVlc3QtPnBhdGg7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXR1cm5z
IHRoZSAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBpZGVudGlmaWVyLgorICovCit1aW50NjRfdCBl
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2lkX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5yZXF1ZXN0SUQ7Cit9CisKK0VpbmFfQm9vbCBl
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiByZXF1ZXN0LCB2b2lkKiBjb250ZW50RGF0YSwgdW5zaWduZWQgaW50IGNvbnRlbnRMZW5ndGgs
IGNvbnN0IGNoYXIqIG1pbWVUeXBlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChyZXF1ZXN0LCBmYWxzZSk7CisKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHdrRGF0
YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNvbnRlbnRMZW5ndGgpKTsK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9IG1pbWVUeXBlID8gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlwZSkpIDogMDsKKworICAg
IC8vIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgV0tEYXRhUmVmIGlzIHNlbnQgdG8g
dGhlIFdlYlByb2Nlc3MuCisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1
ZXN0KHJlcXVlc3QtPndrUmVxdWVzdE1hbmFnZXIuZ2V0KCksIHdrRGF0YS5nZXQoKSwgY29udGVu
dExlbmd0aCwgd2tNaW1lVHlwZS5nZXQoKSwgcmVxdWVzdC0+cmVxdWVzdElEKTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19V
cmxfU2NoZW1lX1JlcXVlc3QuCisgKi8KK0V3a19VcmxfU2NoZW1lX1JlcXVlc3QqIGV3a191cmxf
c2NoZW1lX3JlcXVlc3RfbmV3KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHJlcXVlc3RNYW5hZ2Vy
LCBXS1VSTFJlZiB1cmwsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdE1hbmFnZXIsIDApOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh1cmwsIDApOworCisgICAgcmV0dXJuIG5ldyBFd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0KHJlcXVlc3RNYW5hZ2VyLCB0b0ltcGwodXJsKS0+c3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgcmVxdWVzdElEKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wMzRjYmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oCkBAIC0wLDAgKzEs
MTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a191cmxfc2No
ZW1lX3JlcXVlc3QuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgVVJMIHNjaGVtZSBy
ZXF1ZXN0IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaAorI2Rl
ZmluZSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgKi8KK3R5cGVkZWYgc3RydWN0IF9F
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7CisKKy8qKgorICog
SW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KKyAqCisg
KiBAcGFyYW0gcmVxdWVzdCB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFz
ZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3JlZihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBEZWNy
ZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBm
cmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQg
MCwgdGhlIFVSTCBzY2hlbWUgcmVxdWVzdCBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gcmVxdWVz
dCB0aGUgVVJMIHJlcXVlc3Qgb2JqZWN0IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQK
KyAqLworRUFQSSB2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcnkgdGhlIFVSTCBzY2hlbWUgZm9y
IHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBx
dWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgc2NoZW1lIHBvaW50ZXIsIHRoYXQgbWF5IGJl
IEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVp
bmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91
cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAg
c3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9z
Y2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioK
KyAqIFF1ZXJ5IHRoZSBVUkwgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVz
dCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRl
ciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJh
bnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAg
ICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBv
cgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0X3VybF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVz
dCk7CisKKy8qKgorICogUXVlcnkgdGhlIHBhdGggcGFydCBvZiB0aGUgVVJMIGZvciB0aGlzIHJl
cXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisg
KgorICogQHJldHVybiB0aGUgcGF0aCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlz
IHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJl
LCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1
IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVh
ZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICov
CitFQVBJIGNvbnN0IGNoYXIgKmV3a191cmxfc2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQoY29uc3Qg
RXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRmluaXNoIGEgRXdr
X1VybF9TY2hlbWVfUmVxdWVzdCBieSBzZXR0aW5nIHRoZSBjb250ZW50IG9mIHRoZSByZXF1ZXN0
IGFuZCBpdHMgbWltZSB0eXBlLgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IGEgRXdrX1VybF9TY2hl
bWVfUmVxdWVzdC4KKyAqIEBwYXJhbSBjb250ZW50X2RhdGEgdGhlIGRhdGEgY29udGVudCBvZiB0
aGUgcmVxdWVzdCAobWF5IGJlICVjIE5VTEwgaWYgdGhlIGNvbnRlbnQgaXMgZW1wdHkpLgorICog
QHBhcmFtIGNvbnRlbnRfbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIEBhIGNvbnRlbnRfZGF0YS4K
KyAqIEBwYXJhbSBtaW1lX3R5cGUgdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgc3RyZWFtIG9yICVj
IE5VTEwgaWYgbm90IGtub3duCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a191cmxfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoKGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQg
KmNvbnRlbnRfZGF0YSwgdW5zaWduZWQgaW50IGNvbnRlbnRfbGVuZ3RoLCBjb25zdCBjaGFyICpt
aW1lX3R5cGUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8g
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZGQ0MTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3ByaXZhdGUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdDsK
K3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcoV0tTb3VwUmVxdWVzdE1hbmFn
ZXJSZWYsIFdLVVJMUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCit1aW50NjRfdCBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X2lkX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1
ZXN0KTsKKworI2VuZGlmIC8vIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152232</attachid>
            <date>2012-07-13 05:56:26 -0700</date>
            <delta_ts>2012-07-13 06:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager_client.patch</filename>
            <type>text/plain</type>
            <size>28275</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOTk0ZmJmLi5mY2YxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyOjpfRXdrX1VybF9TY2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3Rf
dW5yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldCk6CisgICAgICAgIChld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfaWRfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKwog
MjAxMi0wNy0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViS2l0MiBjcmFzaCB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNWU1NGU2Li40OGYyZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMzcsMTEgKzM3LDEzIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDhmYTkwYWUuLmI2YmM0ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNp
bmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmlu
ZGV4IGUxY2NmZjIuLjU3M2EyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDIwICsyMyw1NCBAQAogCiAjaW5jbHVkZSAi
QmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tD
b250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAorc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKKyAgICBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOworCisg
ICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIoKQorICAgICAgICA6IGNhbGxiYWNrKDApCisgICAg
ICAgICwgdXNlckRhdGEoMCkKKyAgICB7IH0KKworICAgIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVy
KEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQorICAg
ICAgICA6IGNhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQor
ICAgIHsgfQorfTsKKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgX0V3a19VcmxfU2NoZW1lX0hh
bmRsZXI+IFVSTFNjaGVtZUhhbmRsZXJNYXA7CisKIHN0cnVjdCBfRXdrX0NvbnRleHQgewogICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dDsKKwogI2lmIEVOQUJMRShCQVRURVJZ
X1NUQVRVUykKICAgICBSZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7CiAj
ZW5kaWYKIAorICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiByZXF1ZXN0
TWFuYWdlcjsKKyAgICBVUkxTY2hlbWVIYW5kbGVyTWFwIHVybFNjaGVtZUhhbmRsZXJzOworCiAg
ICAgX0V3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgICAgICA6IGNvbnRl
eHQoY29udGV4dFJlZikKLSAgICB7IH0KKyAgICAgICAgLCByZXF1ZXN0TWFuYWdlcihXS0NvbnRl
eHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoY29udGV4dFJlZikpCisgICAgeworI2lmIEVOQUJMRShC
QVRURVJZX1NUQVRVUykKKyAgICAgICAgV0tCYXR0ZXJ5TWFuYWdlclJlZiB3a0JhdHRlcnlNYW5h
Z2VyID0gV0tDb250ZXh0R2V0QmF0dGVyeU1hbmFnZXIoY29udGV4dFJlZik7CisgICAgICAgIGJh
dHRlcnlQcm92aWRlciA9IEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKHdrQmF0dGVyeU1hbmFnZXIp
OworI2VuZGlmCisKKyAgICAgICAgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9h
dHRhY2godGhpcyk7CisgICAgfQogfTsKIAogV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29u
dGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCkBAIC00NCwxNyArNzgsMzkg
QEAgV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRl
eHQqIGV3a0NvbnRleHQpCiAgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgRXdrX0NvbnRleHQqIGNyZWF0ZURlZmF1bHRFd2tDb250ZXh0KCkK
Ky8qKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgcmVxdWVzdCBtYW5hZ2VyIGZvciBA
YSBld2tDb250ZXh0LgorICoKKyAqIEBwYXJhbSBld2tDb250ZXh0IGEgI0V3a19Db250ZXh0IG9i
amVjdC4KKyAqLworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgZXdrX2NvbnRleHRfcmVxdWVzdF9t
YW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSAgICBXS0NvbnRl
eHRSZWYgd2tDb250ZXh0ID0gV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsKLSAg
ICBFd2tfQ29udGV4dCogZXdrQ29udGV4dCA9IG5ldyBFd2tfQ29udGV4dCh3a0NvbnRleHQpOwor
ICAgIHJldHVybiBld2tDb250ZXh0LT5yZXF1ZXN0TWFuYWdlci5nZXQoKTsKK30KIAotI2lmIEVO
QUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBXS0JhdHRlcnlNYW5hZ2VyUmVmIHdrQmF0dGVyeU1h
bmFnZXIgPSBXS0NvbnRleHRHZXRCYXR0ZXJ5TWFuYWdlcih3a0NvbnRleHQpOwotICAgIGV3a0Nv
bnRleHQtPmJhdHRlcnlQcm92aWRlciA9IEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKHdrQmF0dGVy
eU1hbmFnZXIpOwotI2VuZGlmCisvKioKKyAqIEBpbnRlcm5hbAorICogQSBuZXcgVVJMIHJlcXVl
c3Qgd2FzIHJlY2VpdmVkLgorICoKKyAqIEBwYXJhbSBld2tDb250ZXh0IGEgI0V3a19Db250ZXh0
IG9iamVjdC4KKyAqIEBwYXJhbSBzY2hlbWVSZXF1ZXN0IGEgI0V3a19VcmxfU2NoZW1lX1JlcXVl
c3Qgb2JqZWN0LgorICovCit2b2lkIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVxdWVzdF9yZWNl
aXZlZChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogc2No
ZW1lUmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihld2tDb250ZXh0
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzY2hlbWVSZXF1ZXN0KTsKKworICAg
IF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIGhhbmRsZXIgPSBld2tDb250ZXh0LT51cmxTY2hlbWVI
YW5kbGVycy5nZXQoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KHNjaGVtZVJlcXVl
c3QpKTsKKyAgICBpZiAoIWhhbmRsZXIuY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IGhhbmRsZXIuY2FsbGJhY2soc2NoZW1lUmVxdWVzdCwgaGFuZGxlci51c2VyRGF0YSk7Cit9CiAK
LSAgICByZXR1cm4gZXdrQ29udGV4dDsKK3N0YXRpYyBpbmxpbmUgRXdrX0NvbnRleHQqIGNyZWF0
ZURlZmF1bHRFd2tDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gbmV3IEV3a19Db250ZXh0KFdLQ29u
dGV4dEdldFNoYXJlZFByb2Nlc3NDb250ZXh0KCkpOwogfQogCiBFd2tfQ29udGV4dCogZXdrX2Nv
bnRleHRfZGVmYXVsdF9nZXQoKQpAQCAtNjMsMyArMTE5LDE2IEBAIEV3a19Db250ZXh0KiBld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpCiAKICAgICByZXR1cm4gZGVmYXVsdENvbnRleHQ7CiB9CisK
K0VpbmFfQm9vbCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0KiBl
d2tDb250ZXh0LCBjb25zdCBjaGFyKiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChld2tDb250ZXh0LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNjaGVtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChjYWxsYmFjaywgZmFsc2UpOworCisgICAgZXdrQ29udGV4dC0+dXJsU2NoZW1lSGFuZGxlcnMu
c2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIoY2Fs
bGJhY2ssIHVzZXJEYXRhKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrU2NoZW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjaGVtZSkpOworICAgIFdL
U291cFJlcXVlc3RNYW5hZ2VyUmVnaXN0ZXJVUklTY2hlbWUoZXdrQ29udGV4dC0+cmVxdWVzdE1h
bmFnZXIuZ2V0KCksIHdrU2NoZW1lLmdldCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggNzk0
ZDA1Mi4uOTliMWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIGV3a19jb250ZXh0X2gKICNk
ZWZpbmUgZXdrX2NvbnRleHRfaAogCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5o
IgogI2luY2x1ZGUgPEV2YXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zOSwxMiArNDAs
NjEgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRl
eHQ7CiAKIC8qKgorICogQHR5cGVkZWYgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBFd2tfVXJs
X1NjaGVtZV9SZXF1ZXN0X0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGgg
ZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3RlcigpLgorICovCit0eXBlZGVmIHZvaWQgKCpF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiKSAoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVz
dCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBHZXRzIGRlZmF1bHQgRXdrX0NvbnRleHQg
aW5zdGFuY2UuCiAgKgogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3QuCiAgKi8KIEVBUEkg
RXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CiAKKy8qKgorICogUmVnaXN0
ZXIgQGEgc2NoZW1lIGluIEBhIGNvbnRleHQuCisgKgorICogV2hlbiBhbiBVUkwgcmVxdWVzdCB3
aXRoIEBhIHNjaGVtZSBpcyBtYWRlIGluIHRoZSAjRXdrX0NvbnRleHQsIHRoZSBjYWxsYmFjawor
ICogZnVuY3Rpb24gcHJvdmlkZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhICNFd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0LgorICoKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGhhbmRsZSBVUkwgc2NoZW1lIHJl
cXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieSBjYWxsaW5nIGV3a191cmxfc2NoZW1lX3JlZigpIG9u
IHRoZQorICogI0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgYW5kIGNhbGxpbmcgZXdrX3VybF9zY2hl
bWVfcmVxdWVzdF9maW5pc2goKSBsYXRlciB3aGVuIHRoZSBkYXRhIG9mCisgKiB0aGUgcmVxdWVz
dCBpcyBhdmFpbGFibGUuCisgKgorICogQHBhcmFtIGNvbnRleHQgYSAjRXdrX0NvbnRleHQgb2Jq
ZWN0LgorICogQHBhcmFtIHNjaGVtZSB0aGUgbmV0d29yayBzY2hlbWUgdG8gcmVnaXN0ZXIKKyAq
IEBwYXJhbSBjYWxsYmFjayB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYW4gVVJMIHJl
cXVlc3Qgd2l0aCBAYSBzY2hlbWUgaXMgbWFkZS4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgZGF0YSB0
byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogQGNvZGUKKyAqIHN0YXRpYyB2b2lk
IGFib3V0X3VyaV9zY2hlbWVfcmVxdWVzdF9jYihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1
ZXN0LCB2b2lkICp1c2VyX2RhdGEpCisgKiB7CisgKiAgICAgY29uc3QgY2hhciAqcGF0aDsKKyAq
ICAgICBjaGFyICpjb250ZW50c19kYXRhID0gTlVMTDsKKyAqICAgICB1bnNpZ25lZCBpbnQgY29u
dGVudHNfbGVuZ3RoID0gMDsKKyAqCisgKiAgICAgcGF0aCA9IGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfcGF0aF9nZXQocmVxdWVzdCk7CisgKiAgICAgaWYgKCFzdHJjbXAocGF0aCwgInBsdWdpbnMi
KSkgeworICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUgY29u
dGVudHMgb2YgcGx1Z2lucyBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29udGVu
dHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgsICJtZW1vcnkiKSkgewor
ICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUgY29udGVudHMg
b2YgbWVtb3J5IGFib3V0IHBhZ2UsIGFuZCBzZXQgaXRzIGxlbmd0aCB0byBjb250ZW50c19sZW5n
dGgKKyAqICAgICB9IGVsc2UgaWYgKCFzdHJjbXAocGF0aCwgImFwcGxpY2F0aW9ucyIpKSB7Cisg
KiAgICAgICAgIC8vIEluaXRpYWxpemUgY29udGVudHNfZGF0YSB3aXRoIHRoZSBjb250ZW50cyBv
ZiBhcHBsaWNhdGlvbiBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29udGVudHNf
bGVuZ3RoCisgKiAgICAgfSBlbHNlIHsKKyAqICAgICAgICAgRWluYV9TdHJidWYgKmJ1ZiA9IGVp
bmFfc3RyYnVmX25ldygpOworICogICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJpbnRmKGJ1
ZiwgIiZsdDtodG1sJmd0OyZsdDtib2R5Jmd0OyZsdDtwJmd0O0ludmFsaWQgYWJvdXQ6JXMgcGFn
ZSZsdDsvcCZndDsmbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0OyIsIHBhdGgpOworICogICAgICAg
ICBjb250ZW50c19kYXRhID0gZWluYV9zdHJidWZfc3RyaW5nX3N0ZWFsKGJ1Zik7CisgKiAgICAg
ICAgIGNvbnRlbnRzX2xlbmd0aCA9IHN0cmxlbihjb250ZW50cyk7CisgKiAgICAgICAgIGVpbmFf
c3RyYnVmX2ZyZWUoYnVmKTsKKyAqICAgICB9CisgKiAgICAgZXdrX3VybF9zY2hlbWVfcmVxdWVz
dF9maW5pc2gocmVxdWVzdCwgY29udGVudHNfZGF0YSwgY29udGVudHNfbGVuZ3RoLCAidGV4dC9o
dG1sIik7CisgKiAgICAgZnJlZShjb250ZW50c19kYXRhKTsKKyAqIH0KKyAqIEBlbmRjb2RlCisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoRXdrX0Nv
bnRleHQgKmNvbnRleHQsIGNvbnN0IGNoYXIgKnNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVz
dF9DYiBjYWxsYmFjaywgdm9pZCAqdXNlcl9kYXRhKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCA4MTNhOTQyLi5kNzhlMWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
CkBAIC0yMyw3ICsyMywxMCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IF9Fd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7CiAKIFdLQ29udGV4dFJl
ZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3a19Db250ZXh0Kik7CitXS1NvdXBS
ZXF1ZXN0TWFuYWdlclJlZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnN0IEV3
a19Db250ZXh0Kik7Cit2b2lkIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVxdWVzdF9yZWNlaXZl
ZChFd2tfQ29udGV4dCosIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqKTsKIAogI2VuZGlmIC8vIGV3
a19jb250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xp
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjJiZDM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV0tCYXNlLmgiCisj
aW5jbHVkZSAiV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgorI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgorCitzdGF0aWMgaW5saW5lIEV3a19D
b250ZXh0KiB0b0V3a0NvbnRleHQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCB1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCogc2NoZW1lUmVxdWVzdCA9IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KHNv
dXBSZXF1ZXN0TWFuYWdlclJlZiwgdXJsUmVmLCByZXF1ZXN0SUQpOworICAgIGV3a19jb250ZXh0
X3VybF9zY2hlbWVfcmVxdWVzdF9yZWNlaXZlZCh0b0V3a0NvbnRleHQoY2xpZW50SW5mbyksIHNj
aGVtZVJlcXVlc3QpOworICAgIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoc2NoZW1lUmVx
dWVzdCk7Cit9CisKK3ZvaWQgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRh
Y2goRXdrX0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGll
bnQgd2tSZXF1ZXN0TWFuYWdlckNsaWVudDsKKyAgICBtZW1zZXQoJndrUmVxdWVzdE1hbmFnZXJD
bGllbnQsIDAsIHNpemVvZihXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCkpOworCisgICAgd2tS
ZXF1ZXN0TWFuYWdlckNsaWVudC52ZXJzaW9uID0ga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50
Q3VycmVudFZlcnNpb247CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5jbGllbnRJbmZvID0g
Y29udGV4dDsKKyAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0
ID0gZGlkUmVjZWl2ZVVSSVJlcXVlc3Q7CisKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENs
aWVudChld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnRleHQpLCAmd2tSZXF1ZXN0
TWFuYWdlckNsaWVudCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnRfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4
OWJiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaApAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X3JlcXVlc3Rf
bWFuYWdlcl9jbGllbnRfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X3JlcXVlc3RfbWFu
YWdlcl9jbGllbnRfcHJpdmF0ZV9oCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tf
Q29udGV4dDsKKwordm9pZCBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X2F0dGFj
aChFd2tfQ29udGV4dCogY29udGV4dCk7CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGE1N2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAK
QEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXS0Rh
dGEuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19VcmxfU2NoZW1lX1JlcXVlc3QKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBVUkwgc2NoZW1l
IHJlcXVlc3QgZGF0YS4KKyAqLworc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IHsKKyAg
ICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2Jq
ZWN0ICovCisgICAgV0tSZXRhaW5QdHI8V0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY+IHdrUmVxdWVz
dE1hbmFnZXI7CisgICAgY29uc3QgY2hhciogdXJsOworICAgIHVpbnQ2NF90IHJlcXVlc3RJRDsK
KyAgICBjb25zdCBjaGFyKiBzY2hlbWU7CisgICAgY29uc3QgY2hhciogcGF0aDsKKworICAgIF9F
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIG1hbmFnZXIsIGNv
bnN0IGNoYXIqIF91cmwsIHVpbnQ2NF90IF9yZXF1ZXN0SUQpCisgICAgICAgIDogX19yZWYoMSkK
KyAgICAgICAgLCB3a1JlcXVlc3RNYW5hZ2VyKG1hbmFnZXIpCisgICAgICAgICwgdXJsKGVpbmFf
c3RyaW5nc2hhcmVfYWRkKF91cmwpKQorICAgICAgICAsIHJlcXVlc3RJRChfcmVxdWVzdElEKQor
ICAgIHsKKyAgICAgICAgU291cFVSSSogc291cFVSSSA9IHNvdXBfdXJpX25ldyhfdXJsKTsKKyAg
ICAgICAgc2NoZW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc291cFVSSS0+c2NoZW1lKTsKKyAg
ICAgICAgcGF0aCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNvdXBVUkktPnBhdGgpOworICAgICAg
ICBzb3VwX3VyaV9mcmVlKHNvdXBVUkkpOworICAgIH0KK307CisKK3ZvaWQgZXdrX3VybF9zY2hl
bWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKKyAgICArK3JlcXVlc3QtPl9fcmVm
OworfQorCit2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoRXdrX1VybF9TY2hlbWVf
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1
ZXN0KTsKKworICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXF1ZXN0LT51cmwpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHJlcXVlc3QtPnNjaGVtZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocmVxdWVz
dC0+cGF0aCk7CisgICAgZGVsZXRlIHJlcXVlc3Q7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxf
c2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAw
KTsKKworICAgIHJldHVybiByZXF1ZXN0LT5zY2hlbWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAw
KTsKKworICAgIHJldHVybiByZXF1ZXN0LT51cmw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7
CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cGF0aDsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IFJldHVybnMgdGhlICNFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGlkZW50aWZpZXIuCisgKi8KK3Vp
bnQ2NF90IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaWRfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1l
X1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnJlcXVlc3RJRDsKK30KKworRWlu
YV9Cb29sIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKGNvbnN0IEV3a19VcmxfU2NoZW1l
X1JlcXVlc3QqIHJlcXVlc3QsIHZvaWQqIGNvbnRlbnREYXRhLCB1bnNpZ25lZCBpbnQgY29udGVu
dExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLRGF0YVJl
Zj4gd2tEYXRhKEFkb3B0V0ssIFdLRGF0YUNyZWF0ZShjb250ZW50TGVuZ3RoID8gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oY29udGVudERhdGEpIDogMCwgY29udGVudExl
bmd0aCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a01pbWVUeXBlID0gbWltZVR5
cGUgPyBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1pbWVUeXBlKSkgOiAw
OworCisgICAgLy8gSW4gY2FzZSBvZiBlbXB0eSByZXBseSBhbiBlbXB0eSBXS0RhdGFSZWYgaXMg
c2VudCB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZEhhbmRs
ZVVSSVJlcXVlc3QocmVxdWVzdC0+d2tSZXF1ZXN0TWFuYWdlci5nZXQoKSwgd2tEYXRhLmdldCgp
LCBjb250ZW50TGVuZ3RoLCB3a01pbWVUeXBlLmdldCgpLCByZXF1ZXN0LT5yZXF1ZXN0SUQpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25zdHJ1Y3Rz
IGEgRXdrX1VybF9TY2hlbWVfUmVxdWVzdC4KKyAqLworRXdrX1VybF9TY2hlbWVfUmVxdWVzdCog
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgcmVxdWVz
dE1hbmFnZXIsIFdLVVJMUmVmIHVybCwgdWludDY0X3QgcmVxdWVzdElEKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0TWFuYWdlciwgMCk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CisKKyAgICByZXR1cm4gbmV3IEV3a19V
cmxfU2NoZW1lX1JlcXVlc3QocmVxdWVzdE1hbmFnZXIsIHRvSW1wbCh1cmwpLT5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCByZXF1ZXN0SUQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNGNiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgKQEAg
LTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdr
X3VybF9zY2hlbWVfcmVxdWVzdC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBVUkwg
c2NoZW1lIHJlcXVlc3QgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9zY2hlbWVfcmVxdWVz
dF9oCisjZGVmaW5lIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaAorCisjaW5jbHVkZSA8RWluYS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqLwordHlwZWRlZiBz
dHJ1Y3QgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdDsKKwor
LyoqCisgKiBJbmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0
LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHRoZSBVUkwgc2NoZW1lIHJlcXVlc3Qgb2JqZWN0IHRv
IGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxfc2No
ZW1lX3JlcXVlc3RfcmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioK
KyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QsIHBv
c3NpYmx5IGZyZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGl0J3Mg
cmVhY2hlZCAwLCB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBwYXJh
bSByZXF1ZXN0IHRoZSBVUkwgcmVxdWVzdCBvYmplY3QgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5j
ZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91bnJlZihFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgVVJMIHNj
aGVtZSBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2Jq
ZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBzY2hlbWUgcG9pbnRlciwgdGhh
dCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQg
dG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAg
c2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICog
ICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCk7
CisKKy8qKgorICogUXVlcnkgdGhlIFVSTCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJh
bSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVS
TCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAg
ICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJs
ZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAg
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJl
X2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3
a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgcGF0aCBwYXJ0IG9mIHRoZSBVUkwgZm9y
IHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBx
dWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBwYXRoIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5V
TEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3Ry
aW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYg
c29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYo
KSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVw
KCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wYXRoX2dl
dChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBGaW5p
c2ggYSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGJ5IHNldHRpbmcgdGhlIGNvbnRlbnQgb2YgdGhl
IHJlcXVlc3QgYW5kIGl0cyBtaW1lIHR5cGUuCisgKgorICogQHBhcmFtIHJlcXVlc3QgYSBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0LgorICogQHBhcmFtIGNvbnRlbnRfZGF0YSB0aGUgZGF0YSBjb250
ZW50IG9mIHRoZSByZXF1ZXN0IChtYXkgYmUgJWMgTlVMTCBpZiB0aGUgY29udGVudCBpcyBlbXB0
eSkuCisgKiBAcGFyYW0gY29udGVudF9sZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgQGEgY29udGVu
dF9kYXRhLgorICogQHBhcmFtIG1pbWVfdHlwZSB0aGUgY29udGVudCB0eXBlIG9mIHRoZSBzdHJl
YW0gb3IgJWMgTlVMTCBpZiBub3Qga25vd24KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3VybF9z
Y2hlbWVfcmVxdWVzdF9maW5pc2goY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVz
dCwgdm9pZCAqY29udGVudF9kYXRhLCB1bnNpZ25lZCBpbnQgY29udGVudF9sZW5ndGgsIGNvbnN0
IGNoYXIgKm1pbWVfdHlwZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVkZDQxNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLQmFzZS5oIgor
Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OworCitFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0KiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhXS1NvdXBSZXF1
ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisKK3VpbnQ2NF90
IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaWRfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVl
c3QqIHJlcXVlc3QpOworCisjZW5kaWYgLy8gZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRl
X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152244</attachid>
            <date>2012-07-13 06:34:49 -0700</date>
            <delta_ts>2012-07-13 10:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager_client.patch</filename>
            <type>text/plain</type>
            <size>28677</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOTk0ZmJmLi5mY2YxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyOjpfRXdrX1VybF9TY2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3Rf
dW5yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldCk6CisgICAgICAgIChld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfaWRfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKwog
MjAxMi0wNy0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViS2l0MiBjcmFzaCB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNWU1NGU2Li44ZTk0NDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMzcsMTEgKzM3LDEzIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKQEAgLTE3MCw2ICsxNzIsNyBAQCBD
T05GSUdVUkVfRklMRShlZmwvZXdlYmtpdDIucGMuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJL
aXQyL2VmbC9ld2Via2l0Mi5wYyBATwogU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIgogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgiCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDhmYTkwYWUuLmI2YmM0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1
ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIK
ICNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CmluZGV4IGUxY2NmZjIuLjU3M2EyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDIwICsyMyw1NCBAQAogCiAjaW5jbHVk
ZSAiQmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tT
dHJpbmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAorc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKKyAgICBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOwor
CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIoKQorICAgICAgICA6IGNhbGxiYWNrKDApCisg
ICAgICAgICwgdXNlckRhdGEoMCkKKyAgICB7IH0KKworICAgIF9Fd2tfVXJsX1NjaGVtZV9IYW5k
bGVyKEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQor
ICAgICAgICA6IGNhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRh
KQorICAgIHsgfQorfTsKKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgX0V3a19VcmxfU2NoZW1l
X0hhbmRsZXI+IFVSTFNjaGVtZUhhbmRsZXJNYXA7CisKIHN0cnVjdCBfRXdrX0NvbnRleHQgewog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dDsKKwogI2lmIEVOQUJMRShCQVRU
RVJZX1NUQVRVUykKICAgICBSZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7
CiAjZW5kaWYKIAorICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiByZXF1
ZXN0TWFuYWdlcjsKKyAgICBVUkxTY2hlbWVIYW5kbGVyTWFwIHVybFNjaGVtZUhhbmRsZXJzOwor
CiAgICAgX0V3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgICAgICA6IGNv
bnRleHQoY29udGV4dFJlZikKLSAgICB7IH0KKyAgICAgICAgLCByZXF1ZXN0TWFuYWdlcihXS0Nv
bnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoY29udGV4dFJlZikpCisgICAgeworI2lmIEVOQUJM
RShCQVRURVJZX1NUQVRVUykKKyAgICAgICAgV0tCYXR0ZXJ5TWFuYWdlclJlZiB3a0JhdHRlcnlN
YW5hZ2VyID0gV0tDb250ZXh0R2V0QmF0dGVyeU1hbmFnZXIoY29udGV4dFJlZik7CisgICAgICAg
IGJhdHRlcnlQcm92aWRlciA9IEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKHdrQmF0dGVyeU1hbmFn
ZXIpOworI2VuZGlmCisKKyAgICAgICAgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVu
dF9hdHRhY2godGhpcyk7CisgICAgfQogfTsKIAogV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dL
Q29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCkBAIC00NCwxNyArNzgs
MzkgQEAgV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0Nv
bnRleHQqIGV3a0NvbnRleHQpCiAgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXdrX0NvbnRleHQqIGNyZWF0ZURlZmF1bHRFd2tDb250ZXh0
KCkKKy8qKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgcmVxdWVzdCBtYW5hZ2VyIGZv
ciBAYSBld2tDb250ZXh0LgorICoKKyAqIEBwYXJhbSBld2tDb250ZXh0IGEgI0V3a19Db250ZXh0
IG9iamVjdC4KKyAqLworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSAgICBXS0Nv
bnRleHRSZWYgd2tDb250ZXh0ID0gV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsK
LSAgICBFd2tfQ29udGV4dCogZXdrQ29udGV4dCA9IG5ldyBFd2tfQ29udGV4dCh3a0NvbnRleHQp
OworICAgIHJldHVybiBld2tDb250ZXh0LT5yZXF1ZXN0TWFuYWdlci5nZXQoKTsKK30KIAotI2lm
IEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBXS0JhdHRlcnlNYW5hZ2VyUmVmIHdrQmF0dGVy
eU1hbmFnZXIgPSBXS0NvbnRleHRHZXRCYXR0ZXJ5TWFuYWdlcih3a0NvbnRleHQpOwotICAgIGV3
a0NvbnRleHQtPmJhdHRlcnlQcm92aWRlciA9IEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKHdrQmF0
dGVyeU1hbmFnZXIpOwotI2VuZGlmCisvKioKKyAqIEBpbnRlcm5hbAorICogQSBuZXcgVVJMIHJl
cXVlc3Qgd2FzIHJlY2VpdmVkLgorICoKKyAqIEBwYXJhbSBld2tDb250ZXh0IGEgI0V3a19Db250
ZXh0IG9iamVjdC4KKyAqIEBwYXJhbSBzY2hlbWVSZXF1ZXN0IGEgI0V3a19VcmxfU2NoZW1lX1Jl
cXVlc3Qgb2JqZWN0LgorICovCit2b2lkIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVxdWVzdF9y
ZWNlaXZlZChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCog
c2NoZW1lUmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihld2tDb250
ZXh0KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzY2hlbWVSZXF1ZXN0KTsKKwor
ICAgIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyIGhhbmRsZXIgPSBld2tDb250ZXh0LT51cmxTY2hl
bWVIYW5kbGVycy5nZXQoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KHNjaGVtZVJl
cXVlc3QpKTsKKyAgICBpZiAoIWhhbmRsZXIuY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIGhhbmRsZXIuY2FsbGJhY2soc2NoZW1lUmVxdWVzdCwgaGFuZGxlci51c2VyRGF0YSk7Cit9
CiAKLSAgICByZXR1cm4gZXdrQ29udGV4dDsKK3N0YXRpYyBpbmxpbmUgRXdrX0NvbnRleHQqIGNy
ZWF0ZURlZmF1bHRFd2tDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gbmV3IEV3a19Db250ZXh0KFdL
Q29udGV4dEdldFNoYXJlZFByb2Nlc3NDb250ZXh0KCkpOwogfQogCiBFd2tfQ29udGV4dCogZXdr
X2NvbnRleHRfZGVmYXVsdF9nZXQoKQpAQCAtNjMsMyArMTE5LDE2IEBAIEV3a19Db250ZXh0KiBl
d2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiAKICAgICByZXR1cm4gZGVmYXVsdENvbnRleHQ7CiB9
CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0
KiBld2tDb250ZXh0LCBjb25zdCBjaGFyKiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3Rf
Q2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChld2tDb250ZXh0LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNjaGVtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChjYWxsYmFjaywgZmFsc2UpOworCisgICAgZXdrQ29udGV4dC0+dXJsU2NoZW1lSGFuZGxl
cnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIo
Y2FsbGJhY2ssIHVzZXJEYXRhKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrU2No
ZW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjaGVtZSkpOworICAg
IFdLU291cFJlcXVlc3RNYW5hZ2VyUmVnaXN0ZXJVUklTY2hlbWUoZXdrQ29udGV4dC0+cmVxdWVz
dE1hbmFnZXIuZ2V0KCksIHdrU2NoZW1lLmdldCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXgg
Nzk0ZDA1Mi4uOTliMWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIGV3a19jb250ZXh0X2gK
ICNkZWZpbmUgZXdrX2NvbnRleHRfaAogCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVz
dC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zOSwxMiAr
NDAsNjEgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0Nv
bnRleHQ7CiAKIC8qKgorICogQHR5cGVkZWYgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0X0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdp
dGggZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3RlcigpLgorICovCit0eXBlZGVmIHZvaWQg
KCpFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiKSAoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVx
dWVzdCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBHZXRzIGRlZmF1bHQgRXdrX0NvbnRl
eHQgaW5zdGFuY2UuCiAgKgogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3QuCiAgKi8KIEVB
UEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CiAKKy8qKgorICogUmVn
aXN0ZXIgQGEgc2NoZW1lIGluIEBhIGNvbnRleHQuCisgKgorICogV2hlbiBhbiBVUkwgcmVxdWVz
dCB3aXRoIEBhIHNjaGVtZSBpcyBtYWRlIGluIHRoZSAjRXdrX0NvbnRleHQsIHRoZSBjYWxsYmFj
aworICogZnVuY3Rpb24gcHJvdmlkZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhICNFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0LgorICoKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGhhbmRsZSBVUkwgc2NoZW1l
IHJlcXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieSBjYWxsaW5nIGV3a191cmxfc2NoZW1lX3JlZigp
IG9uIHRoZQorICogI0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgYW5kIGNhbGxpbmcgZXdrX3VybF9z
Y2hlbWVfcmVxdWVzdF9maW5pc2goKSBsYXRlciB3aGVuIHRoZSBkYXRhIG9mCisgKiB0aGUgcmVx
dWVzdCBpcyBhdmFpbGFibGUuCisgKgorICogQHBhcmFtIGNvbnRleHQgYSAjRXdrX0NvbnRleHQg
b2JqZWN0LgorICogQHBhcmFtIHNjaGVtZSB0aGUgbmV0d29yayBzY2hlbWUgdG8gcmVnaXN0ZXIK
KyAqIEBwYXJhbSBjYWxsYmFjayB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYW4gVVJM
IHJlcXVlc3Qgd2l0aCBAYSBzY2hlbWUgaXMgbWFkZS4KKyAqIEBwYXJhbSB1c2VyX2RhdGEgZGF0
YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogQGNvZGUKKyAqIHN0YXRpYyB2
b2lkIGFib3V0X3VyaV9zY2hlbWVfcmVxdWVzdF9jYihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpy
ZXF1ZXN0LCB2b2lkICp1c2VyX2RhdGEpCisgKiB7CisgKiAgICAgY29uc3QgY2hhciAqcGF0aDsK
KyAqICAgICBjaGFyICpjb250ZW50c19kYXRhID0gTlVMTDsKKyAqICAgICB1bnNpZ25lZCBpbnQg
Y29udGVudHNfbGVuZ3RoID0gMDsKKyAqCisgKiAgICAgcGF0aCA9IGV3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcGF0aF9nZXQocmVxdWVzdCk7CisgKiAgICAgaWYgKCFzdHJjbXAocGF0aCwgInBsdWdp
bnMiKSkgeworICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUg
Y29udGVudHMgb2YgcGx1Z2lucyBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29u
dGVudHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgsICJtZW1vcnkiKSkg
eworICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUgY29udGVu
dHMgb2YgbWVtb3J5IGFib3V0IHBhZ2UsIGFuZCBzZXQgaXRzIGxlbmd0aCB0byBjb250ZW50c19s
ZW5ndGgKKyAqICAgICB9IGVsc2UgaWYgKCFzdHJjbXAocGF0aCwgImFwcGxpY2F0aW9ucyIpKSB7
CisgKiAgICAgICAgIC8vIEluaXRpYWxpemUgY29udGVudHNfZGF0YSB3aXRoIHRoZSBjb250ZW50
cyBvZiBhcHBsaWNhdGlvbiBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29udGVu
dHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIHsKKyAqICAgICAgICAgRWluYV9TdHJidWYgKmJ1ZiA9
IGVpbmFfc3RyYnVmX25ldygpOworICogICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJpbnRm
KGJ1ZiwgIiZsdDtodG1sJmd0OyZsdDtib2R5Jmd0OyZsdDtwJmd0O0ludmFsaWQgYWJvdXQ6JXMg
cGFnZSZsdDsvcCZndDsmbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0OyIsIHBhdGgpOworICogICAg
ICAgICBjb250ZW50c19kYXRhID0gZWluYV9zdHJidWZfc3RyaW5nX3N0ZWFsKGJ1Zik7CisgKiAg
ICAgICAgIGNvbnRlbnRzX2xlbmd0aCA9IHN0cmxlbihjb250ZW50cyk7CisgKiAgICAgICAgIGVp
bmFfc3RyYnVmX2ZyZWUoYnVmKTsKKyAqICAgICB9CisgKiAgICAgZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9maW5pc2gocmVxdWVzdCwgY29udGVudHNfZGF0YSwgY29udGVudHNfbGVuZ3RoLCAidGV4
dC9odG1sIik7CisgKiAgICAgZnJlZShjb250ZW50c19kYXRhKTsKKyAqIH0KKyAqIEBlbmRjb2Rl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoRXdr
X0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IGNoYXIgKnNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVx
dWVzdF9DYiBjYWxsYmFjaywgdm9pZCAqdXNlcl9kYXRhKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCA4MTNhOTQyLi5kNzhlMWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0
ZS5oCkBAIC0yMyw3ICsyMywxMCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IF9F
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7CiAKIFdLQ29udGV4
dFJlZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3a19Db250ZXh0Kik7CitXS1Nv
dXBSZXF1ZXN0TWFuYWdlclJlZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnN0
IEV3a19Db250ZXh0Kik7Cit2b2lkIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVxdWVzdF9yZWNl
aXZlZChFd2tfQ29udGV4dCosIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqKTsKIAogI2VuZGlmIC8v
IGV3a19jb250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJf
Y2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjJiZDM2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV0tCYXNlLmgi
CisjaW5jbHVkZSAiV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVu
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgorI2luY2x1
ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgorCitzdGF0aWMgaW5saW5lIEV3
a19Db250ZXh0KiB0b0V3a0NvbnRleHQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KFdLU291cFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCB1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdCogc2NoZW1lUmVxdWVzdCA9IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3
KHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgdXJsUmVmLCByZXF1ZXN0SUQpOworICAgIGV3a19jb250
ZXh0X3VybF9zY2hlbWVfcmVxdWVzdF9yZWNlaXZlZCh0b0V3a0NvbnRleHQoY2xpZW50SW5mbyks
IHNjaGVtZVJlcXVlc3QpOworICAgIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoc2NoZW1l
UmVxdWVzdCk7Cit9CisKK3ZvaWQgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9h
dHRhY2goRXdrX0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQgd2tSZXF1ZXN0TWFuYWdlckNsaWVudDsKKyAgICBtZW1zZXQoJndrUmVxdWVzdE1hbmFn
ZXJDbGllbnQsIDAsIHNpemVvZihXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCkpOworCisgICAg
d2tSZXF1ZXN0TWFuYWdlckNsaWVudC52ZXJzaW9uID0ga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50Q3VycmVudFZlcnNpb247CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5jbGllbnRJbmZv
ID0gY29udGV4dDsKKyAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmRpZFJlY2VpdmVVUklSZXF1
ZXN0ID0gZGlkUmVjZWl2ZVVSSVJlcXVlc3Q7CisKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclNl
dENsaWVudChld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnRleHQpLCAmd2tSZXF1
ZXN0TWFuYWdlckNsaWVudCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFu
YWdlcl9jbGllbnRfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY4OWJiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X3JlcXVlc3Rf
bWFuYWdlcl9jbGllbnRfcHJpdmF0ZV9oCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBF
d2tfQ29udGV4dDsKKwordm9pZCBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X2F0
dGFjaChFd2tfQ29udGV4dCogY29udGV4dCk7CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9yZXF1
ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGE1N2U4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJX
S0RhdGEuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU291cFJlcXVl
c3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAg
X0V3a19VcmxfU2NoZW1lX1JlcXVlc3QKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBVUkwgc2No
ZW1lIHJlcXVlc3QgZGF0YS4KKyAqLworc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IHsK
KyAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUg
b2JqZWN0ICovCisgICAgV0tSZXRhaW5QdHI8V0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY+IHdrUmVx
dWVzdE1hbmFnZXI7CisgICAgY29uc3QgY2hhciogdXJsOworICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RDsKKyAgICBjb25zdCBjaGFyKiBzY2hlbWU7CisgICAgY29uc3QgY2hhciogcGF0aDsKKworICAg
IF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIG1hbmFnZXIs
IGNvbnN0IGNoYXIqIF91cmwsIHVpbnQ2NF90IF9yZXF1ZXN0SUQpCisgICAgICAgIDogX19yZWYo
MSkKKyAgICAgICAgLCB3a1JlcXVlc3RNYW5hZ2VyKG1hbmFnZXIpCisgICAgICAgICwgdXJsKGVp
bmFfc3RyaW5nc2hhcmVfYWRkKF91cmwpKQorICAgICAgICAsIHJlcXVlc3RJRChfcmVxdWVzdElE
KQorICAgIHsKKyAgICAgICAgU291cFVSSSogc291cFVSSSA9IHNvdXBfdXJpX25ldyhfdXJsKTsK
KyAgICAgICAgc2NoZW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc291cFVSSS0+c2NoZW1lKTsK
KyAgICAgICAgcGF0aCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNvdXBVUkktPnBhdGgpOworICAg
ICAgICBzb3VwX3VyaV9mcmVlKHNvdXBVUkkpOworICAgIH0KK307CisKK3ZvaWQgZXdrX3VybF9z
Y2hlbWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKKyAgICArK3JlcXVlc3QtPl9f
cmVmOworfQorCit2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdW5yZWYoRXdrX1VybF9TY2hl
bWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihy
ZXF1ZXN0KTsKKworICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQorICAgICAgICByZXR1cm47CisK
KyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXF1ZXN0LT51cmwpOworICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHJlcXVlc3QtPnNjaGVtZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocmVx
dWVzdC0+cGF0aCk7CisgICAgZGVsZXRlIHJlcXVlc3Q7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191
cmxfc2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5zY2hlbWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3
a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT51cmw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCog
cmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwg
MCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cGF0aDsKK30KKworLyoqCisgKiBAaW50ZXJuYWwK
KyAqIFJldHVybnMgdGhlICNFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGlkZW50aWZpZXIuCisgKi8K
K3VpbnQ2NF90IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaWRfZ2V0KGNvbnN0IEV3a19VcmxfU2No
ZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnJlcXVlc3RJRDsKK30KKwor
RWluYV9Cb29sIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKGNvbnN0IEV3a19VcmxfU2No
ZW1lX1JlcXVlc3QqIHJlcXVlc3QsIHZvaWQqIGNvbnRlbnREYXRhLCB1bnNpZ25lZCBpbnQgY29u
dGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLRGF0
YVJlZj4gd2tEYXRhKEFkb3B0V0ssIFdLRGF0YUNyZWF0ZShjb250ZW50TGVuZ3RoID8gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oY29udGVudERhdGEpIDogMCwgY29udGVu
dExlbmd0aCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a01pbWVUeXBlID0gbWlt
ZVR5cGUgPyBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1pbWVUeXBlKSkg
OiAwOworCisgICAgLy8gSW4gY2FzZSBvZiBlbXB0eSByZXBseSBhbiBlbXB0eSBXS0RhdGFSZWYg
aXMgc2VudCB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZEhh
bmRsZVVSSVJlcXVlc3QocmVxdWVzdC0+d2tSZXF1ZXN0TWFuYWdlci5nZXQoKSwgd2tEYXRhLmdl
dCgpLCBjb250ZW50TGVuZ3RoLCB3a01pbWVUeXBlLmdldCgpLCByZXF1ZXN0LT5yZXF1ZXN0SUQp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25zdHJ1
Y3RzIGEgRXdrX1VybF9TY2hlbWVfUmVxdWVzdC4KKyAqLworRXdrX1VybF9TY2hlbWVfUmVxdWVz
dCogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgcmVx
dWVzdE1hbmFnZXIsIFdLVVJMUmVmIHVybCwgdWludDY0X3QgcmVxdWVzdElEKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0TWFuYWdlciwgMCk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CisKKyAgICByZXR1cm4gbmV3IEV3
a19VcmxfU2NoZW1lX1JlcXVlc3QocmVxdWVzdE1hbmFnZXIsIHRvSW1wbCh1cmwpLT5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0SUQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNGNiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgK
QEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAg
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBV
Ukwgc2NoZW1lIHJlcXVlc3QgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9oCisjZGVmaW5lIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaAorCisjaW5jbHVkZSA8RWlu
YS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBD
cmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqLwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdDsK
KworLyoqCisgKiBJbmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2Jq
ZWN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHRoZSBVUkwgc2NoZW1lIHJlcXVlc3Qgb2JqZWN0
IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisv
KioKKyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3Qs
IHBvc3NpYmx5IGZyZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGl0
J3MgcmVhY2hlZCAwLCB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBw
YXJhbSByZXF1ZXN0IHRoZSBVUkwgcmVxdWVzdCBvYmplY3QgdG8gZGVjcmVhc2UgdGhlIHJlZmVy
ZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91bnJlZihF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgVVJM
IHNjaGVtZSBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qg
b2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBzY2hlbWUgcG9pbnRlciwg
dGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRl
ZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAg
ICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgor
ICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVz
dCk7CisKKy8qKgorICogUXVlcnkgdGhlIFVSTCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBw
YXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhl
IFVSTCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAg
ICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3Nz
aWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisg
KiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3No
YXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIg
KmV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgcGF0aCBwYXJ0IG9mIHRoZSBVUkwg
Zm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0
byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBwYXRoIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBj
IE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFf
c3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNl
bGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9y
ZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3Ry
ZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wYXRo
X2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBG
aW5pc2ggYSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGJ5IHNldHRpbmcgdGhlIGNvbnRlbnQgb2Yg
dGhlIHJlcXVlc3QgYW5kIGl0cyBtaW1lIHR5cGUuCisgKgorICogQHBhcmFtIHJlcXVlc3QgYSBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0LgorICogQHBhcmFtIGNvbnRlbnRfZGF0YSB0aGUgZGF0YSBj
b250ZW50IG9mIHRoZSByZXF1ZXN0IChtYXkgYmUgJWMgTlVMTCBpZiB0aGUgY29udGVudCBpcyBl
bXB0eSkuCisgKiBAcGFyYW0gY29udGVudF9sZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgQGEgY29u
dGVudF9kYXRhLgorICogQHBhcmFtIG1pbWVfdHlwZSB0aGUgY29udGVudCB0eXBlIG9mIHRoZSBz
dHJlYW0gb3IgJWMgTlVMTCBpZiBub3Qga25vd24KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9maW5pc2goY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVx
dWVzdCwgdm9pZCAqY29udGVudF9kYXRhLCB1bnNpZ25lZCBpbnQgY29udGVudF9sZW5ndGgsIGNv
bnN0IGNoYXIgKm1pbWVfdHlwZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvLyBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVz
dF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVkZDQxNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKKyNkZWZp
bmUgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLQmFzZS5o
IgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OworCitF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhXS1NvdXBS
ZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisKK3VpbnQ2
NF90IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaWRfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3QqIHJlcXVlc3QpOworCisjZW5kaWYgLy8gZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2
YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152303</attachid>
            <date>2012-07-13 10:58:38 -0700</date>
            <delta_ts>2012-07-15 00:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager.patch</filename>
            <type>text/plain</type>
            <size>28850</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2IyOGRkLi5lODRhZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyKToKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyOjpfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKGV3a191
cmxfc2NoZW1lX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3Rf
dW5yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfdXJsX2dldCk6CisgICAgICAgIChld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfaWRfZ2V0KToKKyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKToKKyAg
ICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKwog
MjAxMi0wNy0xMyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFByb3BlciBoYW5kbGluZyBvZiBFTkFCTEVfQVBJX1RF
U1RTIGJ1aWxkIG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5ODcwZTBlLi43
YmE0ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcsMTEgKzM3LDEzIEBAIExJ
U1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQ
cm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9z
ZXJ2aWNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGll
bnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAK
QEAgLTE3NSw2ICsxNzcsNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggOGZhOTBhZS4uYjZiYzRkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgor
I2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5o
IgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAKaW5kZXggZTFjY2ZmMi4uNTczYTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjMsMjAgKzIzLDU0IEBACiAKICNpbmNs
dWRlICJCYXR0ZXJ5UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRl
ICJXS0NvbnRleHRTb3VwLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJX
S1N0cmluZy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCitzdHJ1Y3QgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIgeworICAg
IEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRhdGE7
CisKKyAgICBfRXdrX1VybF9TY2hlbWVfSGFuZGxlcigpCisgICAgICAgIDogY2FsbGJhY2soMCkK
KyAgICAgICAgLCB1c2VyRGF0YSgwKQorICAgIHsgfQorCisgICAgX0V3a19VcmxfU2NoZW1lX0hh
bmRsZXIoRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEp
CisgICAgICAgIDogY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgdXNlckRhdGEodXNlckRh
dGEpCisgICAgeyB9Cit9OworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBfRXdrX1VybF9TY2hl
bWVfSGFuZGxlcj4gVVJMU2NoZW1lSGFuZGxlck1hcDsKKwogc3RydWN0IF9Fd2tfQ29udGV4dCB7
CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0OworCiAjaWYgRU5BQkxFKEJB
VFRFUllfU1RBVFVTKQogICAgIFJlZlB0cjxCYXR0ZXJ5UHJvdmlkZXI+IGJhdHRlcnlQcm92aWRl
cjsKICNlbmRpZgogCisgICAgV0tSZXRhaW5QdHI8V0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY+IHJl
cXVlc3RNYW5hZ2VyOworICAgIFVSTFNjaGVtZUhhbmRsZXJNYXAgdXJsU2NoZW1lSGFuZGxlcnM7
CisKICAgICBfRXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgICAgIDog
Y29udGV4dChjb250ZXh0UmVmKQotICAgIHsgfQorICAgICAgICAsIHJlcXVlc3RNYW5hZ2VyKFdL
Q29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihjb250ZXh0UmVmKSkKKyAgICB7CisjaWYgRU5B
QkxFKEJBVFRFUllfU1RBVFVTKQorICAgICAgICBXS0JhdHRlcnlNYW5hZ2VyUmVmIHdrQmF0dGVy
eU1hbmFnZXIgPSBXS0NvbnRleHRHZXRCYXR0ZXJ5TWFuYWdlcihjb250ZXh0UmVmKTsKKyAgICAg
ICAgYmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUod2tCYXR0ZXJ5TWFu
YWdlcik7CisjZW5kaWYKKworICAgICAgICBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xp
ZW50X2F0dGFjaCh0aGlzKTsKKyAgICB9CiB9OwogCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRf
V0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKQEAgLTQ0LDE3ICs3
OCwzOSBAQCBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tf
Q29udGV4dCogZXdrQ29udGV4dCkKICAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5nZXQo
KTsKIH0KIAotc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdEV3a0NvbnRl
eHQoKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSByZXF1ZXN0IG1hbmFnZXIg
Zm9yIEBhIGV3a0NvbnRleHQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0NvbnRl
eHQgb2JqZWN0LgorICovCitXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBld2tfY29udGV4dF9yZXF1
ZXN0X21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogewotICAgIFdL
Q29udGV4dFJlZiB3a0NvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgp
OwotICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0ID0gbmV3IEV3a19Db250ZXh0KHdrQ29udGV4
dCk7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyLmdldCgpOworfQogCi0j
aWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdLQmF0dGVyeU1hbmFnZXJSZWYgd2tCYXR0
ZXJ5TWFuYWdlciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2VyKHdrQ29udGV4dCk7Ci0gICAg
ZXdrQ29udGV4dC0+YmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUod2tC
YXR0ZXJ5TWFuYWdlcik7Ci0jZW5kaWYKKy8qKgorICogQGludGVybmFsCisgKiBBIG5ldyBVUkwg
cmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0Nv
bnRleHQgb2JqZWN0LgorICogQHBhcmFtIHNjaGVtZVJlcXVlc3QgYSAjRXdrX1VybF9TY2hlbWVf
UmVxdWVzdCBvYmplY3QuCisgKi8KK3ZvaWQgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZXF1ZXN0
X3JlY2VpdmVkKEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiBzY2hlbWVSZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0Nv
bnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNjaGVtZVJlcXVlc3QpOwor
CisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIgaGFuZGxlciA9IGV3a0NvbnRleHQtPnVybFNj
aGVtZUhhbmRsZXJzLmdldChld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3NjaGVtZV9nZXQoc2NoZW1l
UmVxdWVzdCkpOworICAgIGlmICghaGFuZGxlci5jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaGFuZGxlci5jYWxsYmFjayhzY2hlbWVSZXF1ZXN0LCBoYW5kbGVyLnVzZXJEYXRhKTsK
K30KIAotICAgIHJldHVybiBld2tDb250ZXh0Oworc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCog
Y3JlYXRlRGVmYXVsdEV3a0NvbnRleHQoKQoreworICAgIHJldHVybiBuZXcgRXdrX0NvbnRleHQo
V0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKSk7CiB9CiAKIEV3a19Db250ZXh0KiBl
d2tfY29udGV4dF9kZWZhdWx0X2dldCgpCkBAIC02MywzICsxMTksMTYgQEAgRXdrX0NvbnRleHQq
IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIAogICAgIHJldHVybiBkZWZhdWx0Q29udGV4dDsK
IH0KKworRWluYV9Cb29sIGV3a19jb250ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoRXdrX0NvbnRl
eHQqIGV3a0NvbnRleHQsIGNvbnN0IGNoYXIqIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVz
dF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGV3a0NvbnRleHQsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc2NoZW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNhbGxiYWNrLCBmYWxzZSk7CisKKyAgICBld2tDb250ZXh0LT51cmxTY2hlbWVIYW5k
bGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBfRXdrX1VybF9TY2hlbWVfSGFuZGxl
cihjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tT
Y2hlbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NoZW1lKSk7Cisg
ICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShld2tDb250ZXh0LT5yZXF1
ZXN0TWFuYWdlci5nZXQoKSwgd2tTY2hlbWUuZ2V0KCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRl
eCA3OTRkMDUyLi45OWIxYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgZXdrX2NvbnRleHRf
aAogI2RlZmluZSBld2tfY29udGV4dF9oCiAKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTM5LDEy
ICs0MCw2MSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tf
Q29udGV4dDsKIAogLyoqCisgKiBAdHlwZWRlZiBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIEV3
a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IKKyAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ug
d2l0aCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKCkuCisgKi8KK3R5cGVkZWYgdm9p
ZCAoKkV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IpIChFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpy
ZXF1ZXN0LCB2b2lkICp1c2VyX2RhdGEpOworCisvKioKICAqIEdldHMgZGVmYXVsdCBFd2tfQ29u
dGV4dCBpbnN0YW5jZS4KICAqCiAgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9iamVjdC4KICAqLwog
RUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKIAorLyoqCisgKiBS
ZWdpc3RlciBAYSBzY2hlbWUgaW4gQGEgY29udGV4dC4KKyAqCisgKiBXaGVuIGFuIFVSTCByZXF1
ZXN0IHdpdGggQGEgc2NoZW1lIGlzIG1hZGUgaW4gdGhlICNFd2tfQ29udGV4dCwgdGhlIGNhbGxi
YWNrCisgKiBmdW5jdGlvbiBwcm92aWRlZCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgI0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3QuCisgKgorICogSXQgaXMgcG9zc2libGUgdG8gaGFuZGxlIFVSTCBzY2hl
bWUgcmVxdWVzdHMgYXN5bmNocm9ub3VzbHksIGJ5IGNhbGxpbmcgZXdrX3VybF9zY2hlbWVfcmVm
KCkgb24gdGhlCisgKiAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBhbmQgY2FsbGluZyBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaCgpIGxhdGVyIHdoZW4gdGhlIGRhdGEgb2YKKyAqIHRoZSBy
ZXF1ZXN0IGlzIGF2YWlsYWJsZS4KKyAqCisgKiBAcGFyYW0gY29udGV4dCBhICNFd2tfQ29udGV4
dCBvYmplY3QuCisgKiBAcGFyYW0gc2NoZW1lIHRoZSBuZXR3b3JrIHNjaGVtZSB0byByZWdpc3Rl
cgorICogQHBhcmFtIGNhbGxiYWNrIHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhbiBV
UkwgcmVxdWVzdCB3aXRoIEBhIHNjaGVtZSBpcyBtYWRlLgorICogQHBhcmFtIHVzZXJfZGF0YSBk
YXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rpb24KKyAqCisgKiBAY29kZQorICogc3RhdGlj
IHZvaWQgYWJvdXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2NiKEV3a19VcmxfU2NoZW1lX1JlcXVlc3Qg
KnJlcXVlc3QsIHZvaWQgKnVzZXJfZGF0YSkKKyAqIHsKKyAqICAgICBjb25zdCBjaGFyICpwYXRo
OworICogICAgIGNoYXIgKmNvbnRlbnRzX2RhdGEgPSBOVUxMOworICogICAgIHVuc2lnbmVkIGlu
dCBjb250ZW50c19sZW5ndGggPSAwOworICoKKyAqICAgICBwYXRoID0gZXdrX3VybF9zY2hlbWVf
cmVxdWVzdF9wYXRoX2dldChyZXF1ZXN0KTsKKyAqICAgICBpZiAoIXN0cmNtcChwYXRoLCAicGx1
Z2lucyIpKSB7CisgKiAgICAgICAgIC8vIEluaXRpYWxpemUgY29udGVudHNfZGF0YSB3aXRoIHRo
ZSBjb250ZW50cyBvZiBwbHVnaW5zIGFib3V0IHBhZ2UsIGFuZCBzZXQgaXRzIGxlbmd0aCB0byBj
b250ZW50c19sZW5ndGgKKyAqICAgICB9IGVsc2UgaWYgKCFzdHJjbXAocGF0aCwgIm1lbW9yeSIp
KSB7CisgKiAgICAgICAgIC8vIEluaXRpYWxpemUgY29udGVudHNfZGF0YSB3aXRoIHRoZSBjb250
ZW50cyBvZiBtZW1vcnkgYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRz
X2xlbmd0aAorICogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAiYXBwbGljYXRpb25zIikp
IHsKKyAqICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhlIGNvbnRl
bnRzIG9mIGFwcGxpY2F0aW9uIGFib3V0IHBhZ2UsIGFuZCBzZXQgaXRzIGxlbmd0aCB0byBjb250
ZW50c19sZW5ndGgKKyAqICAgICB9IGVsc2UgeworICogICAgICAgICBFaW5hX1N0cmJ1ZiAqYnVm
ID0gZWluYV9zdHJidWZfbmV3KCk7CisgKiAgICAgICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmlu
dGYoYnVmLCAiJmx0O2h0bWwmZ3Q7Jmx0O2JvZHkmZ3Q7Jmx0O3AmZ3Q7SW52YWxpZCBhYm91dDol
cyBwYWdlJmx0Oy9wJmd0OyZsdDsvYm9keSZndDsmbHQ7L2h0bWwmZ3Q7IiwgcGF0aCk7CisgKiAg
ICAgICAgIGNvbnRlbnRzX2RhdGEgPSBlaW5hX3N0cmJ1Zl9zdHJpbmdfc3RlYWwoYnVmKTsKKyAq
ICAgICAgICAgY29udGVudHNfbGVuZ3RoID0gc3RybGVuKGNvbnRlbnRzKTsKKyAqICAgICAgICAg
ZWluYV9zdHJidWZfZnJlZShidWYpOworICogICAgIH0KKyAqICAgICBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X2ZpbmlzaChyZXF1ZXN0LCBjb250ZW50c19kYXRhLCBjb250ZW50c19sZW5ndGgsICJ0
ZXh0L2h0bWwiKTsKKyAqICAgICBmcmVlKGNvbnRlbnRzX2RhdGEpOworICogfQorICogQGVuZGNv
ZGUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3RlcihF
d2tfQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2VyX2RhdGEpOworCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCmluZGV4IDgxM2E5NDIuLmQ3OGUxZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2
YXRlLmgKQEAgLTIzLDcgKzIzLDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OwordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdDsKIAogV0tDb250
ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqKTsKK1dL
U291cFJlcXVlc3RNYW5hZ2VyUmVmIGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9nZXQoY29u
c3QgRXdrX0NvbnRleHQqKTsKK3ZvaWQgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZXF1ZXN0X3Jl
Y2VpdmVkKEV3a19Db250ZXh0KiwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCopOwogCiAjZW5kaWYg
Ly8gZXdrX2NvbnRleHRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMmJkMzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXS0Jhc2Uu
aCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgImV3a19jb250
ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xp
ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCisjaW5j
bHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCisKK3N0YXRpYyBpbmxpbmUg
RXdrX0NvbnRleHQqIHRvRXdrQ29udGV4dChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYsIHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tfVXJs
X1NjaGVtZV9SZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0ID0gZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9u
ZXcoc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1cmxSZWYsIHJlcXVlc3RJRCk7CisgICAgZXdrX2Nv
bnRleHRfdXJsX3NjaGVtZV9yZXF1ZXN0X3JlY2VpdmVkKHRvRXdrQ29udGV4dChjbGllbnRJbmZv
KSwgc2NoZW1lUmVxdWVzdCk7CisgICAgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91bnJlZihzY2hl
bWVSZXF1ZXN0KTsKK30KKwordm9pZCBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50
X2F0dGFjaChFd2tfQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdl
ckNsaWVudCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50OworICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFu
YWdlckNsaWVudCwgMCwgc2l6ZW9mKFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50KSk7CisKKyAg
ICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LnZlcnNpb24gPSBrV0tTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmNsaWVudElu
Zm8gPSBjb250ZXh0OworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuZGlkUmVjZWl2ZVVSSVJl
cXVlc3QgPSBkaWRSZWNlaXZlVVJJUmVxdWVzdDsKKworICAgIFdLU291cFJlcXVlc3RNYW5hZ2Vy
U2V0Q2xpZW50KGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9nZXQoY29udGV4dCksICZ3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9t
YW5hZ2VyX2NsaWVudF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjg5YmJmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfcmVx
dWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0
IEV3a19Db250ZXh0OworCit2b2lkIGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRf
YXR0YWNoKEV3a19Db250ZXh0KiBjb250ZXh0KTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X3Jl
cXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYTU3ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
LmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKKworI2luY2x1ZGUg
IldLRGF0YS5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTb3VwUmVx
dWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBcc3RydWN0
ICBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdAorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIFVSTCBz
Y2hlbWUgcmVxdWVzdCBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3Qg
eworICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRo
ZSBvYmplY3QgKi8KKyAgICBXS1JldGFpblB0cjxXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZj4gd2tS
ZXF1ZXN0TWFuYWdlcjsKKyAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgdWludDY0X3QgcmVxdWVz
dElEOworICAgIGNvbnN0IGNoYXIqIHNjaGVtZTsKKyAgICBjb25zdCBjaGFyKiBwYXRoOworCisg
ICAgX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdl
ciwgY29uc3QgY2hhciogX3VybCwgdWludDY0X3QgX3JlcXVlc3RJRCkKKyAgICAgICAgOiBfX3Jl
ZigxKQorICAgICAgICAsIHdrUmVxdWVzdE1hbmFnZXIobWFuYWdlcikKKyAgICAgICAgLCB1cmwo
ZWluYV9zdHJpbmdzaGFyZV9hZGQoX3VybCkpCisgICAgICAgICwgcmVxdWVzdElEKF9yZXF1ZXN0
SUQpCisgICAgeworICAgICAgICBTb3VwVVJJKiBzb3VwVVJJID0gc291cF91cmlfbmV3KF91cmwp
OworICAgICAgICBzY2hlbWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzb3VwVVJJLT5zY2hlbWUp
OworICAgICAgICBwYXRoID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc291cFVSSS0+cGF0aCk7Cisg
ICAgICAgIHNvdXBfdXJpX2ZyZWUoc291cFVSSSk7CisgICAgfQorfTsKKwordm9pZCBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3JlZihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHJlcXVlc3QpOworICAgICsrcmVxdWVzdC0+
X19yZWY7Cit9CisKK3ZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91bnJlZihFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHJlcXVlc3QpOworCisgICAgaWYgKC0tcmVxdWVzdC0+X19yZWYpCisgICAgICAgIHJldHVybjsK
KworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlcXVlc3QtPnVybCk7CisgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwocmVxdWVzdC0+c2NoZW1lKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChy
ZXF1ZXN0LT5wYXRoKTsKKyAgICBkZWxldGUgcmVxdWVzdDsKK30KKworY29uc3QgY2hhciogZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVl
c3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnNjaGVtZTsKK30KKworY29uc3QgY2hhciog
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVl
c3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnVybDsKK30KKworY29uc3QgY2hhciogZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wYXRoX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wYXRoOworfQorCisvKioKKyAqIEBpbnRlcm5h
bAorICogUmV0dXJucyB0aGUgI0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgaWRlbnRpZmllci4KKyAq
LwordWludDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQoY29uc3QgRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cmVxdWVzdElEOworfQor
CitFaW5hX0Jvb2wgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9maW5pc2goY29uc3QgRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdCogcmVxdWVzdCwgdm9pZCogY29udGVudERhdGEsIHVuc2lnbmVkIGludCBj
b250ZW50TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgZmFsc2UpOworCisgICAgV0tSZXRhaW5QdHI8V0tE
YXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRhQ3JlYXRlKGNvbnRlbnRMZW5ndGggPyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250ZW50RGF0YSkgOiAwLCBjb250
ZW50TGVuZ3RoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWltZVR5cGUgPSBt
aW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWltZVR5cGUp
KSA6IDA7CisKKyAgICAvLyBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVtcHR5IFdLRGF0YVJl
ZiBpcyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzLgorICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlk
SGFuZGxlVVJJUmVxdWVzdChyZXF1ZXN0LT53a1JlcXVlc3RNYW5hZ2VyLmdldCgpLCB3a0RhdGEu
Z2V0KCksIGNvbnRlbnRMZW5ndGgsIHdrTWltZVR5cGUuZ2V0KCksIHJlcXVlc3QtPnJlcXVlc3RJ
RCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENvbnN0
cnVjdHMgYSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0LgorICovCitFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0KiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBy
ZXF1ZXN0TWFuYWdlciwgV0tVUkxSZWYgdXJsLCB1aW50NjRfdCByZXF1ZXN0SUQpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3RNYW5hZ2VyLCAwKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKKworICAgIHJldHVybiBuZXcg
RXdrX1VybF9TY2hlbWVfUmVxdWVzdChyZXF1ZXN0TWFuYWdlciwgdG9JbXBsKHVybCktPnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RJRCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0Y2JkNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3Qu
aApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAg
ICBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdr
IFVSTCBzY2hlbWUgcmVxdWVzdCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X2gKKyNkZWZpbmUgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9oCisKKyNpbmNsdWRlIDxF
aW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoq
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICovCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBv
YmplY3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCBzY2hlbWUgcmVxdWVzdCBvYmpl
Y3QgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCk7CisK
Ky8qKgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVj
dCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQg
aXQncyByZWFjaGVkIDAsIHRoZSBVUkwgc2NoZW1lIHJlcXVlc3QgaXMgZnJlZWQuCisgKgorICog
QHBhcmFtIHJlcXVlc3QgdGhlIFVSTCByZXF1ZXN0IG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVm
ZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3VucmVm
KEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5IHRoZSBV
Ukwgc2NoZW1lIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVz
dCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgVVJMIHNjaGVtZSBwb2ludGVy
LCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFu
dGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAg
ICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVp
bmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9y
CisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191cmxfc2No
ZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1
ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgVVJMIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICog
QHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0
aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICog
ICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBv
c3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UK
KyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hh
ciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5IHRoZSBwYXRoIHBhcnQgb2YgdGhlIFVS
TCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0
IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIHBhdGggcG9pbnRlciwgdGhhdCBtYXkgYmUg
QGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vy
c2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBz
dHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3Bh
dGhfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAq
IEZpbmlzaCBhIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgYnkgc2V0dGluZyB0aGUgY29udGVudCBv
ZiB0aGUgcmVxdWVzdCBhbmQgaXRzIG1pbWUgdHlwZS4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCBh
IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QuCisgKiBAcGFyYW0gY29udGVudF9kYXRhIHRoZSBkYXRh
IGNvbnRlbnQgb2YgdGhlIHJlcXVlc3QgKG1heSBiZSAlYyBOVUxMIGlmIHRoZSBjb250ZW50IGlz
IGVtcHR5KS4KKyAqIEBwYXJhbSBjb250ZW50X2xlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBAYSBj
b250ZW50X2RhdGEuCisgKiBAcGFyYW0gbWltZV90eXBlIHRoZSBjb250ZW50IHR5cGUgb2YgdGhl
IHN0cmVhbSBvciAlYyBOVUxMIGlmIG5vdCBrbm93bgorICovCitFQVBJIEVpbmFfQm9vbCBld2tf
dXJsX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpy
ZXF1ZXN0LCB2b2lkICpjb250ZW50X2RhdGEsIHVuc2lnbmVkIGludCBjb250ZW50X2xlbmd0aCwg
Y29uc3QgY2hhciAqbWltZV90eXBlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8vIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWRkNDE3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAorI2Rl
ZmluZSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV0tCYXNl
LmgiCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IEV3a19VcmxfU2No
ZW1lX1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7CisK
K0V3a19VcmxfU2NoZW1lX1JlcXVlc3QqIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3KFdLU291
cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKKwordWlu
dDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVf
UmVxdWVzdCogcmVxdWVzdCk7CisKKyNlbmRpZiAvLyBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3By
aXZhdGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152454</attachid>
            <date>2012-07-15 00:41:07 -0700</date>
            <delta_ts>2012-07-23 08:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91193_request_manager.patch</filename>
            <type>text/plain</type>
            <size>28970</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2IyOGRkLi5mYTQ5NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDctMTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVSTCBy
ZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAgdG8gdGhlIEV3a19D
b250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2FuIG5vdyByZWdpc3Rl
ciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBBUEkgYW5kIHByb3Zp
ZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQgY2FsbGVkIHdoZW5l
dmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBpcyBtYWRlLgorCisg
ICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBpbnRyb2R1Y2VkIHRv
CisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgdG8gdGhlIGNs
aWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5pc2ggaXQgYnkgc2V0
dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVt
ZV9IYW5kbGVyKToKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyOjpfRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAgICAgICAoX0V3a19D
b250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2
ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tDb250ZXh0KToKKyAg
ICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAoX0V3a19Vcmxf
U2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAgICAgICAgKF9Fd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0Ojp+X0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAgICAo
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF91bnJlZik6CisgICAgICAgIChld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3NjaGVtZV9nZXQp
OgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KToKKyAgICAgICAgKGV3
a191cmxfc2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVf
cmVxdWVzdF9pZF9nZXQpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9maW5pc2gp
OgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmg6IEFkZGVk
LgorCiAyMDEyLTA3LTEzICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NA
aW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUHJvcGVyIGhhbmRsaW5nIG9mIEVOQUJMRV9B
UElfVEVTVFMgYnVpbGQgb3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk4NzBl
MGUuLjdiYTRmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNywxMSArMzcsMTMg
QEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvQmF0
dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50
ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVy
X2NsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xpZW50
LmNwcApAQCAtMTc1LDYgKzE3Nyw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaCIKKyAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1l
X3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCA4ZmE5MGFlLi5iNmJjNGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIK
ICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNl
LmgiCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a192
aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVz
b3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmNwcAppbmRleCBlMWNjZmYyLi41NzNhMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yMywyMCArMjMsNTQgQEAKIAog
I2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0cnVjdCBfRXdrX1VybF9TY2hlbWVfSGFuZGxlciB7
CisgICAgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjazsKKyAgICB2b2lkKiB1c2Vy
RGF0YTsKKworICAgIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyKCkKKyAgICAgICAgOiBjYWxsYmFj
aygwKQorICAgICAgICAsIHVzZXJEYXRhKDApCisgICAgeyB9CisKKyAgICBfRXdrX1VybF9TY2hl
bWVfSGFuZGxlcihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2Vy
RGF0YSkKKyAgICAgICAgOiBjYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCB1c2VyRGF0YSh1
c2VyRGF0YSkKKyAgICB7IH0KK307CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIF9Fd2tfVXJs
X1NjaGVtZV9IYW5kbGVyPiBVUkxTY2hlbWVIYW5kbGVyTWFwOworCiBzdHJ1Y3QgX0V3a19Db250
ZXh0IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQ7CisKICNpZiBFTkFC
TEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgUmVmUHRyPEJhdHRlcnlQcm92aWRlcj4gYmF0dGVyeVBy
b3ZpZGVyOwogI2VuZGlmCiAKKyAgICBXS1JldGFpblB0cjxXS1NvdXBSZXF1ZXN0TWFuYWdlclJl
Zj4gcmVxdWVzdE1hbmFnZXI7CisgICAgVVJMU2NoZW1lSGFuZGxlck1hcCB1cmxTY2hlbWVIYW5k
bGVyczsKKwogICAgIF9Fd2tfQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKICAgICAg
ICAgOiBjb250ZXh0KGNvbnRleHRSZWYpCi0gICAgeyB9CisgICAgICAgICwgcmVxdWVzdE1hbmFn
ZXIoV0tDb250ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2VyKGNvbnRleHRSZWYpKQorICAgIHsKKyNp
ZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisgICAgICAgIFdLQmF0dGVyeU1hbmFnZXJSZWYgd2tC
YXR0ZXJ5TWFuYWdlciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2VyKGNvbnRleHRSZWYpOwor
ICAgICAgICBiYXR0ZXJ5UHJvdmlkZXIgPSBCYXR0ZXJ5UHJvdmlkZXI6OmNyZWF0ZSh3a0JhdHRl
cnlNYW5hZ2VyKTsKKyNlbmRpZgorCisgICAgICAgIGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnRfYXR0YWNoKHRoaXMpOworICAgIH0KIH07CiAKIFdLQ29udGV4dFJlZiBld2tfY29u
dGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQpAQCAtNDQs
MTcgKzc4LDM5IEBAIFdLQ29udGV4dFJlZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0
IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogICAgIHJldHVybiBld2tDb250ZXh0LT5jb250ZXh0
LmdldCgpOwogfQogCi1zdGF0aWMgaW5saW5lIEV3a19Db250ZXh0KiBjcmVhdGVEZWZhdWx0RXdr
Q29udGV4dCgpCisvKioKKyAqIEBpbnRlcm5hbAorICogUmV0cmlldmUgdGhlIHJlcXVlc3QgbWFu
YWdlciBmb3IgQGEgZXdrQ29udGV4dC4KKyAqCisgKiBAcGFyYW0gZXdrQ29udGV4dCBhICNFd2tf
Q29udGV4dCBvYmplY3QuCisgKi8KK1dLU291cFJlcXVlc3RNYW5hZ2VyUmVmIGV3a19jb250ZXh0
X3JlcXVlc3RfbWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCiB7Ci0g
ICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFByb2Nlc3NDb250
ZXh0KCk7Ci0gICAgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQgPSBuZXcgRXdrX0NvbnRleHQod2tD
b250ZXh0KTsKKyAgICByZXR1cm4gZXdrQ29udGV4dC0+cmVxdWVzdE1hbmFnZXIuZ2V0KCk7Cit9
CiAKLSNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgV0tCYXR0ZXJ5TWFuYWdlclJlZiB3
a0JhdHRlcnlNYW5hZ2VyID0gV0tDb250ZXh0R2V0QmF0dGVyeU1hbmFnZXIod2tDb250ZXh0KTsK
LSAgICBld2tDb250ZXh0LT5iYXR0ZXJ5UHJvdmlkZXIgPSBCYXR0ZXJ5UHJvdmlkZXI6OmNyZWF0
ZSh3a0JhdHRlcnlNYW5hZ2VyKTsKLSNlbmRpZgorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEEgbmV3
IFVSTCByZXF1ZXN0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBAcGFyYW0gZXdrQ29udGV4dCBhICNF
d2tfQ29udGV4dCBvYmplY3QuCisgKiBAcGFyYW0gc2NoZW1lUmVxdWVzdCBhICNFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0IG9iamVjdC4KKyAqLwordm9pZCBld2tfY29udGV4dF91cmxfc2NoZW1lX3Jl
cXVlc3RfcmVjZWl2ZWQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3QqIHNjaGVtZVJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
ZXdrQ29udGV4dCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2NoZW1lUmVxdWVz
dCk7CisKKyAgICBfRXdrX1VybF9TY2hlbWVfSGFuZGxlciBoYW5kbGVyID0gZXdrQ29udGV4dC0+
dXJsU2NoZW1lSGFuZGxlcnMuZ2V0KGV3a191cmxfc2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChz
Y2hlbWVSZXF1ZXN0KSk7CisgICAgaWYgKCFoYW5kbGVyLmNhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBoYW5kbGVyLmNhbGxiYWNrKHNjaGVtZVJlcXVlc3QsIGhhbmRsZXIudXNlckRh
dGEpOworfQogCi0gICAgcmV0dXJuIGV3a0NvbnRleHQ7CitzdGF0aWMgaW5saW5lIEV3a19Db250
ZXh0KiBjcmVhdGVEZWZhdWx0RXdrQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfQ29u
dGV4dChXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpKTsKIH0KIAogRXdrX0NvbnRl
eHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKQEAgLTYzLDMgKzExOSwxNiBAQCBFd2tfQ29u
dGV4dCogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKQogCiAgICAgcmV0dXJuIGRlZmF1bHRDb250
ZXh0OwogfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3RlcihFd2tf
Q29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoZXdrQ29udGV4dCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzY2hlbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY2FsbGJhY2ssIGZhbHNlKTsKKworICAgIGV3a0NvbnRleHQtPnVybFNjaGVt
ZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIF9Fd2tfVXJsX1NjaGVtZV9I
YW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB3a1NjaGVtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY2hlbWUp
KTsKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKGV3a0NvbnRleHQt
PnJlcXVlc3RNYW5hZ2VyLmdldCgpLCB3a1NjaGVtZS5nZXQoKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5o
CmluZGV4IDc5NGQwNTIuLjk5YjFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBld2tfY29u
dGV4dF9oCiAjZGVmaW5lIGV3a19jb250ZXh0X2gKIAorI2luY2x1ZGUgImV3a191cmxfc2NoZW1l
X3JlcXVlc3QuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAt
MzksMTIgKzQwLDYxIEBAIGV4dGVybiAiQyIgewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0
IEV3a19Db250ZXh0OwogCiAvKioKKyAqIEB0eXBlZGVmIEV3a19VcmxfU2NoZW1lX1JlcXVlc3Rf
Q2IgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYgorICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9y
IHVzZSB3aXRoIGV3a19jb250ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoKS4KKyAqLwordHlwZWRl
ZiB2b2lkICgqRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVl
c3QgKnJlcXVlc3QsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgogICogR2V0cyBkZWZhdWx0IEV3
a19Db250ZXh0IGluc3RhbmNlLgogICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0Lgog
ICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwogCisvKioK
KyAqIFJlZ2lzdGVyIEBhIHNjaGVtZSBpbiBAYSBjb250ZXh0LgorICoKKyAqIFdoZW4gYW4gVVJM
IHJlcXVlc3Qgd2l0aCBAYSBzY2hlbWUgaXMgbWFkZSBpbiB0aGUgI0V3a19Db250ZXh0LCB0aGUg
Y2FsbGJhY2sKKyAqIGZ1bmN0aW9uIHByb3ZpZGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggYSAjRXdr
X1VybF9TY2hlbWVfUmVxdWVzdC4KKyAqCisgKiBJdCBpcyBwb3NzaWJsZSB0byBoYW5kbGUgVVJM
IHNjaGVtZSByZXF1ZXN0cyBhc3luY2hyb25vdXNseSwgYnkgY2FsbGluZyBld2tfdXJsX3NjaGVt
ZV9yZWYoKSBvbiB0aGUKKyAqICNFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGFuZCBjYWxsaW5nIGV3
a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKCkgbGF0ZXIgd2hlbiB0aGUgZGF0YSBvZgorICog
dGhlIHJlcXVlc3QgaXMgYXZhaWxhYmxlLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IGEgI0V3a19D
b250ZXh0IG9iamVjdC4KKyAqIEBwYXJhbSBzY2hlbWUgdGhlIG5ldHdvcmsgc2NoZW1lIHRvIHJl
Z2lzdGVyCisgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVu
IGFuIFVSTCByZXF1ZXN0IHdpdGggQGEgc2NoZW1lIGlzIG1hZGUuCisgKiBAcGFyYW0gdXNlcl9k
YXRhIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBmdW5jdGlvbgorICoKKyAqIEBjb2RlCisgKiBz
dGF0aWMgdm9pZCBhYm91dF91cmlfc2NoZW1lX3JlcXVlc3RfY2IoRXdrX1VybF9TY2hlbWVfUmVx
dWVzdCAqcmVxdWVzdCwgdm9pZCAqdXNlcl9kYXRhKQorICogeworICogICAgIGNvbnN0IGNoYXIg
KnBhdGg7CisgKiAgICAgY2hhciAqY29udGVudHNfZGF0YSA9IE5VTEw7CisgKiAgICAgdW5zaWdu
ZWQgaW50IGNvbnRlbnRzX2xlbmd0aCA9IDA7CisgKgorICogICAgIHBhdGggPSBld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KHJlcXVlc3QpOworICogICAgIGlmICghc3RyY21wKHBhdGgs
ICJwbHVnaW5zIikpIHsKKyAqICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdp
dGggdGhlIGNvbnRlbnRzIG9mIHBsdWdpbnMgYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3Ro
IHRvIGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAibWVt
b3J5IikpIHsKKyAqICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19kYXRhIHdpdGggdGhl
IGNvbnRlbnRzIG9mIG1lbW9yeSBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gY29u
dGVudHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgsICJhcHBsaWNhdGlv
bnMiKSkgeworICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2RhdGEgd2l0aCB0aGUg
Y29udGVudHMgb2YgYXBwbGljYXRpb24gYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRv
IGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0gZWxzZSB7CisgKiAgICAgICAgIEVpbmFfU3RyYnVm
ICpidWYgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKyAqICAgICAgICAgZWluYV9zdHJidWZfYXBwZW5k
X3ByaW50ZihidWYsICImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZndDtJbnZhbGlkIGFi
b3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsK
KyAqICAgICAgICAgY29udGVudHNfZGF0YSA9IGVpbmFfc3RyYnVmX3N0cmluZ19zdGVhbChidWYp
OworICogICAgICAgICBjb250ZW50c19sZW5ndGggPSBzdHJsZW4oY29udGVudHMpOworICogICAg
ICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1Zik7CisgKiAgICAgfQorICogICAgIGV3a191cmxfc2No
ZW1lX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIGNvbnRlbnRzX2RhdGEsIGNvbnRlbnRzX2xlbmd0
aCwgInRleHQvaHRtbCIpOworICogICAgIGZyZWUoY29udGVudHNfZGF0YSk7CisgKiB9CisgKiBA
ZW5kY29kZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lz
dGVyKEV3a19Db250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyICpzY2hlbWUsIEV3a19VcmxfU2No
ZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggODEzYTk0Mi4uZDc4ZTFlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7Cit0eXBlZGVmIHN0
cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0OwogCiBX
S0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCop
OworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dl
dChjb25zdCBFd2tfQ29udGV4dCopOwordm9pZCBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVl
c3RfcmVjZWl2ZWQoRXdrX0NvbnRleHQqLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0Kik7CiAKICNl
bmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9t
YW5hZ2VyX2NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIy
YmQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldL
QmFzZS5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
KyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKKworc3RhdGljIGlu
bGluZSBFd2tfQ29udGV4dCogdG9Fd2tDb250ZXh0KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19Db250ZXh0Kj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVVJJUmVxdWVzdChXS1Nv
dXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJl
ZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3
a19VcmxfU2NoZW1lX1JlcXVlc3QqIHNjaGVtZVJlcXVlc3QgPSBld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X25ldyhzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIHVybFJlZiwgcmVxdWVzdElEKTsKKyAgICBl
d2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2ZWQodG9Fd2tDb250ZXh0KGNsaWVu
dEluZm8pLCBzY2hlbWVSZXF1ZXN0KTsKKyAgICBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3VucmVm
KHNjaGVtZVJlcXVlc3QpOworfQorCit2b2lkIGV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9j
bGllbnRfYXR0YWNoKEV3a19Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdLU291cFJlcXVlc3RN
YW5hZ2VyQ2xpZW50IHdrUmVxdWVzdE1hbmFnZXJDbGllbnQ7CisgICAgbWVtc2V0KCZ3a1JlcXVl
c3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQpKTsK
KworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQudmVyc2lvbiA9IGtXS1NvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuY2xp
ZW50SW5mbyA9IGNvbnRleHQ7CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5kaWRSZWNlaXZl
VVJJUmVxdWVzdCA9IGRpZFJlY2VpdmVVUklSZXF1ZXN0OworCisgICAgV0tTb3VwUmVxdWVzdE1h
bmFnZXJTZXRDbGllbnQoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dldChjb250ZXh0KSwg
JndrUmVxdWVzdE1hbmFnZXJDbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1
ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42ODliYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4
dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9y
ZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0Nv
bnRleHQgRXdrX0NvbnRleHQ7CisKK3ZvaWQgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2Ns
aWVudF9hdHRhY2goRXdrX0NvbnRleHQqIGNvbnRleHQpOworCisjZW5kaWYgLy8gZXdrX2NvbnRl
eHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzZmYzZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3QuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgorCisjaW5j
bHVkZSAiV0tEYXRhLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxz
dHJ1Y3QgIF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0CisgKiBAYnJpZWYgICBDb250YWlucyB0aGUg
VVJMIHNjaGVtZSByZXF1ZXN0IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVx
dWVzdCB7CisgICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQg
b2YgdGhlIG9iamVjdCAqLworICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
PiB3a1JlcXVlc3RNYW5hZ2VyOworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICB1aW50NjRfdCBy
ZXF1ZXN0SUQ7CisgICAgY29uc3QgY2hhciogc2NoZW1lOworICAgIGNvbnN0IGNoYXIqIHBhdGg7
CisKKyAgICBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBt
YW5hZ2VyLCBjb25zdCBjaGFyKiBfdXJsLCB1aW50NjRfdCBfcmVxdWVzdElEKQorICAgICAgICA6
IF9fcmVmKDEpCisgICAgICAgICwgd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2VyKQorICAgICAgICAs
IHVybChlaW5hX3N0cmluZ3NoYXJlX2FkZChfdXJsKSkKKyAgICAgICAgLCByZXF1ZXN0SUQoX3Jl
cXVlc3RJRCkKKyAgICB7CisgICAgICAgIFNvdXBVUkkqIHNvdXBVUkkgPSBzb3VwX3VyaV9uZXco
X3VybCk7CisgICAgICAgIHNjaGVtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNvdXBVUkktPnNj
aGVtZSk7CisgICAgICAgIHBhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzb3VwVVJJLT5wYXRo
KTsKKyAgICAgICAgc291cF91cmlfZnJlZShzb3VwVVJJKTsKKyAgICB9CisKKyAgICB+X0V3a19V
cmxfU2NoZW1lX1JlcXVlc3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFfX3JlZik7CisgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHVybCk7CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKHNjaGVtZSk7CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHBhdGgpOworICAgIH0K
K307CisKK3ZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0
KTsKKyAgICArK3JlcXVlc3QtPl9fcmVmOworfQorCit2b2lkIGV3a191cmxfc2NoZW1lX3JlcXVl
c3RfdW5yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKKworICAgIGlmICgtLXJlcXVlc3QtPl9fcmVm
KQorICAgICAgICByZXR1cm47CisKKyAgICBkZWxldGUgcmVxdWVzdDsKK30KKworY29uc3QgY2hh
ciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1l
X1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnNjaGVtZTsKK30KKworY29uc3Qg
Y2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1l
X1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnVybDsKK30KKworY29uc3QgY2hh
ciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wYXRoX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChy
ZXF1ZXN0LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wYXRoOworfQorCisvKioKKyAqIEBp
bnRlcm5hbAorICogUmV0dXJucyB0aGUgI0V3a19VcmxfU2NoZW1lX1JlcXVlc3QgaWRlbnRpZmll
ci4KKyAqLwordWludDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQoY29uc3QgRXdr
X1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cmVxdWVzdElE
OworfQorCitFaW5hX0Jvb2wgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9maW5pc2goY29uc3QgRXdr
X1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCwgdm9pZCogY29udGVudERhdGEsIHVuc2lnbmVk
IGludCBjb250ZW50TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgZmFsc2UpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tEYXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRhQ3JlYXRlKGNvbnRlbnRMZW5ndGgg
PyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250ZW50RGF0YSkgOiAw
LCBjb250ZW50TGVuZ3RoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWltZVR5
cGUgPSBtaW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWlt
ZVR5cGUpKSA6IDA7CisKKyAgICAvLyBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVtcHR5IFdL
RGF0YVJlZiBpcyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzLgorICAgIFdLU291cFJlcXVlc3RNYW5h
Z2VyRGlkSGFuZGxlVVJJUmVxdWVzdChyZXF1ZXN0LT53a1JlcXVlc3RNYW5hZ2VyLmdldCgpLCB3
a0RhdGEuZ2V0KCksIGNvbnRlbnRMZW5ndGgsIHdrTWltZVR5cGUuZ2V0KCksIHJlcXVlc3QtPnJl
cXVlc3RJRCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IENvbnN0cnVjdHMgYSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0LgorICovCitFd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0KiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhXS1NvdXBSZXF1ZXN0TWFuYWdl
clJlZiByZXF1ZXN0TWFuYWdlciwgV0tVUkxSZWYgdXJsLCB1aW50NjRfdCByZXF1ZXN0SUQpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3RNYW5hZ2VyLCAwKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKKworICAgIHJldHVy
biBuZXcgRXdrX1VybF9TY2hlbWVfUmVxdWVzdChyZXF1ZXN0TWFuYWdlciwgdG9JbXBsKHVybCkt
PnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RJRCk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0Y2JkNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3QuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBA
ZmlsZSAgICBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0
aGUgRXdrIFVSTCBzY2hlbWUgcmVxdWVzdCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0X2gKKyNkZWZpbmUgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9oCisKKyNpbmNs
dWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICov
Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBn
aXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCBzY2hlbWUgcmVxdWVz
dCBvYmplY3QgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQg
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVz
dCk7CisKKy8qKgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVu
IG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2Ug
Y291bnQgaXQncyByZWFjaGVkIDAsIHRoZSBVUkwgc2NoZW1lIHJlcXVlc3QgaXMgZnJlZWQuCisg
KgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCByZXF1ZXN0IG9iamVjdCB0byBkZWNyZWFzZSB0
aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3VucmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5
IHRoZSBVUkwgc2NoZW1lIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3Qg
cmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgVVJMIHNjaGVtZSBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191
cmxfc2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0
ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgVVJMIGZvciB0aGlzIHJlcXVlc3QuCisg
KgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJl
dHVybiB0aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBp
cworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5l
dmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFu
ZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFf
c3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29u
c3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0IEV3a19VcmxfU2No
ZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5IHRoZSBwYXRoIHBhcnQgb2Yg
dGhlIFVSTCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qg
b2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIHBhdGggcG9pbnRlciwgdGhhdCBt
YXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8g
YmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2
ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmlu
Z3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAg
ICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3BhdGhfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisv
KioKKyAqIEZpbmlzaCBhIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgYnkgc2V0dGluZyB0aGUgY29u
dGVudCBvZiB0aGUgcmVxdWVzdCBhbmQgaXRzIG1pbWUgdHlwZS4KKyAqCisgKiBAcGFyYW0gcmVx
dWVzdCBhIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QuCisgKiBAcGFyYW0gY29udGVudF9kYXRhIHRo
ZSBkYXRhIGNvbnRlbnQgb2YgdGhlIHJlcXVlc3QgKG1heSBiZSAlYyBOVUxMIGlmIHRoZSBjb250
ZW50IGlzIGVtcHR5KS4KKyAqIEBwYXJhbSBjb250ZW50X2xlbmd0aCB0aGUgbGVuZ3RoIG9mIHRo
ZSBAYSBjb250ZW50X2RhdGEuCisgKiBAcGFyYW0gbWltZV90eXBlIHRoZSBjb250ZW50IHR5cGUg
b2YgdGhlIHN0cmVhbSBvciAlYyBOVUxMIGlmIG5vdCBrbm93bgorICovCitFQVBJIEVpbmFfQm9v
bCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChjb25zdCBFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0ICpyZXF1ZXN0LCB2b2lkICpjb250ZW50X2RhdGEsIHVuc2lnbmVkIGludCBjb250ZW50X2xl
bmd0aCwgY29uc3QgY2hhciAqbWltZV90eXBlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8vIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
NWRkNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVf
aAorI2RlZmluZSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAorCisjaW5jbHVkZSAi
V0tCYXNlLmgiCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IEV3a19V
cmxfU2NoZW1lX1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRl
eHQ7CisKK0V3a19VcmxfU2NoZW1lX1JlcXVlc3QqIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfbmV3
KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsK
KwordWludDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQoY29uc3QgRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdCogcmVxdWVzdCk7CisKKyNlbmRpZiAvLyBld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGVfaAo=
</data>
<flag name="review"
          id="161146"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="161147"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153798</attachid>
            <date>2012-07-23 08:01:50 -0700</date>
            <delta_ts>2012-07-23 08:49:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>91193_request_manager2.patch</filename>
            <type>text/plain</type>
            <size>29153</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlODI1ZmE0Li4yYjQzMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDctMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAg
IEFkZCBhIFVSTCByZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGFuZCBhdHRhY2ggaXQKKyAgICAgICAg
dG8gdGhlIEV3a19Db250ZXh0LgorCisgICAgICAgIFRoZSBjbGllbnQgYXBwbGljYXRpb24gY2Fu
IG5vdyByZWdpc3RlciBhIFVSTCBzY2hlbWUKKyAgICAgICAgdmlhIHRoZSBFd2tfQ29udGV4dCBB
UEkgYW5kIHByb3ZpZGUgYSBjYWxsYmFjayBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBnZXQg
Y2FsbGVkIHdoZW5ldmVyIGEgVVJMIHJlcXVlc3Qgd2l0aCB0aGlzCisgICAgICAgIHNjaGVtZSBp
cyBtYWRlLgorCisgICAgICAgIEEgbmV3IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgdHlwZSBpcyBp
bnRyb2R1Y2VkIHRvCisgICAgICAgIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVl
c3QgdG8gdGhlIGNsaWVudAorICAgICAgICBhbmQgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBmaW5p
c2ggaXQgYnkgc2V0dGluZyBpdHMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKF9F
d2tfVXJsX1NjaGVtZV9IYW5kbGVyKToKKyAgICAgICAgKF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVy
OjpfRXdrX1VybF9TY2hlbWVfSGFuZGxlcik6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAg
ICAgICAoX0V3a19Db250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRf
cmVxdWVzdF9tYW5hZ2VyX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3Jl
cXVlc3RfcmVjZWl2ZWQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfdXJpX3NjaGVtZV9yZWdpc3Rlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Fd2tD
b250ZXh0KToKKyAgICAgICAgKGRpZFJlY2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKGV3a19j
b250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3QpOgorICAgICAg
ICAoX0V3a19VcmxfU2NoZW1lX1JlcXVlc3Q6Ol9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KToKKyAg
ICAgICAgKF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0Ojp+X0V3a19VcmxfU2NoZW1lX1JlcXVlc3Qp
OgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYpOgorICAgICAgICAoZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF91bnJlZik6CisgICAgICAgIChld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KToK
KyAgICAgICAgKGV3a191cmxfc2NoZW1lX3JlcXVlc3RfcGF0aF9nZXQpOgorICAgICAgICAoZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9maW5pc2gpOgorICAgICAgICAoZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9uZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2
YXRlLmg6IEFkZGVkLgorCiAyMDEyLTA3LTIzICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUHJvY2Vzc0V4ZWN1dGFibGVQYXRoIGlz
IHJlcXVpcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDIxZDgzZTIuLjZhYTYxMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zOCwxMiArMzgsMTQgQEAgTElTVChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVy
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKQEAgLTE4MCw2ICsxODIsNyBA
QCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9y
ZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIgogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9l
cnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKaW5kZXggZDdkNzk2My4uNTk3Y2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193
ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggMjFjMTU3Yy4u
Yjg2MDdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcApAQCAtMjMsMTIgKzIzLDM0IEBACiAKICNpbmNsdWRlICJCYXR0ZXJ5UHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRTb3VwLmgi
CiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1
ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXJf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0cnVjdCBfRXdrX1Vy
bF9TY2hlbWVfSGFuZGxlciB7CisgICAgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFj
azsKKyAgICB2b2lkKiB1c2VyRGF0YTsKKworICAgIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyKCkK
KyAgICAgICAgOiBjYWxsYmFjaygwKQorICAgICAgICAsIHVzZXJEYXRhKDApCisgICAgeyB9CisK
KyAgICBfRXdrX1VybF9TY2hlbWVfSGFuZGxlcihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNh
bGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKKyAgICAgICAgOiBjYWxsYmFjayhjYWxsYmFjaykKKyAg
ICAgICAgLCB1c2VyRGF0YSh1c2VyRGF0YSkKKyAgICB7IH0KK307CisKK3R5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIF9Fd2tfVXJsX1NjaGVtZV9IYW5kbGVyPiBVUkxTY2hlbWVIYW5kbGVyTWFwOwor
CiBzdHJ1Y3QgX0V3a19Db250ZXh0IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQ7CiAKQEAgLTM3LDEwICs1OSwyMSBAQCBzdHJ1Y3QgX0V3a19Db250ZXh0IHsKICAgICBS
ZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7CiAjZW5kaWYKIAorICAgIFdL
UmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiByZXF1ZXN0TWFuYWdlcjsKKyAgICBV
UkxTY2hlbWVIYW5kbGVyTWFwIHVybFNjaGVtZUhhbmRsZXJzOworCiAgICAgX0V3a19Db250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgICAgICA6IGNvbnRleHQoY29udGV4dFJlZikK
ICAgICAgICAgLCBjb29raWVNYW5hZ2VyKDApCi0gICAgeyB9CisgICAgICAgICwgcmVxdWVzdE1h
bmFnZXIoV0tDb250ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2VyKGNvbnRleHRSZWYpKQorICAgIHsK
KyNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisgICAgICAgIFdLQmF0dGVyeU1hbmFnZXJSZWYg
d2tCYXR0ZXJ5TWFuYWdlciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2VyKGNvbnRleHRSZWYp
OworICAgICAgICBiYXR0ZXJ5UHJvdmlkZXIgPSBCYXR0ZXJ5UHJvdmlkZXI6OmNyZWF0ZSh3a0Jh
dHRlcnlNYW5hZ2VyKTsKKyNlbmRpZgorCisgICAgICAgIGV3a19jb250ZXh0X3JlcXVlc3RfbWFu
YWdlcl9jbGllbnRfYXR0YWNoKHRoaXMpOworICAgIH0KIAogICAgIH5fRXdrX0NvbnRleHQoKQog
ICAgIHsKQEAgLTY0LDE3ICs5NywzOSBAQCBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250
ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKICAgICByZXR1cm4gZXdrQ29u
dGV4dC0+Y29udGV4dC5nZXQoKTsKIH0KIAotc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogY3Jl
YXRlRGVmYXVsdEV3a0NvbnRleHQoKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRo
ZSByZXF1ZXN0IG1hbmFnZXIgZm9yIEBhIGV3a0NvbnRleHQuCisgKgorICogQHBhcmFtIGV3a0Nv
bnRleHQgYSAjRXdrX0NvbnRleHQgb2JqZWN0LgorICovCitXS1NvdXBSZXF1ZXN0TWFuYWdlclJl
ZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tD
b250ZXh0KQogewotICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFy
ZWRQcm9jZXNzQ29udGV4dCgpOwotICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0ID0gbmV3IEV3
a19Db250ZXh0KHdrQ29udGV4dCk7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPnJlcXVlc3RNYW5h
Z2VyLmdldCgpOworfQogCi0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdLQmF0dGVy
eU1hbmFnZXJSZWYgd2tCYXR0ZXJ5TWFuYWdlciA9IFdLQ29udGV4dEdldEJhdHRlcnlNYW5hZ2Vy
KHdrQ29udGV4dCk7Ci0gICAgZXdrQ29udGV4dC0+YmF0dGVyeVByb3ZpZGVyID0gQmF0dGVyeVBy
b3ZpZGVyOjpjcmVhdGUod2tCYXR0ZXJ5TWFuYWdlcik7Ci0jZW5kaWYKKy8qKgorICogQGludGVy
bmFsCisgKiBBIG5ldyBVUkwgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKgorICogQHBhcmFtIGV3
a0NvbnRleHQgYSAjRXdrX0NvbnRleHQgb2JqZWN0LgorICogQHBhcmFtIHNjaGVtZVJlcXVlc3Qg
YSAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBvYmplY3QuCisgKi8KK3ZvaWQgZXdrX2NvbnRleHRf
dXJsX3NjaGVtZV9yZXF1ZXN0X3JlY2VpdmVkKEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNjaGVtZVJlcXVlc3QpOworCisgICAgX0V3a19VcmxfU2NoZW1lX0hhbmRsZXIgaGFuZGxlciA9
IGV3a0NvbnRleHQtPnVybFNjaGVtZUhhbmRsZXJzLmdldChld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoc2NoZW1lUmVxdWVzdCkpOworICAgIGlmICghaGFuZGxlci5jYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlci5jYWxsYmFjayhzY2hlbWVSZXF1ZXN0LCBo
YW5kbGVyLnVzZXJEYXRhKTsKK30KIAotICAgIHJldHVybiBld2tDb250ZXh0Oworc3RhdGljIGlu
bGluZSBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdEV3a0NvbnRleHQoKQoreworICAgIHJldHVy
biBuZXcgRXdrX0NvbnRleHQoV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKSk7CiB9
CiAKIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCkBAIC04MywzICsxMzgs
MTYgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIAogICAgIHJldHVy
biBkZWZhdWx0Q29udGV4dDsKIH0KKworRWluYV9Cb29sIGV3a19jb250ZXh0X3VyaV9zY2hlbWVf
cmVnaXN0ZXIoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIGNvbnN0IGNoYXIqIHNjaGVtZSwgRXdr
X1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRleHQsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2NoZW1lLCBmYWxzZSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbGxiYWNrLCBmYWxzZSk7CisKKyAgICBld2tDb250
ZXh0LT51cmxTY2hlbWVIYW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBfRXdr
X1VybF9TY2hlbWVfSGFuZGxlcihjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTY2hlbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoc2NoZW1lKSk7CisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVt
ZShld2tDb250ZXh0LT5yZXF1ZXN0TWFuYWdlci5nZXQoKSwgd2tTY2hlbWUuZ2V0KCkpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaAppbmRleCBlODkwMzc3Li4zZGYzNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNk
ZWZpbmUgZXdrX2NvbnRleHRfaAogCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCisj
aW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIAog
I2lmZGVmIF9fY3BsdXNwbHVzCkBAIC00MCw2ICs0MSwxMiBAQCBleHRlcm4gIkMiIHsKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKIAogLyoqCisgKiBAdHlwZWRlZiBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IKKyAqIEBi
cmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29udGV4dF91cmlfc2NoZW1lX3Jl
Z2lzdGVyKCkuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2Ip
IChFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICp1c2VyX2RhdGEpOworCisv
KioKICAqIEdldHMgZGVmYXVsdCBFd2tfQ29udGV4dCBpbnN0YW5jZS4KICAqCiAgKiBAcmV0dXJu
IEV3a19Db250ZXh0IG9iamVjdC4KQEAgLTU1LDYgKzYyLDQ5IEBAIEVBUEkgRXdrX0NvbnRleHQg
KmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CiAgKi8KIEVBUEkgRXdrX0Nvb2tpZV9NYW5hZ2Vy
ICpld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQgKmNvbnRl
eHQpOwogCisvKioKKyAqIFJlZ2lzdGVyIEBhIHNjaGVtZSBpbiBAYSBjb250ZXh0LgorICoKKyAq
IFdoZW4gYW4gVVJMIHJlcXVlc3Qgd2l0aCBAYSBzY2hlbWUgaXMgbWFkZSBpbiB0aGUgI0V3a19D
b250ZXh0LCB0aGUgY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIHByb3ZpZGVkIHdpbGwgYmUgY2FsbGVk
IHdpdGggYSAjRXdrX1VybF9TY2hlbWVfUmVxdWVzdC4KKyAqCisgKiBJdCBpcyBwb3NzaWJsZSB0
byBoYW5kbGUgVVJMIHNjaGVtZSByZXF1ZXN0cyBhc3luY2hyb25vdXNseSwgYnkgY2FsbGluZyBl
d2tfdXJsX3NjaGVtZV9yZWYoKSBvbiB0aGUKKyAqICNFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0IGFu
ZCBjYWxsaW5nIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKCkgbGF0ZXIgd2hlbiB0aGUg
ZGF0YSBvZgorICogdGhlIHJlcXVlc3QgaXMgYXZhaWxhYmxlLgorICoKKyAqIEBwYXJhbSBjb250
ZXh0IGEgI0V3a19Db250ZXh0IG9iamVjdC4KKyAqIEBwYXJhbSBzY2hlbWUgdGhlIG5ldHdvcmsg
c2NoZW1lIHRvIHJlZ2lzdGVyCisgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRvIGJl
IGNhbGxlZCB3aGVuIGFuIFVSTCByZXF1ZXN0IHdpdGggQGEgc2NoZW1lIGlzIG1hZGUuCisgKiBA
cGFyYW0gdXNlcl9kYXRhIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBmdW5jdGlvbgorICoKKyAq
IEBjb2RlCisgKiBzdGF0aWMgdm9pZCBhYm91dF91cmlfc2NoZW1lX3JlcXVlc3RfY2IoRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAqdXNlcl9kYXRhKQorICogeworICogICAg
IGNvbnN0IGNoYXIgKnBhdGg7CisgKiAgICAgY2hhciAqY29udGVudHNfZGF0YSA9IE5VTEw7Cisg
KiAgICAgdW5zaWduZWQgaW50IGNvbnRlbnRzX2xlbmd0aCA9IDA7CisgKgorICogICAgIHBhdGgg
PSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KHJlcXVlc3QpOworICogICAgIGlmICgh
c3RyY21wKHBhdGgsICJwbHVnaW5zIikpIHsKKyAqICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250
ZW50c19kYXRhIHdpdGggdGhlIGNvbnRlbnRzIG9mIHBsdWdpbnMgYWJvdXQgcGFnZSwgYW5kIHNl
dCBpdHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0gZWxzZSBpZiAoIXN0cmNt
cChwYXRoLCAibWVtb3J5IikpIHsKKyAqICAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb250ZW50c19k
YXRhIHdpdGggdGhlIGNvbnRlbnRzIG9mIG1lbW9yeSBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBs
ZW5ndGggdG8gY29udGVudHNfbGVuZ3RoCisgKiAgICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgs
ICJhcHBsaWNhdGlvbnMiKSkgeworICogICAgICAgICAvLyBJbml0aWFsaXplIGNvbnRlbnRzX2Rh
dGEgd2l0aCB0aGUgY29udGVudHMgb2YgYXBwbGljYXRpb24gYWJvdXQgcGFnZSwgYW5kIHNldCBp
dHMgbGVuZ3RoIHRvIGNvbnRlbnRzX2xlbmd0aAorICogICAgIH0gZWxzZSB7CisgKiAgICAgICAg
IEVpbmFfU3RyYnVmICpidWYgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKyAqICAgICAgICAgZWluYV9z
dHJidWZfYXBwZW5kX3ByaW50ZihidWYsICImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZn
dDtJbnZhbGlkIGFib3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZn
dDsiLCBwYXRoKTsKKyAqICAgICAgICAgY29udGVudHNfZGF0YSA9IGVpbmFfc3RyYnVmX3N0cmlu
Z19zdGVhbChidWYpOworICogICAgICAgICBjb250ZW50c19sZW5ndGggPSBzdHJsZW4oY29udGVu
dHMpOworICogICAgICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1Zik7CisgKiAgICAgfQorICogICAg
IGV3a191cmxfc2NoZW1lX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIGNvbnRlbnRzX2RhdGEsIGNv
bnRlbnRzX2xlbmd0aCwgInRleHQvaHRtbCIpOworICogICAgIGZyZWUoY29udGVudHNfZGF0YSk7
CisgKiB9CisgKiBAZW5kY29kZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF91cmlf
c2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyICpzY2hlbWUs
IEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk7CisK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggODEzYTk0Mi4u
ZDc4ZTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsMTAgQEAKICNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7
Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0OwogCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBF
d2tfQ29udGV4dCopOworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4dCopOwordm9pZCBld2tfY29udGV4dF91cmxf
c2NoZW1lX3JlcXVlc3RfcmVjZWl2ZWQoRXdrX0NvbnRleHQqLCBFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0Kik7CiAKICNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjIyYmQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3Jl
cXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a191cmxfc2NoZW1l
X3JlcXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIK
Kworc3RhdGljIGlubGluZSBFd2tfQ29udGV4dCogdG9Fd2tDb250ZXh0KGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19Db250ZXh0Kj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVVJJ
UmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
VVJMUmVmIHVybFJlZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHNjaGVtZVJlcXVlc3QgPSBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X25ldyhzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIHVybFJlZiwgcmVxdWVz
dElEKTsKKyAgICBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlcXVlc3RfcmVjZWl2ZWQodG9Fd2tD
b250ZXh0KGNsaWVudEluZm8pLCBzY2hlbWVSZXF1ZXN0KTsKKyAgICBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3VucmVmKHNjaGVtZVJlcXVlc3QpOworfQorCit2b2lkIGV3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKEV3a19Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdL
U291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IHdrUmVxdWVzdE1hbmFnZXJDbGllbnQ7CisgICAgbWVt
c2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tTb3VwUmVxdWVzdE1hbmFn
ZXJDbGllbnQpKTsKKworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQudmVyc2lvbiA9IGtXS1Nv
dXBSZXF1ZXN0TWFuYWdlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHdrUmVxdWVzdE1hbmFn
ZXJDbGllbnQuY2xpZW50SW5mbyA9IGNvbnRleHQ7CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVu
dC5kaWRSZWNlaXZlVVJJUmVxdWVzdCA9IGRpZFJlY2VpdmVVUklSZXF1ZXN0OworCisgICAgV0tT
b3VwUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2dl
dChjb250ZXh0KSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2Vy
X2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ODliYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVu
dF9wcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBl
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAorCit0eXBlZGVmIHN0
cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7CisKK3ZvaWQgZXdrX2NvbnRleHRfcmVxdWVz
dF9tYW5hZ2VyX2NsaWVudF9hdHRhY2goRXdrX0NvbnRleHQqIGNvbnRleHQpOworCisjZW5kaWYg
Ly8gZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzZmYzZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVz
dC5oIgorCisjaW5jbHVkZSAiV0tEYXRhLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNp
bmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfVXJsX1NjaGVtZV9SZXF1ZXN0CisgKiBAYnJpZWYgICBD
b250YWlucyB0aGUgVVJMIHNjaGVtZSByZXF1ZXN0IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdCB7CisgICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZl
cmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLworICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVl
c3RNYW5hZ2VyUmVmPiB3a1JlcXVlc3RNYW5hZ2VyOworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAg
ICB1aW50NjRfdCByZXF1ZXN0SUQ7CisgICAgY29uc3QgY2hhciogc2NoZW1lOworICAgIGNvbnN0
IGNoYXIqIHBhdGg7CisKKyAgICBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdChXS1NvdXBSZXF1ZXN0
TWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBfdXJsLCB1aW50NjRfdCBfcmVxdWVzdElE
KQorICAgICAgICA6IF9fcmVmKDEpCisgICAgICAgICwgd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorICAgICAgICAsIHVybChlaW5hX3N0cmluZ3NoYXJlX2FkZChfdXJsKSkKKyAgICAgICAgLCBy
ZXF1ZXN0SUQoX3JlcXVlc3RJRCkKKyAgICB7CisgICAgICAgIFNvdXBVUkkqIHNvdXBVUkkgPSBz
b3VwX3VyaV9uZXcoX3VybCk7CisgICAgICAgIHNjaGVtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRk
KHNvdXBVUkktPnNjaGVtZSk7CisgICAgICAgIHBhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChz
b3VwVVJJLT5wYXRoKTsKKyAgICAgICAgc291cF91cmlfZnJlZShzb3VwVVJJKTsKKyAgICB9CisK
KyAgICB+X0V3a19VcmxfU2NoZW1lX1JlcXVlc3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFf
X3JlZik7CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHVybCk7CisgICAgICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKHNjaGVtZSk7CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHBh
dGgpOworICAgIH0KK307CisKK3ZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYoRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihyZXF1ZXN0KTsKKyAgICArK3JlcXVlc3QtPl9fcmVmOworfQorCit2b2lkIGV3a191cmxf
c2NoZW1lX3JlcXVlc3RfdW5yZWYoRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKKworICAgIGlmICgtLXJl
cXVlc3QtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAgICBkZWxldGUgcmVxdWVzdDsKK30K
KworY29uc3QgY2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KGNvbnN0IEV3
a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnNjaGVtZTsK
K30KKworY29uc3QgY2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0IEV3
a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnVybDsKK30K
KworY29uc3QgY2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wYXRoX2dldChjb25zdCBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wYXRoOworfQor
CisvKioKKyAqIEBpbnRlcm5hbAorICogUmV0dXJucyB0aGUgI0V3a19VcmxfU2NoZW1lX1JlcXVl
c3QgaWRlbnRpZmllci4KKyAqLwordWludDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9n
ZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVz
dC0+cmVxdWVzdElEOworfQorCitFaW5hX0Jvb2wgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9maW5p
c2goY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCwgdm9pZCogY29udGVudERh
dGEsIHVuc2lnbmVkIGludCBjb250ZW50TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgZmFsc2UpOworCisg
ICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRhQ3JlYXRlKGNv
bnRlbnRMZW5ndGggPyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250
ZW50RGF0YSkgOiAwLCBjb250ZW50TGVuZ3RoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrTWltZVR5cGUgPSBtaW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcobWltZVR5cGUpKSA6IDA7CisKKyAgICAvLyBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5
IGFuIGVtcHR5IFdLRGF0YVJlZiBpcyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzLgorICAgIFdLU291
cFJlcXVlc3RNYW5hZ2VyRGlkSGFuZGxlVVJJUmVxdWVzdChyZXF1ZXN0LT53a1JlcXVlc3RNYW5h
Z2VyLmdldCgpLCB3a0RhdGEuZ2V0KCksIGNvbnRlbnRMZW5ndGgsIHdrTWltZVR5cGUuZ2V0KCks
IHJlcXVlc3QtPnJlcXVlc3RJRCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBA
aW50ZXJuYWwKKyAqIENvbnN0cnVjdHMgYSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0LgorICovCitF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X25ldyhXS1NvdXBS
ZXF1ZXN0TWFuYWdlclJlZiByZXF1ZXN0TWFuYWdlciwgV0tVUkxSZWYgdXJsLCB1aW50NjRfdCBy
ZXF1ZXN0SUQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3RN
YW5hZ2VyLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsK
KworICAgIHJldHVybiBuZXcgRXdrX1VybF9TY2hlbWVfUmVxdWVzdChyZXF1ZXN0TWFuYWdlciwg
dG9JbXBsKHVybCktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RJRCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0Y2JkNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3QuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoqCisgKiBAZmlsZSAgICBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgKKyAqIEBicmllZiAg
IERlc2NyaWJlcyB0aGUgRXdrIFVSTCBzY2hlbWUgcmVxdWVzdCBBUEkuCisgKi8KKworI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2gKKyNkZWZpbmUgZXdrX3VybF9zY2hlbWVfcmVxdWVz
dF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0ICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9TY2hlbWVfUmVxdWVzdCBFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNv
dW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCBz
Y2hlbWUgcmVxdWVzdCBvYmplY3QgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICov
CitFQVBJIHZvaWQgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9yZWYoRXdrX1VybF9TY2hlbWVfUmVx
dWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQg
b2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRo
ZSByZWZlcmVuY2UgY291bnQgaXQncyByZWFjaGVkIDAsIHRoZSBVUkwgc2NoZW1lIHJlcXVlc3Qg
aXMgZnJlZWQuCisgKgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCByZXF1ZXN0IG9iamVjdCB0
byBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0X3VucmVmKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisv
KioKKyAqIFF1ZXJ5IHRoZSBVUkwgc2NoZW1lIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogQHBh
cmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUg
VVJMIHNjaGVtZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMK
KyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZl
ciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0
cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0
IGNoYXIgKmV3a191cmxfc2NoZW1lX3JlcXVlc3Rfc2NoZW1lX2dldChjb25zdCBFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSB0aGUgVVJMIGZvciB0aGlz
IHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnku
CisgKgorICogQHJldHVybiB0aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRo
aXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBj
cHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisg
Ki8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9zY2hlbWVfcmVxdWVzdF91cmxfZ2V0KGNvbnN0
IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5IHRoZSBw
YXRoIHBhcnQgb2YgdGhlIFVSTCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1
ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIHBhdGggcG9p
bnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1
YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAq
ICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQo
KSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3BhdGhfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJl
cXVlc3QpOworCisvKioKKyAqIEZpbmlzaCBhIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgYnkgc2V0
dGluZyB0aGUgY29udGVudCBvZiB0aGUgcmVxdWVzdCBhbmQgaXRzIG1pbWUgdHlwZS4KKyAqCisg
KiBAcGFyYW0gcmVxdWVzdCBhIEV3a19VcmxfU2NoZW1lX1JlcXVlc3QuCisgKiBAcGFyYW0gY29u
dGVudF9kYXRhIHRoZSBkYXRhIGNvbnRlbnQgb2YgdGhlIHJlcXVlc3QgKG1heSBiZSAlYyBOVUxM
IGlmIHRoZSBjb250ZW50IGlzIGVtcHR5KS4KKyAqIEBwYXJhbSBjb250ZW50X2xlbmd0aCB0aGUg
bGVuZ3RoIG9mIHRoZSBAYSBjb250ZW50X2RhdGEuCisgKiBAcGFyYW0gbWltZV90eXBlIHRoZSBj
b250ZW50IHR5cGUgb2YgdGhlIHN0cmVhbSBvciAlYyBOVUxMIGlmIG5vdCBrbm93bgorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChjb25zdCBFd2tfVXJs
X1NjaGVtZV9SZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICpjb250ZW50X2RhdGEsIHVuc2lnbmVkIGlu
dCBjb250ZW50X2xlbmd0aCwgY29uc3QgY2hhciAqbWltZV90eXBlKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a191cmxfc2NoZW1lX3JlcXVlc3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hl
bWVfcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lNWRkNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV0tCYXNlLmgiCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1NjaGVtZV9S
ZXF1ZXN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRl
eHQgRXdrX0NvbnRleHQ7CisKK0V3a19VcmxfU2NoZW1lX1JlcXVlc3QqIGV3a191cmxfc2NoZW1l
X3JlcXVlc3RfbmV3KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiwgdWludDY0X3Qg
cmVxdWVzdElEKTsKKwordWludDY0X3QgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9pZF9nZXQoY29u
c3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCk7CisKKyNlbmRpZiAvLyBld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>