<?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>76789</bug_id>
          
          <creation_ts>2012-01-21 13:11:24 -0800</creation_ts>
          <short_desc>[GTK] [WK2] Add WebKitResponsePolicyDecision</short_desc>
          <delta_ts>2012-02-08 07:45:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>
          <dependson>76343</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>540164</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-21 13:11:24 -0800</bug_when>
    <thetext>We need a class to handle response policy decisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540166</commentid>
    <comment_count>1</comment_count>
      <attachid>123456</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-21 13:37:44 -0800</bug_when>
    <thetext>Created attachment 123456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540168</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-21 13:41:20 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540429</commentid>
    <comment_count>3</comment_count>
      <attachid>123456</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-23 01:25:43 -0800</bug_when>
    <thetext>Comment on attachment 123456
Patch

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

Looks good, I would just move the request to the parent class.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:51
&gt; +    GRefPtr&lt;WebKitURIRequest&gt; request;

Both Response and Navigation have a Request, so I guess it should be inherited

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:126
&gt; +/*

Double * is needed here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:132
&gt; + * Returns: The URI request that is associated with this policy decision.

Mark this as transfer none

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:140
&gt; +/*

Double * here too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:146
&gt; + * Returns: The URI response that is associated with this policy decision.

transfer none

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:158
&gt; +    decision-&gt;priv-&gt;request = adoptGRef(webkitURIRequestCreateForResourceRequest(toImpl(request)-&gt;resourceRequest()));
&gt; +    decision-&gt;priv-&gt;response = adoptGRef(webkitURIResponseCreateForResourceResponse(toImpl(response)-&gt;resourceResponse()));

I think these should be construct only properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541803</commentid>
    <comment_count>4</comment_count>
      <attachid>123834</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-24 16:08:38 -0800</bug_when>
    <thetext>Created attachment 123834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541806</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-24 16:12:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 123456 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123456&amp;action=review
&gt; 
&gt; Looks good, I would just move the request to the parent class.

It&apos;s probably not a good idea in this case because there may be other policy decision types that do not have requests associated with them (such as geolocation).

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:126
&gt; &gt; +/*
&gt; 
&gt; Double * is needed here.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:132
&gt; &gt; + * Returns: The URI request that is associated with this policy decision.
&gt; 
&gt; Mark this as transfer none

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:140
&gt; &gt; +/*
&gt; 
&gt; Double * here too.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:146
&gt; &gt; + * Returns: The URI response that is associated with this policy decision.
&gt; transfer none

Fixed. 

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:158
&gt; &gt; +    decision-&gt;priv-&gt;request = adoptGRef(webkitURIRequestCreateForResourceRequest(toImpl(request)-&gt;resourceRequest()));
&gt; &gt; +    decision-&gt;priv-&gt;response = adoptGRef(webkitURIResponseCreateForResourceResponse(toImpl(response)-&gt;resourceResponse()));
&gt; 
&gt; I think these should be construct only properties

I skipped this suggestion as well for the reason I outlined on the original policy client bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542324</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-25 09:05:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 123456 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123456&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good, I would just move the request to the parent class.
&gt; 
&gt; It&apos;s probably not a good idea in this case because there may be other policy decision types that do not have requests associated with them (such as geolocation).

Ah, good point, I didn&apos;t know there were more policy decision types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542328</commentid>
    <comment_count>7</comment_count>
      <attachid>123834</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-25 09:08:44 -0800</bug_when>
    <thetext>Comment on attachment 123834
Patch

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

Looks good to me

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:29
&gt; +#include &lt;WebKit2/WKAPICast.h&gt;

Already included by WebKitPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:24
&gt; +#include &lt;WebKitPrivate.h&gt;

Use #include &quot;WebKitPrivate.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542506</commentid>
    <comment_count>8</comment_count>
      <attachid>123983</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-25 11:53:56 -0800</bug_when>
    <thetext>Created attachment 123983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542516</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-25 12:06:35 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:29
&gt; &gt; +#include &lt;WebKit2/WKAPICast.h&gt;
&gt; 
&gt; Already included by WebKitPrivate.h

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:24
&gt; &gt; +#include &lt;WebKitPrivate.h&gt;
&gt; 
&gt; Use #include &quot;WebKitPrivate.h&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542517</commentid>
    <comment_count>10</comment_count>
      <attachid>123986</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-25 12:07:13 -0800</bug_when>
    <thetext>Created attachment 123986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550681</commentid>
    <comment_count>11</comment_count>
      <attachid>123986</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-07 00:38:07 -0800</bug_when>
    <thetext>Comment on attachment 123986
Patch

Looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550945</commentid>
    <comment_count>12</comment_count>
      <attachid>123986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 06:44:01 -0800</bug_when>
    <thetext>Comment on attachment 123986
Patch

Rejecting attachment 123986 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:
yDecisionPrivate.h
patching file Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml
patching file Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt
patching file Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp
Hunk #2 succeeded at 145 (offset 8 lines).
Hunk #3 succeeded at 225 (offset 8 lines).

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;Philippe N...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11443281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551831</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-07 23:21:49 -0800</bug_when>
    <thetext>Committed r107043: &lt;http://trac.webkit.org/changeset/107043&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123456</attachid>
            <date>2012-01-21 13:37:44 -0800</date>
            <delta_ts>2012-01-24 16:08:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76789-20120121133743.patch</filename>
            <type>text/plain</type>
            <size>22365</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWY5ZGYyYzYyMjQyOGNl
Yzg0Mzc3MmM5MGNjMjQ0YmVmNGQ1NjY1OC4uYzA2NWY5NDI4NmUzMmJiMjYyM2U1ZjY1ZWQ2YzBh
YzI0OGM2NDNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEyLTAxLTIxICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBbV0sy
XSBBZGQgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uIEdPYmplY3QsIHVzZSBpdCBmb3IgcmVzcG9uc2UKKyAgICAgICAgcG9saWN5IGRlY2lzaW9u
cyBhbmQgYWRkIGEgdGVzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
c291cmNlIGZpbGVzIHRvIHRoZSBsaXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBvbGljeUNsaWVudC5jcHA6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNh
bGxiYWNrKTogQWRkZWQgdGhpcyBjYWxsYmFjayB3aGljaCBjcmVhdGVzIHRoZSByZXF1ZXN0Cisg
ICAgICAgIGFuZCBmaXJlcyB0aGUgc2lnbmFsLgorICAgICAgICAoYXR0YWNoUG9saWN5Q2xpZW50
VG9QYWdlKTogQWRkZWQgbmV3IGNhbGxiYWNrIHRvIHRoZSBDIEFQSSBwb2xpY3kgY2xpZW50Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBv
bGljeURlY2lzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6IEFkZGVkIG5ldyBkb2NzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xp
Y3lDbGllbnQuY3BwOgorICAgICAgICAodGVzdFJlc3BvbnNlUG9saWN5KTogQWRkZWQgdGhpcyB0
ZXN0IGZvciByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25zLgorICAgICAgICAoc2VydmVyQ2FsbGJh
Y2spOiBBZGRlZCBhIFNvdXBTZXJ2ZXIgdG8gdGVzdCBwb2xpY3kgcmVzcG9uc2UgcG9saWN5IGRl
Y2lzaW9ucy4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERpdHRvLgorICAgICAgICAoYWZ0ZXJBbGwp
OiBEaXR0by4KKworMjAxMi0wMS0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKICAgICAgICAgW0dUS10gW1dLMl0gSW1wbGVtZW50IHRoZSBwb2xpY3kgY2xpZW50
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0Mwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDk2Y2QxZDkxZTU4YzY5OTdiM2JhNjY4YzYyNWMwYzZh
YTIwYmVhNmIuLmMyNGY1MGUxZjU4ODZlNDExZGI0YmUwYmZkOTE5YTI2MTgxMjVjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCkBAIC04Niw2ICs4Niw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlX0hF
QURFUlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lz
aW9uLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmggXApA
QCAtNTMyLDYgKzUzMyw5IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50UHJpdmF0ZS5oIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURl
Y2lzaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbi5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA1ZDVm
YzIyOGY1YjhlY2E3ZjVmYjE1Y2M0MzFhMjNhOGQxM2NlNTA5Li41ZjdkZmEwNDk5MGFmZWY1Zjdh
N2QyNTRiNzFjOWZjM2UxOGJhYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJXZWJLaXRQb2xpY3lDbGllbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
UG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKQEAgLTU5LDYgKzYwLDE1IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNrKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX0RFQ0lT
SU9OKGRlY2lzaW9uLmdldCgpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVz
cG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBHUmVmUHRyPFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24+IGRl
Y2lzaW9uID0KKyAgICAgICAgYWRvcHRHUmVmKHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25D
cmVhdGUocmVxdWVzdCwgcmVzcG9uc2UsIGxpc3RlbmVyKSk7CisgICAgd2Via2l0V2ViVmlld01h
a2VQb2xpY3lEZWNpc2lvbihXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BPTElDWV9E
RUNJU0lPTl9UWVBFX1JFU1BPTlNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbi5nZXQoKSkpOworfQorCiB2b2lkIGF0
dGFjaFBvbGljeUNsaWVudFRvUGFnZShXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBXS1BhZ2VQb2xp
Y3lDbGllbnQgcG9saWN5Q2xpZW50ID0gewpAQCAtNjYsNyArNzYsNyBAQCB2b2lkIGF0dGFjaFBv
bGljeUNsaWVudFRvUGFnZShXS1BhZ2VSZWYgcGFnZSkKICAgICAgICAgMCwgLy8gY2xpZW50SW5m
bwogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2ssCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNrLAotICAgICAgICAwLCAv
LyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNhbGxiYWNrLAorICAgICAgICBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZUNhbGxiYWNrLAogICAgICAgICAwLCAvLyB1bmFibGVUb0ltcGxlbWVudFBvbGlj
eQogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChwYWdlLCAmcG9saWN5Q2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc4NTJj
MzdkYjE2YWFlODQ4ZWZiNzJhMGE2MTA3NmE1YWIyNmFhYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b24uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRS
ZXNwb25zZVBvbGljeURlY2lzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcG9saWN5IGRl
Y2lzaW9uIGZvciByZXNvdXJjZSByZXNwb25zZXMKKyAqIEBUaXRsZTogV2ViS2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbgorICogQFNlZV9hbHNvOiAjV2ViS2l0UG9saWN5RGVjaXNpb24sICNXZWJL
aXRXZWJWaWV3CisgKgorICogV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiByZXByZXNlbnRz
IGEgcG9saWN5IGRlY2lzaW9uIGZvciBhCisgKiByZXNvdXJjZSByZXNwb25zZSwgd2hldGhlciBm
cm9tIHRoZSBuZXR3b3JrIG9yIHRoZSBsb2NhbCBzeXN0ZW0uCisgKiBBIHZlcnkgY29tbW9uIHVz
ZWNhc2UgZm9yIHRoZXNlIHR5cGVzIG9mIGRlY2lzaW9uIGlzIGRlY2lkaW5nCisgKiB3aGV0aGVy
IG9yIG5vdCB0byBkb3dubG9hZCBhIHBhcnRpY3VsYXIgcmVzb3VyY2Ugb3IgdG8gbG9hZCBpdAor
ICogbm9ybWFsbHkuCisgKi8KK0dfREVGSU5FX1RZUEUoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbiwgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbiwgV0VCS0lUX1RZUEVfUE9MSUNZ
X0RFQ0lTSU9OKQorCitzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRl
IHsKKyAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3Q7CisgICAgR1JlZlB0cjxX
ZWJLaXRVUklSZXNwb25zZT4gcmVzcG9uc2U7Cit9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisg
ICAgUFJPUF9SRVFVRVNULAorICAgIFBST1BfUkVTUE9OU0UsCit9OworCitzdGF0aWMgdm9pZCB3
ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZGVjaXNpb24tPnByaXYgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUoZGVjaXNpb24sIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJ
U0lPTiwgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUpOworICAgIG5ldyAoZGVj
aXNpb24tPnByaXYpIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25GaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmplY3Qp
LT5wcml2LT5+V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKKyAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5
RGVjaXNpb25HZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihv
YmplY3QpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1JFUVVFU1Q6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9k
ZWNpc2lvbl9nZXRfcmVxdWVzdChkZWNpc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfUkVTUE9OU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0
X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVzcG9uc2UoZGVjaXNpb24pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fY2xh
c3NfaW5pdChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lz
aW9uQ2xhc3MpOworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb25GaW5hbGl6ZTsKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5OworICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvblByaXZhdGUpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFJlc3BvbnNlUG9saWN5RGVj
aXNpb246cmVxdWVzdDoKKyAgICAgKgorICAgICAqIFRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhl
ICNXZWJLaXRVUklSZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgICAgICogcG9saWN5IGRl
Y2lzaW9uLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1JFUVVF
U1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KCJyZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIlJlc3BvbnNlIFVSSSByZXF1ZXN0IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgVVJJIHJlcXVlc3Qg
dGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVjaXNpb24iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1VSSV9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uOnJlc3BvbnNlOgorICAgICAqCisgICAgICogVGhp
cyBwcm9wZXJ0eSBjb250YWlucyB0aGUgI1dlYktpdFVSSVJlc3BvbnNlIGFzc29jaWF0ZWQgd2l0
aCB0aGlzCisgICAgICogcG9saWN5IGRlY2lzaW9uLgorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJyZXNwb25zZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVUkkgcmVzcG9uc2UiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IlRoZSBVUkkgcmVzcG9uc2UgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVj
aXNpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1VSSV9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisK
K30KKworLyoKKyAqIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3JlcXVlc3Q6
CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24KKyAqCisgKiBH
ZXRzIHRoZSB2YWx1ZSBvZiB0aGUgI1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb246cmVxdWVz
dCBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiBUaGUgVVJJIHJlcXVlc3QgdGhhdCBpcyBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVjaXNpb24uCisgKi8KK1dlYktpdFVSSVJlcXVlc3Qq
IHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3JlcXVlc3QoV2ViS2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbiksIDApOworICAgIHJl
dHVybiBkZWNpc2lvbi0+cHJpdi0+cmVxdWVzdC5nZXQoKTsKK30KKworLyoKKyAqIHdlYmtpdF9y
ZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3Jlc3BvbnNlOgorICogQGRlY2lzaW9uOiBhICNX
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uCisgKgorICogR2V0cyB0aGUgdmFsdWUgb2YgdGhl
ICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uOnJlc3BvbnNlIHByb3BlcnR5LgorICoKKyAq
IFJldHVybnM6IFRoZSBVUkkgcmVzcG9uc2UgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBw
b2xpY3kgZGVjaXNpb24uCisgKi8KK1dlYktpdFVSSVJlc3BvbnNlKiB3ZWJraXRfcmVzcG9uc2Vf
cG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZShXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9u
KiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfUkVTUE9O
U0VfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSwgMCk7CisgICAgcmV0dXJuIGRlY2lzaW9uLT5w
cml2LT5yZXNwb25zZS5nZXQoKTsKK30KKworV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiog
d2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkNyZWF0ZShXS1VSTFJlcXVlc3RSZWYgcmVxdWVz
dCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxp
c3RlbmVyKQoreworICAgIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0g
V0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
UkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OLCBOVUxMKSk7CisgICAgZGVjaXNpb24tPnByaXYtPnJl
cXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVz
dCh0b0ltcGwocmVxdWVzdCktPnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgZGVjaXNpb24tPnBy
aXYtPnJlc3BvbnNlID0gYWRvcHRHUmVmKHdlYmtpdFVSSVJlc3BvbnNlQ3JlYXRlRm9yUmVzb3Vy
Y2VSZXNwb25zZSh0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICB3
ZWJraXRQb2xpY3lEZWNpc2lvblNldExpc3RlbmVyKFdFQktJVF9QT0xJQ1lfREVDSVNJT04oZGVj
aXNpb24pLCBsaXN0ZW5lcik7CisgICAgcmV0dXJuIGRlY2lzaW9uOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2NTNmY2MxNGZiNjRjM2NiYTliNjRmNDBiMmE2
ODBjYWJmZjYxZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbl9oCisjZGVmaW5lIFdl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25faAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFBvbGljeURlY2lzaW9uLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25z
ZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorCitHX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OICAgICAg
ICAgICAgKHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lf
REVDSVNJT04sIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24pKQorI2RlZmluZSBXRUJLSVRf
UkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTiwg
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1JF
U1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04pKQorI2Rl
ZmluZSBXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElD
WV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT05fR0VU
X0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZ
UEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9u
Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiAg
ICAgICAgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbjsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3MgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblBy
aXZhdGUgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGU7CisKK3N0cnVjdCBfV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiB7CisgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gcGFy
ZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvblByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5RGVj
aXNpb25DbGFzcyB7CisgICAgV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcyBwYXJlbnRfY2xhc3M7
Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9u
X2dldF90eXBlICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVSSVJlcXVl
c3QgKgord2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdCAgICAgICAg
IChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7CisKK1dFQktJVF9BUEkg
V2ViS2l0VVJJUmVzcG9uc2UgKgord2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRf
cmVzcG9uc2UgICAgICAgIChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b25Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIyYTQxMmM3NTFmNWE2YjA4NTY3YTdlMjAzNGY5YTQ4
YTYzYmQ2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmgKQEAgLTAsMCArMSwyOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvblByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbi5oIgorI2luY2x1ZGUgPFdlYktpdFByaXZhdGUuaD4KKworV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbiogd2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkNyZWF0ZShXS1VSTFJlcXVl
c3RSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZik7CisKKyNl
bmRpZiAvLyBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAppbmRleCAyOGRlMjlmYTcwNjZkY2VjMzdkNTBlNTlhNTI0NzhiYjFkZTg0OTBmLi4w
ZjhjYzJmZWRmZTViNzdlZWY0YzlkZjk1NzM3YTA3M2UyMTZlOTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwKQEAgLTIyLDYgKzIyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
V2luZG93UHJvcGVydGllcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0RXJyb3IueG1sIi8+CiAgIDwvY2hhcHRlcj4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKaW5kZXggYTUzMzYwOWRhNzc4ZGVmYzZhYTc5ZjcwNzA5NDgyZWIyNTk0MjA1ZS4u
YTcwOTI2ODgzNWRkYTY5YTA5YTg5M2NkZDEwMDE5MDBjYTM0MTFhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CkBAIC0zMzQsNiArMzM0LDI2IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb248L0ZJTEU+CitXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uCit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0Cit3ZWJraXRf
cmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZQorCis8U1VCU0VDVElPTiBTdGFu
ZGFyZD4KK1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DbGFzcworV0VCS0lUX1RZUEVfUkVT
UE9OU0VfUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OCitX
RUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfUkVTUE9OU0VfUE9MSUNZ
X0RFQ0lTSU9OX0NMQVNTCitXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNT
CitXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0dFVF9DTEFTUworCis8U1VCU0VDVElP
TiBQcml2YXRlPgorV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUKK3dlYmtpdF9y
ZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+
CiA8RklMRT5XZWJLaXRFcnJvcjwvRklMRT4KIFdFQktJVF9ORVRXT1JLX0VSUk9SCiBXRUJLSVRf
UExVR0lOX0VSUk9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IDc3NGNk
ZWU5NzczMmMwZDJjZGU2Y2Q0MjA4YjhmNDg5Zjg2M2FkNDQuLjFjZjZhZWI1N2I3NWM0ZGE2MmY5
ZmYzNzVhMjIwNmUxZTMyMWQ1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3Bw
CkBAIC0yMCw5ICsyMCwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTG9h
ZFRyYWNraW5nVGVzdC5oIgorI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKKwogY2xhc3MgUG9saWN5Q2xpZW50
VGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9U
RVNUX0ZJWFRVUkUoUG9saWN5Q2xpZW50VGVzdCk7CkBAIC0xMzQsNiArMTM3LDM3IEBAIHN0YXRp
YyB2b2lkIHRlc3ROYXZpZ2F0aW9uUG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCks
ID09LCAwKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFJlc3BvbnNlUG9saWN5KFBvbGljeUNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lv
blR5cGVGaWx0ZXIgPSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0U7CisKKyAg
ICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2U7
CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
dGVzdC0+bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMpOworICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9
PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50
KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hl
ZCk7CisKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkg
PSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRh
dGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50
c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpOworICAgIGdfYXNzZXJ0
X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
RmluaXNoZWQpOworCisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJv
bm91c2x5ID0gZmFsc2U7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9s
aWN5Q2xpZW50VGVzdDo6SWdub3JlOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMp
OworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJh
Y2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
dGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxM
b2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9
PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKK30KKwogc3RydWN0IENyZWF0ZUNh
bGxiYWNrRGF0YSB7CiAgICAgYm9vbCB0cmllZFRvT3BlbldpbmRvdzsKICAgICBHTWFpbkxvb3Aq
IG1haW5Mb29wOwpAQCAtMTgzLDEyICsyMTcsMzEgQEAgc3RhdGljIHZvaWQgdGVzdE5ld1dpbmRv
d1BvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0KCFkYXRhLnRyaWVkVG9PcGVuV2luZG93KTsKIH0KIAorc3RhdGljIHZvaWQgc2VydmVyQ2Fs
bGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hh
ciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7Cisg
ICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291
cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVE
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNw
b25zZVN0cmluZyA9ICI8aHRtbD48Ym9keT5UZXN0aW5nITwvYm9keT48L2h0bWw+IjsKKyAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1P
UllfU1RBVElDLCByZXNwb25zZVN0cmluZywgc3RybGVuKHJlc3BvbnNlU3RyaW5nKSk7CisgICAg
c291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Cit9CisK
IHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIo
KTsKKyAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCiAgICAgUG9saWN5Q2xpZW50
VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAibmF2aWdhdGlvbi1wb2xpY3kiLCB0ZXN0
TmF2aWdhdGlvblBvbGljeSk7CisgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xp
Y3lDbGllbnQiLCAicmVzcG9uc2UtcG9saWN5IiwgdGVzdFJlc3BvbnNlUG9saWN5KTsKICAgICBQ
b2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuZXctd2luZG93LXBv
bGljeSIsIHRlc3ROZXdXaW5kb3dQb2xpY3kpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKKyAg
ICBkZWxldGUga1NlcnZlcjsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123834</attachid>
            <date>2012-01-24 16:08:38 -0800</date>
            <delta_ts>2012-01-25 11:53:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76789-20120124160836.patch</filename>
            <type>text/plain</type>
            <size>22393</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjI0ZjIzZWJhN2Y2MmM5
MGUzZTg5Y2EzNjBkODM0N2U4YWVhNGZkOS4uMDE3ZjQwY2RjMzM5YTRjZjc4MzM5NWRiMWJmMjdk
NzJhZGE5MzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEyLTAxLTI0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBbV0sy
XSBBZGQgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uIEdPYmplY3QsIHVzZSBpdCBmb3IgcmVzcG9uc2UKKyAgICAgICAgcG9saWN5IGRlY2lzaW9u
cyBhbmQgYWRkIGEgdGVzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
c291cmNlIGZpbGVzIHRvIHRoZSBsaXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBvbGljeUNsaWVudC5jcHA6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNh
bGxiYWNrKTogQWRkZWQgdGhpcyBjYWxsYmFjayB3aGljaCBjcmVhdGVzIHRoZSByZXF1ZXN0Cisg
ICAgICAgIGFuZCBmaXJlcyB0aGUgc2lnbmFsLgorICAgICAgICAoYXR0YWNoUG9saWN5Q2xpZW50
VG9QYWdlKTogQWRkZWQgbmV3IGNhbGxiYWNrIHRvIHRoZSBDIEFQSSBwb2xpY3kgY2xpZW50Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBv
bGljeURlY2lzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6IEFkZGVkIG5ldyBkb2NzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xp
Y3lDbGllbnQuY3BwOgorICAgICAgICAodGVzdFJlc3BvbnNlUG9saWN5KTogQWRkZWQgdGhpcyB0
ZXN0IGZvciByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25zLgorICAgICAgICAoc2VydmVyQ2FsbGJh
Y2spOiBBZGRlZCBhIFNvdXBTZXJ2ZXIgdG8gdGVzdCBwb2xpY3kgcmVzcG9uc2UgcG9saWN5IGRl
Y2lzaW9ucy4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERpdHRvLgorICAgICAgICAoYWZ0ZXJBbGwp
OiBEaXR0by4KKworMjAxMi0wMS0yNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKICAgICAgICAgW0dUS10gW1dLMl0gSW1wbGVtZW50IHRoZSBwb2xpY3kgY2xpZW50
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0Mwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDk4NDBmNTliOTAxMTRmNGJiMmY3NzA0MjEzODBmN2Yx
OTgxMDhkZjYuLmMzOTQ5NWNkYzcyNWNjNzQzY2ExZmQwMGVkNWI1ZWU4NDQ5NzQxY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCkBAIC04Nyw2ICs4Nyw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlX0hF
QURFUlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lz
aW9uLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmggXApA
QCAtNTM4LDYgKzUzOSw5IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50UHJpdmF0ZS5oIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURl
Y2lzaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbi5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA1ZDVm
YzIyOGY1YjhlY2E3ZjVmYjE1Y2M0MzFhMjNhOGQxM2NlNTA5Li41ZjdkZmEwNDk5MGFmZWY1Zjdh
N2QyNTRiNzFjOWZjM2UxOGJhYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJXZWJLaXRQb2xpY3lDbGllbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
UG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKQEAgLTU5LDYgKzYwLDE1IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNrKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX0RFQ0lT
SU9OKGRlY2lzaW9uLmdldCgpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVz
cG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBHUmVmUHRyPFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24+IGRl
Y2lzaW9uID0KKyAgICAgICAgYWRvcHRHUmVmKHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25D
cmVhdGUocmVxdWVzdCwgcmVzcG9uc2UsIGxpc3RlbmVyKSk7CisgICAgd2Via2l0V2ViVmlld01h
a2VQb2xpY3lEZWNpc2lvbihXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BPTElDWV9E
RUNJU0lPTl9UWVBFX1JFU1BPTlNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbi5nZXQoKSkpOworfQorCiB2b2lkIGF0
dGFjaFBvbGljeUNsaWVudFRvUGFnZShXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBXS1BhZ2VQb2xp
Y3lDbGllbnQgcG9saWN5Q2xpZW50ID0gewpAQCAtNjYsNyArNzYsNyBAQCB2b2lkIGF0dGFjaFBv
bGljeUNsaWVudFRvUGFnZShXS1BhZ2VSZWYgcGFnZSkKICAgICAgICAgMCwgLy8gY2xpZW50SW5m
bwogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2ssCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNrLAotICAgICAgICAwLCAv
LyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNhbGxiYWNrLAorICAgICAgICBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZUNhbGxiYWNrLAogICAgICAgICAwLCAvLyB1bmFibGVUb0ltcGxlbWVudFBvbGlj
eQogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChwYWdlLCAmcG9saWN5Q2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNDgw
YTg5N2Q3ZWNiNzI0NzkxNjEwYTQ2NWVkMGE0MGVkNTU4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b24uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRS
ZXNwb25zZVBvbGljeURlY2lzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcG9saWN5IGRl
Y2lzaW9uIGZvciByZXNvdXJjZSByZXNwb25zZXMKKyAqIEBUaXRsZTogV2ViS2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbgorICogQFNlZV9hbHNvOiAjV2ViS2l0UG9saWN5RGVjaXNpb24sICNXZWJL
aXRXZWJWaWV3CisgKgorICogV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiByZXByZXNlbnRz
IGEgcG9saWN5IGRlY2lzaW9uIGZvciBhCisgKiByZXNvdXJjZSByZXNwb25zZSwgd2hldGhlciBm
cm9tIHRoZSBuZXR3b3JrIG9yIHRoZSBsb2NhbCBzeXN0ZW0uCisgKiBBIHZlcnkgY29tbW9uIHVz
ZWNhc2UgZm9yIHRoZXNlIHR5cGVzIG9mIGRlY2lzaW9uIGlzIGRlY2lkaW5nCisgKiB3aGV0aGVy
IG9yIG5vdCB0byBkb3dubG9hZCBhIHBhcnRpY3VsYXIgcmVzb3VyY2Ugb3IgdG8gbG9hZCBpdAor
ICogbm9ybWFsbHkuCisgKi8KK0dfREVGSU5FX1RZUEUoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbiwgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbiwgV0VCS0lUX1RZUEVfUE9MSUNZ
X0RFQ0lTSU9OKQorCitzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRl
IHsKKyAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3Q7CisgICAgR1JlZlB0cjxX
ZWJLaXRVUklSZXNwb25zZT4gcmVzcG9uc2U7Cit9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisg
ICAgUFJPUF9SRVFVRVNULAorICAgIFBST1BfUkVTUE9OU0UsCit9OworCitzdGF0aWMgdm9pZCB3
ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZGVjaXNpb24tPnByaXYgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUoZGVjaXNpb24sIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJ
U0lPTiwgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUpOworICAgIG5ldyAoZGVj
aXNpb24tPnByaXYpIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25GaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmplY3Qp
LT5wcml2LT5+V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKKyAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5
RGVjaXNpb25HZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihv
YmplY3QpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1JFUVVFU1Q6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9k
ZWNpc2lvbl9nZXRfcmVxdWVzdChkZWNpc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfUkVTUE9OU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0
X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVzcG9uc2UoZGVjaXNpb24pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fY2xh
c3NfaW5pdChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lz
aW9uQ2xhc3MpOworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb25GaW5hbGl6ZTsKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5OworICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvblByaXZhdGUpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFJlc3BvbnNlUG9saWN5RGVj
aXNpb246cmVxdWVzdDoKKyAgICAgKgorICAgICAqIFRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhl
ICNXZWJLaXRVUklSZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgICAgICogcG9saWN5IGRl
Y2lzaW9uLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1JFUVVF
U1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KCJyZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIlJlc3BvbnNlIFVSSSByZXF1ZXN0IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgVVJJIHJlcXVlc3Qg
dGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVjaXNpb24iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1VSSV9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uOnJlc3BvbnNlOgorICAgICAqCisgICAgICogVGhp
cyBwcm9wZXJ0eSBjb250YWlucyB0aGUgI1dlYktpdFVSSVJlc3BvbnNlIGFzc29jaWF0ZWQgd2l0
aCB0aGlzCisgICAgICogcG9saWN5IGRlY2lzaW9uLgorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJyZXNwb25zZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVUkkgcmVzcG9uc2UiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IlRoZSBVUkkgcmVzcG9uc2UgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVj
aXNpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1VSSV9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisK
K30KKworLyoqCisgKiB3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0
OgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uCisgKgorICog
R2V0cyB0aGUgdmFsdWUgb2YgdGhlICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uOnJlcXVl
c3QgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBUaGUgVVJJIHJl
cXVlc3QgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVjaXNpb24uCisgKi8K
K1dlYktpdFVSSVJlcXVlc3QqIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3Jl
cXVlc3QoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihkZWNp
c2lvbiksIDApOworICAgIHJldHVybiBkZWNpc2lvbi0+cHJpdi0+cmVxdWVzdC5nZXQoKTsKK30K
KworLyoqCisgKiB3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZToK
KyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbgorICoKKyAqIEdl
dHMgdGhlIHZhbHVlIG9mIHRoZSAjV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbjpyZXNwb25z
ZSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IFRoZSBVUkkgcmVz
cG9uc2UgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgZGVjaXNpb24uCisgKi8K
K1dlYktpdFVSSVJlc3BvbnNlKiB3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9y
ZXNwb25zZShXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OKGRl
Y2lzaW9uKSwgMCk7CisgICAgcmV0dXJuIGRlY2lzaW9uLT5wcml2LT5yZXNwb25zZS5nZXQoKTsK
K30KKworV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiogd2Via2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbkNyZWF0ZShXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyKQoreworICAgIFdlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX1JFU1BPTlNFX1BPTElD
WV9ERUNJU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lT
SU9OLCBOVUxMKSk7CisgICAgZGVjaXNpb24tPnByaXYtPnJlcXVlc3QgPSBhZG9wdEdSZWYod2Vi
a2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVzdCh0b0ltcGwocmVxdWVzdCktPnJl
c291cmNlUmVxdWVzdCgpKSk7CisgICAgZGVjaXNpb24tPnByaXYtPnJlc3BvbnNlID0gYWRvcHRH
UmVmKHdlYmtpdFVSSVJlc3BvbnNlQ3JlYXRlRm9yUmVzb3VyY2VSZXNwb25zZSh0b0ltcGwocmVz
cG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICB3ZWJraXRQb2xpY3lEZWNpc2lvblNl
dExpc3RlbmVyKFdFQktJVF9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pLCBsaXN0ZW5lcik7Cisg
ICAgcmV0dXJuIGRlY2lzaW9uOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2NTNmY2MxNGZiNjRjM2NiYTliNjRmNDBiMmE2ODBjYWJmZjYxZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25z
ZVBvbGljeURlY2lzaW9uLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFk
ZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0
Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbl9oCisjZGVmaW5lIFdlYktpdFJlc3BvbnNlUG9saWN5RGVj
aXNpb25faAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBvbGljeURlY2lzaW9uLmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OICAgICAgICAgICAgKHdlYmtpdF9yZXNwb25z
ZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1JFU1BPTlNFX1BP
TElDWV9ERUNJU0lPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24pKQorI2RlZmluZSBXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lT
SU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lP
TihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRfSVNfUkVTUE9O
U0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5l
IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RF
Q0lTSU9OLCBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiAgICAgICAgV2ViS2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uQ2xhc3MgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUgV2ViS2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvblByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbiB7CisgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gcGFyZW50OworCisgICAgLyo8IHByaXZh
dGUgPiovCisgICAgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUgKnByaXY7Cit9
OworCitzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DbGFzcyB7CisgICAgV2Vi
S2l0UG9saWN5RGVjaXNpb25DbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdU
eXBlCit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF90eXBlICAgICAgICAgICAg
KHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVSSVJlcXVlc3QgKgord2Via2l0X3Jlc3BvbnNl
X3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdCAgICAgICAgIChXZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uICpkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgV2ViS2l0VVJJUmVzcG9uc2UgKgor
d2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVzcG9uc2UgICAgICAgIChXZWJL
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7CisKK0dfRU5EX0RFQ0xTCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWIyYTQxMmM3NTFmNWE2YjA4NTY3YTdlMjAzNGY5YTQ4YTYzYmQ2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb25Qcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Q
cml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oIgorI2luY2x1ZGUgPFdl
YktpdFByaXZhdGUuaD4KKworV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiogd2Via2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbkNyZWF0ZShXS1VSTFJlcXVlc3RSZWYsIFdLVVJMUmVzcG9uc2VS
ZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZik7CisKKyNlbmRpZiAvLyBXZWJLaXRSZXNwb25z
ZVBvbGljeURlY2lzaW9uUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBjNmY5NDNh
YjJhNjg4MDI5ZDk1NmViYjY4NTBmZWNiMWYyNGMyMGExLi5hZjBjZGFlN2M5NzdkZjFkNWU0OTZj
MGZmYjA3N2Y5NGIyZTk0ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIzLDYgKzIzLDcg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RG93bmxvYWQueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ueG1sIi8+
CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24u
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEVycm9yLnhtbCIvPgogICA8
L2NoYXB0ZXI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDIxZDQ3YjM3NzhmYWRi
NjQ2OTIxNzMzOGRkZTVmZTZkNDc3MTJkYmUuLmNmYjA0YmY0ODdhODBmOTU3NzIzZGI5MGZkYTUw
OWU5MmZlMDhmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMzU5LDYgKzM1OSwy
NiBAQCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUKIDwvU0VDVElP
Tj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uPC9GSUxF
PgorV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbgord2Via2l0X3Jlc3BvbnNlX3BvbGljeV9k
ZWNpc2lvbl9nZXRfcmVxdWVzdAord2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRf
cmVzcG9uc2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRSZXNwb25zZVBvbGljeURl
Y2lzaW9uQ2xhc3MKK1dFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTgorV0VCS0lU
X1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTgorV0VCS0lUX0lTX1JFU1BPTlNFX1BPTElDWV9ERUNJ
U0lPTgorV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTl9DTEFTUworV0VCS0lUX0lTX1JF
U1BPTlNFX1BPTElDWV9ERUNJU0lPTl9DTEFTUworV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJ
U0lPTl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb25Qcml2YXRlCit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF90
eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0RXJyb3I8L0ZJTEU+CiBX
RUJLSVRfTkVUV09SS19FUlJPUgogV0VCS0lUX1BMVUdJTl9FUlJPUgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFBvbGljeUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
UG9saWN5Q2xpZW50LmNwcAppbmRleCAxZDBmYjNjOWU0YzUzZmY1OTRkMDRlZTY4NGJjNzAyNzBi
ZGQ2MjczLi45ZTY2OGY0YTAyNDVmODVjMzAxYmJiYTUwNzQxMGE4YTU0MzhlZTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0UG9s
aWN5Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcApAQCAtMjAsOSArMjAsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRlICJX
ZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtT
ZXJ2ZXI7CisKIGNsYXNzIFBvbGljeUNsaWVudFRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0
IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFBvbGljeUNsaWVudFRlc3Qp
OwpAQCAtMTM0LDYgKzEzNywzNyBAQCBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQ
b2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGlu
dCh0ZXN0LT5tX2xvYWRFdmVudHMuc2l6ZSgpLCA9PSwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRl
c3RSZXNwb25zZVBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQor
eworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyID0gV0VCS0lUX1BPTElDWV9E
RUNJU0lPTl9UWVBFX1JFU1BPTlNFOworCisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3Bv
bnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09
LCAzKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21w
aW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21t
aXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMl0sID09LCBM
b2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworCisgICAgdGVzdC0+bV9yZXNwb25kVG9Q
b2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHMuc2l6
ZSgpLCA9PSwgMyk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNz
ZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpM
b2FkQ29tbWl0dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJd
LCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKworICAgIHRlc3QtPm1fcmVz
cG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworICAgIHRlc3QtPm1f
cG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6Oklnbm9yZTsKKyAgICB0
ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgZ19hc3NlcnRfY21waW50KHRlc3Qt
Pm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+
bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfY21w
aW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5p
c2hlZCk7Cit9CisKIHN0cnVjdCBDcmVhdGVDYWxsYmFja0RhdGEgewogICAgIGJvb2wgdHJpZWRU
b09wZW5XaW5kb3c7CiAgICAgR01haW5Mb29wKiBtYWluTG9vcDsKQEAgLTE4MywxMiArMjE3LDMx
IEBAIHN0YXRpYyB2b2lkIHRlc3ROZXdXaW5kb3dQb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghZGF0YS50cmllZFRvT3BlbldpbmRvdyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291
cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xp
ZW50Q29udGV4dCosIGdwb2ludGVyKQoreworICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09V
UF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogcmVzcG9uc2VTdHJpbmcgPSAiPGh0bWw+PGJvZHk+VGVz
dGluZyE8L2JvZHk+PC9odG1sPiI7CisgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3Nh
Z2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgcmVzcG9uc2VTdHJpbmcsIHN0
cmxlbihyZXNwb25zZVN0cmluZykpOworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAga1Nl
cnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CisgICAga1NlcnZlci0+cnVuKHNlcnZlckNh
bGxiYWNrKTsKKwogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50
IiwgIm5hdmlnYXRpb24tcG9saWN5IiwgdGVzdE5hdmlnYXRpb25Qb2xpY3kpOworICAgIFBvbGlj
eUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgInJlc3BvbnNlLXBvbGljeSIs
IHRlc3RSZXNwb25zZVBvbGljeSk7CiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQ
b2xpY3lDbGllbnQiLCAibmV3LXdpbmRvdy1wb2xpY3kiLCB0ZXN0TmV3V2luZG93UG9saWN5KTsK
IH0KIAogdm9pZCBhZnRlckFsbCgpCiB7CisgICAgZGVsZXRlIGtTZXJ2ZXI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123983</attachid>
            <date>2012-01-25 11:53:56 -0800</date>
            <delta_ts>2012-01-25 12:07:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76789-20120125115355.patch</filename>
            <type>text/plain</type>
            <size>67868</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjIxNGRkZGMwMzNiMWYz
OGU3YTNhNjg3ODAxOTZkNjFkYTY3ODY3Mi4uZDlmYjVmYTY2NjdiMWIyZTMzMTRkMDI0M2JlNzRl
MzEwZThmZTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAxLTI0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV0sy
XSBJbXBsZW1lbnQgdGhlIHBvbGljeSBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBhYnN0cmFjdCBXZWJLaXRQb2xpY3lE
ZWNpc2lvbiwgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAorICAgICAgICBhbmQgYWRk
IHRoZSBkZWNpZGUtcG9saWN5IHNpZ25hbCB0byBXZWJLaXRXZWJWaWV3LgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMgdG8gdGhlIHNvdXJjZSBsaXN0LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcDogVXNlIHRoZSBXZWJDb3JlIG5h
bWVzcGFjZSBiZWNhdXNlCisgICAgICAgIG9mIGNoYW5nZXMgdG8gQVNTRVJUX01BVENISU5HX0VO
VU1TLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudFByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNp
c2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lE
ZWNpc2lvblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UHJpdmF0ZS5oOiBNb2RpZnkgQVNTRVJUX01BVENISU5HX0VOVU1TIHRvIG1ha2UKKyAgICAg
ICAgaXQgdXNlZnVsIGZvciBub24tV2ViQ29yZSBlbnVtcy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1
Y3RlZCk6IEF0dGFjaCB0aGUgcG9saWN5IGNsaWVudCBjYWxsYmFja3MgdG8gdGhlIHBhZ2UuCisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6IEFkZCB0aGUgZGVjaWRlLXBvbGlj
eSBzaWduYWwgZGVmaW5pdGlvbi4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdNYWtlUG9saWN5RGVj
aXNpb24pOiBBZGRlZCB0aGlzIHByaXZhdGUgbWV0aG9kIHRvIGZpcmUgdGhlIHNpZ25hbC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZGVkIG5ldyBzaWdu
YWwgdG8gdGhlIGxpc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaDogQWRkZWQgbmV3IG1ldGhvZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOiBBZGRlZCBuZXcgY2xhc3Nl
cyB0byB0aGUgZG9jcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9HTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IHRlc3QgdG8gdGhlIHNvdXJjZSBsaXN0LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0
OiBkZWNpZGUtcG9saWN5IGhhcyBhIG5ldyBzaWduYXR1cmUuCisKIDIwMTItMDEtMjUgIE7DoW5k
b3IgSHVzemthICA8aHVzemthLm5hbmRvckBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtX
SzJdIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBC
bG9ja2luZ0VuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggODAxOTg0NzZiNDc2ZDRiODhl
NzY4YThmODI3OTlkMjU4MTdlMjgyMS4uYTJlZmZjYzc3NTA3ZjIyMjNmNjEyNGI4YzljNzVjMGY4
YWMxM2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTg1LDEwICs4NSwxMiBAQCBsaWJ3ZWJr
aXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RGVmaW5lcy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERv
d25sb2FkLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaCBc
Ci0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
LmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24u
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmggXApAQCAtNTMxLDYgKzUzMywxMyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9h
ZGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExv
YWRlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2
YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURl
Y2lzaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5Q2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UG9saWN5Q2xpZW50UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRFcnJvci5jcHAKaW5kZXggYWRkY2YxYmQ1YmE3NmUyMjA0NGU0ZTM3NzJmZDYzZTM4
NzIyYjE5My4uNDJjZjBhYjM1ZTJkNTQ5YmYwNTNmNzcwNTAyMTJlOTBiMmNkMTc3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcApAQCAt
MjQsNiArMjQsOCBAQAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Vycm9yc0d0ay5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogR1F1YXJrIHdl
YmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrKCkKIHsKICAgICByZXR1cm4gZ19xdWFya19mcm9tX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6ZXJyb3JEb21haW5OZXR3b3JrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZDU3YjRhNmZlNDhjNWE3ODhjZDFh
YzI1NTI3N2EwMjBjNzMyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uY3BwCkBAIC0wLDAg
KzEsMzA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCIK
KworI2luY2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdFBvbGljeURl
Y2lzaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNp
bmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbgorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBvbGljeSBkZWNp
c2lvbiBmb3IgbmF2aWdhdGlvbiBhY3Rpb25zCisgKiBAVGl0bGU6IFdlYktpdE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbgorICogQFNlZV9hbHNvOiAjV2ViS2l0UG9saWN5RGVjaXNpb24sICNXZWJL
aXRXZWJWaWV3CisgKgorICogV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHJlcHJlc2Vu
dHMgYSBwb2xpY3kgZGVjaXNpb24gZm9yIGV2ZW50cyBhc3NvY2lhdGVkIHdpdGgKKyAqIG5hdmln
YXRpb25zLiBJZiB0aGUgdmFsdWUgb2YgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOm1v
dXNlLWJ1dHRvbiBpcyBub3QgMCwgdGhlbgorICogdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJl
ZCBieSBhIG1vdXNlIGV2ZW50LgorICovCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uLCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24sIFdFQktJ
VF9UWVBFX1BPTElDWV9ERUNJU0lPTikKKworc3RydWN0IF9XZWJLaXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25Qcml2YXRlIHsKKyAgICBXZWJLaXROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgdW5zaWduZWQgbW91c2VCdXR0b247Cisg
ICAgR1JlZlB0cjxXZWJLaXRVUklSZXF1ZXN0PiByZXF1ZXN0OworICAgIENTdHJpbmcgZnJhbWVO
YW1lOworfTsKKworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfTkFWSUdBVElPTl9UWVBF
LAorICAgIFBST1BfTU9VU0VfQlVUVE9OLAorICAgIFBST1BfTU9ESUZJRVJTLAorICAgIFBST1Bf
UkVRVUVTVCwKKyAgICBQUk9QX0ZSQU1FX05BTUUsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25faW5pdChXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uKQoreworICAgIGRlY2lzaW9uLT5wcml2ID0gR19UWVBFX0lOU1RBTkNF
X0dFVF9QUklWQVRFKGRlY2lzaW9uLCBXRUJLSVRfVFlQRV9OQVZJR0FUSU9OX1BPTElDWV9ERUNJ
U0lPTiwgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSk7CisgICAgbmV3IChk
ZWNpc2lvbi0+cHJpdikgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GaW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX05BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9O
KG9iamVjdCktPnByaXYtPn5XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7
CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3Bh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2Vi
S2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FUSU9O
X1BPTElDWV9ERUNJU0lPTihvYmplY3QpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2Fz
ZSBQUk9QX05BVklHQVRJT05fVFlQRToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwg
d2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9uYXZpZ2F0aW9uX3R5cGUoZGVj
aXNpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01PVVNFX0JVVFRPTjoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2dldF9tb3VzZV9idXR0b24oZGVjaXNpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX01PRElGSUVSUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Vi
a2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9tb2RpZmllcnMoZGVjaXNpb24pKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFUVVFU1Q6CisgICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9y
ZXF1ZXN0KGRlY2lzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GUkFNRV9O
QU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF9uYXZpZ2F0aW9u
X3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFtZShkZWNpc2lvbikpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2NsYXNzX2lu
aXQoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3MpCit7
CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lzaW9u
Q2xhc3MpOworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZpbmFsaXplOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJr
aXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25HZXRQcm9wZXJ0eTsKKyAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvblByaXZhdGUpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbjpuYXZpZ2F0aW9uLXR5cGU6CisgICAgICoKKyAgICAgKiBUaGUgdHlwZSBvZiBu
YXZpZ2F0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoaXMgcG9saWN5IGRlY2lzaW9uLiBUaGlzIGlzCisg
ICAgICogdXNlZnVsIGZvciBlbmFjdGluZyBkaWZmZXJlbnQgcG9saWNpZXMgZGVwZW5kaW5nIG9u
IHdoYXQgdHlwZSBvZiB1c2VyCisgICAgICogYWN0aW9uIGNhdXNlZCB0aGUgbmF2aWdhdGlvbi4K
KyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9OQVZJR0FUSU9OX1RZ
UEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfZW51
bSgibmF2aWdhdGlvbi10eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIk5hdmlnYXRpb24gdHlwZSIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIHR5cGUgb2YgbmF2
aWdhdGlvbiB0cmlnZ2VyaW5nIHRoaXMgZGVjaXNpb24iKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX05BVklHQVRJT05f
VFlQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElOS19DTElDS0VELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
bW91c2UtYnV0dG9uOgorICAgICAqCisgICAgICogSWYgdGhlIG5hdmlnYXRpb24gYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgcG9saWN5IGRlY2lzaW9uIHdhcyBvcmlnaW5hbGx5CisgICAgICogdHJpZ2dl
cmVkIGJ5IGEgbW91c2UgZXZlbnQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgbm9uLXplcm8gYnV0
dG9uIG51bWJlcgorICAgICAqIG9mIHRoZSBidXR0b24gdHJpZ2dlcmluZyB0aGF0IGV2ZW50LiBU
aGUgYnV0dG9uIG51bWJlcnMgbWF0Y2ggdGhvc2UgZnJvbSBHREsuCisgICAgICogSWYgdGhlIG5h
dmlnYXRpb24gd2FzIG5vdCB0cmlnZ2VyZWQgYnkgYSBtb3VzZSBldmVudCwgdGhlIHZhbHVlIG9m
IHRoaXMKKyAgICAgKiBwcm9wZXJ0eSB3aWxsIGJlIDAuCisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfTU9VU0VfQlVUVE9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoIm1vdXNlLWJ1dHRvbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJNb3VzZSBi
dXR0b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIlRoZSBtb3VzZSBidXR0b24gdXNlZCBpZiB0aGlzIGRlY2lzaW9uIHdhcyB0cmln
Z2VyZWQgYnkgYSBtb3VzZSBldmVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
bW9kaWZpZXJzOgorICAgICAqCisgICAgICogSWYgdGhlIG5hdmlnYXRpb24gYXNzb2NpYXRlZCB3
aXRoIHRoaXMgcG9saWN5IGRlY2lzaW9uIHdhcyBvcmlnaW5hbGx5CisgICAgICogdHJpZ2dlcmVk
IGJ5IGEgbW91c2UgZXZlbnQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBiaXRtYXNrIG9mIHZh
cmlvdXMKKyAgICAgKiBHZGtNb2RpZmllclR5cGUgdmFsdWVzIGRlc2NyaWJpbmcgdGhlIG1vZGlm
aWVycyB1c2VkIGZvciB0aGF0IGNsaWNrLgorICAgICAqIElmIHRoZSBuYXZpZ2F0aW9uIHdhcyBu
b3QgdHJpZ2dlcmVkIGJ5IGEgbW91c2UgZXZlbnQgb3Igbm8gbW9kaWZpZXJzCisgICAgICogd2Vy
ZSBhY3RpdmUsIHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHdpbGwgYmUgemVyby4KKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9NT0RJRklFUlMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgibW9kaWZpZXJz
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIk1vdXNlIGV2ZW50IG1vZGlmaWVycyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIG1vZGlmaWVycyBhY3RpdmUgaWYgdGhp
cyBkZWNpc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IGEgbW91c2UgZXZlbnQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIEdfTUFYVUlOVCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOnJlcXVlc3Q6CisgICAgICoKKyAgICAgKiBUaGlzIHByb3BlcnR5
IGNvbnRhaW5zIHRoZSAjV2ViS2l0VVJJUmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggdGhpcworICAg
ICAqIG5hdmlnYXRpb24uCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19vYmplY3QoInJlcXVlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiTmF2aWdhdGlvbiBVUkkgcmVxdWVzdCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIFVS
SSByZXF1ZXN0IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbmF2aWdhdGlvbiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfVVJJX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjpmcmFtZS1uYW1lOgorICAgICAqCisg
ICAgICogSWYgdGhpcyBuYXZpZ2F0aW9uIHJlcXVlc3QgdGFyZ2V0cyBhIG5ldyBmcmFtZSwgdGhp
cyBwcm9wZXJ0eSBjb250YWlucworICAgICAqIHRoZSBuYW1lIG9mIHRoYXQgZnJhbWUuIEZvciBl
eGFtcGxlIGlmIHRoZSBkZWNpc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IGNsaWNraW5nIGEKKyAgICAg
KiBsaW5rIHdpdGggYSB0YXJnZXQgYXR0cmlidXRlIGVxdWFsIHRvICJfYmxhbmsiLCB0aGlzIHBy
b3BlcnR5IHdpbGwgY29udGFpbiB0aGUKKyAgICAgKiB2YWx1ZSBvZiB0aGF0IGF0dHJpYnV0ZS4g
SW4gYWxsIG90aGVyIGNhc2VzLCB0aGlzIHZhbHVlIHdpbGwgYmUgJU5VTEwuCisgICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRlJBTUVfTkFNRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImZyYW1lLW5hbWUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRnJhbWUgbmFtZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiVGhlIG5hbWUgb2YgdGhlIG5ldyBmcmFtZSB0aGlzIG5hdmlnYXRp
b24gYWN0aW9uIHRhcmdldHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKK30KKworLyoqCisg
KiB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X25hdmlnYXRpb25fdHlwZToK
KyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCisgKgorICog
R2V0cyB0aGUgdmFsdWUgb2YgdGhlICNXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246bmF2
aWdhdGlvbi10eXBlIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IFRoZSB0eXBlIG9mIG5hdmln
YXRpb24gdHJpZ2dlcmluZyB0aGlzIHBvbGljeSBkZWNpc2lvbi4KKyAqLworV2ViS2l0TmF2aWdh
dGlvblR5cGUgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9uYXZpZ2F0aW9u
X3R5cGUoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04o
ZGVjaXNpb24pLCBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSKTsKKyAgICByZXR1cm4gZGVj
aXNpb24tPnByaXYtPm5hdmlnYXRpb25UeXBlOworfQorCisvKioKKyAqIHdlYmtpdF9uYXZpZ2F0
aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfbW91c2VfYnV0dG9uOgorICogQGRlY2lzaW9uOiBhICNX
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KKyAqCisgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0
aGUgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjptb3VzZS1idXR0b24gcHJvcGVydHku
CisgKgorICogUmV0dXJuczogVGhlIG1vdXNlIGJ1dHRvbiB1c2VkIGlmIHRoaXMgZGVjaXNpb24g
d2FzIHRyaWdnZXJlZCBieSBhIG1vdXNlIGV2ZW50IG9yIDAgb3RoZXJ3aXNlCisgKi8KK2d1aW50
IHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfbW91c2VfYnV0dG9uKFdlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX05BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSwg
MCk7CisgICAgcmV0dXJuIGRlY2lzaW9uLT5wcml2LT5tb3VzZUJ1dHRvbjsKK30KKworLyoqCisg
KiB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X21vZGlmaWVyczoKKyAqIEBk
ZWNpc2lvbjogYSAjV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCisgKgorICogR2V0cyB0
aGUgdmFsdWUgb2YgdGhlICNXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246bW9kaWZpZXJz
IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IFRoZSBtb2RpZmllcnMgYWN0aXZlIGlmIHRoaXMg
ZGVjaXNpb24gd2FzIHRyaWdnZXJlZCBieSBhIG1vdXNlIGV2ZW50CisgKi8KK3Vuc2lnbmVkIHdl
YmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfbW9kaWZpZXJzKFdlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX05BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSwgMCk7Cisg
ICAgcmV0dXJuIGRlY2lzaW9uLT5wcml2LT5tb2RpZmllcnM7Cit9CisKKy8qKgorICogd2Via2l0
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0OgorICogQGRlY2lzaW9uOiBh
ICNXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KKyAqCisgKiBHZXRzIHRoZSB2YWx1ZSBv
ZiB0aGUgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjpyZXF1ZXN0IHByb3BlcnR5Lgor
ICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIFVSSSByZXF1ZXN0IHRoYXQgaXMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgbmF2aWdhdGlvbgorICovCitXZWJLaXRVUklSZXF1ZXN0KiB3
ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X3JlcXVlc3QoV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pLCAwKTsKKyAg
ICByZXR1cm4gZGVjaXNpb24tPnByaXYtPnJlcXVlc3QuZ2V0KCk7Cit9CisKKy8qKgorICogd2Vi
a2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lOgorICogQGRlY2lz
aW9uOiBhICNXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KKyAqCisgKiBHZXRzIHRoZSB2
YWx1ZSBvZiB0aGUgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjpmcmFtZS1uYW1lIHBy
b3BlcnR5LgorICoKKyAqIFJldHVybnM6IFRoZSBuYW1lIG9mIHRoZSBuZXcgZnJhbWUgdGhpcyBu
YXZpZ2F0aW9uIGFjdGlvbiB0YXJnZXRzIG9yICVOVUxMIAorICovCitjb25zdCBjaGFyKiB3ZWJr
aXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X2ZyYW1lX25hbWUoV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pLCAwKTsKKyAg
ICByZXR1cm4gZGVjaXNpb24tPnByaXYtPmZyYW1lTmFtZS5kYXRhKCk7Cit9CisKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX05BVklHQVRJT05fVFlQRV9MSU5LX0NMSUNLRUQs
IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsIGtXS0ZyYW1l
TmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV0VCS0lUX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQsIGtXS0ZyYW1lTmF2aWdhdGlv
blR5cGVCYWNrRm9yd2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9O
QVZJR0FUSU9OX1RZUEVfUkVMT0FELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlUmVsb2FkKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1JF
U1VCTUlUVEVELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUiwga1dL
RnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyKTsKKworc3RhdGljIHVuc2lnbmVkIHdrRXZlbnRNb3Vz
ZUJ1dHRvblRvV2ViS2l0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uIHdrQnV0dG9uKQor
eworICAgIHN3aXRjaCAod2tCdXR0b24pIHsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25O
b0J1dHRvbjoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0dG9u
TGVmdEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0
dG9uTWlkZGxlQnV0dG9uOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIGtXS0V2ZW50TW91
c2VCdXR0b25SaWdodEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCB3a0V2ZW50TW9k
aWZpZXJzVG9VbnNpZ25lZChXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQoreworICAgIHVu
c2lnbmVkIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKHdrTW9kaWZpZXJzICYga1dLRXZlbnRNb2Rp
ZmllcnNTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEdES19TSElGVF9NQVNLOworICAg
IGlmICh3a01vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IEdES19DT05UUk9MX01BU0s7CisgICAgaWYgKHdrTW9kaWZpZXJzICYga1dL
RXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBHREtfTU9EMV9NQVNL
OworICAgIGlmICh3a01vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IEdES19NRVRBX01BU0s7CisgICAgcmV0dXJuIG1vZGlmaWVyczsKK30K
KworV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKiB3ZWJraXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25DcmVhdGUoV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1lLCBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAgV2ViS2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTihnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04sIE5VTEwpKTsK
KyAgICBkZWNpc2lvbi0+cHJpdi0+bmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxXZWJLaXRO
YXZpZ2F0aW9uVHlwZT4obmF2aWdhdGlvblR5cGUpOworICAgIGRlY2lzaW9uLT5wcml2LT5tb3Vz
ZUJ1dHRvbiA9IHdrRXZlbnRNb3VzZUJ1dHRvblRvV2ViS2l0TW91c2VCdXR0b24obW91c2VCdXR0
b24pOworICAgIGRlY2lzaW9uLT5wcml2LT5tb2RpZmllcnMgPSB3a0V2ZW50TW9kaWZpZXJzVG9V
bnNpZ25lZChtb2RpZmllcnMpOworICAgIGRlY2lzaW9uLT5wcml2LT5yZXF1ZXN0ID0gYWRvcHRH
UmVmKHdlYmtpdFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJjZVJlcXVlc3QodG9JbXBsKHJlcXVl
c3QpLT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgIGRlY2lzaW9uLT5wcml2LT5mcmFtZU5hbWUg
PSBmcmFtZU5hbWU7CisgICAgd2Via2l0UG9saWN5RGVjaXNpb25TZXRMaXN0ZW5lcihXRUJLSVRf
UE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSwgbGlzdGVuZXIpOworICAgIHJldHVybiBkZWNpc2lv
bjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJmMjQx
MjY4ZDYxMDBlZTA4M2Q0NjJjYjVmYmIzOGU3OGMyYjYxMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbl9oCisjZGVmaW5lIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbl9o
CisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVm
aW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UG9saWN5RGVjaXNpb24uaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KKworR19CRUdJTl9ERUNMUworCisvKioK
KyAqIFdlYktpdE5hdmlnYXRpb25UeXBlOgorICogQFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElO
S19DTElDS0VEOiBUaGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGJ5IGNsaWNraW5nIGEgbGlu
ay4KKyAqIEBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVEOiBUaGUgbmF2aWdh
dGlvbiB3YXMgdHJpZ2dlcmVkIGJ5IHN1Ym1pdHRpbmcgYSBmb3JtLgorICogQFdFQktJVF9OQVZJ
R0FUSU9OX1RZUEVfQkFDS19GT1JXQVJEOiBUaGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGJ5
IG5hdmlnYXRpbmcgZm9yd2FyZCBvciBiYWNrd2FyZC4KKyAqIEBXRUJLSVRfTkFWSUdBVElPTl9U
WVBFX1JFTE9BRDogVGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBieSByZWxvYWRpbmcuCisg
KiBAV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVEOiBUaGUgbmF2aWdhdGlv
biB3YXMgdHJpZ2dlcmVkIGJ5IHJlc3VibWl0dGluZyBhIGZvcm0uCisgKiBAV0VCS0lUX05BVklH
QVRJT05fVFlQRV9PVEhFUjogVGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBieSBzb21lIG90
aGVyIGFjdGlvbi4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgdmFyaW91
cyBuYXZpZ2F0aW9uIHR5cGVzLgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9OQVZJ
R0FUSU9OX1RZUEVfTElOS19DTElDS0VELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9S
TV9TVUJNSVRURUQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQsCisg
ICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9SRUxPQUQsCisgICAgV0VCS0lUX05BVklHQVRJT05f
VFlQRV9GT1JNX1JFU1VCTUlUVEVELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfT1RIRVIs
Cit9IFdlYktpdE5hdmlnYXRpb25UeXBlOworCisjZGVmaW5lIFdFQktJVF9UWVBFX05BVklHQVRJ
T05fUE9MSUNZX0RFQ0lTSU9OICAgICAgICAgICAgKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVD
SVNJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lP
Tl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfVFlQRV9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfTkFWSUdBVElPTl9QT0xJQ1lfREVD
SVNJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VC
S0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRfSVNf
TkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04p
KQorI2RlZmluZSBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT05fR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfTkFWSUdB
VElPTl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkNsYXNz
KSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAgICAg
ICAgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkNsYXNzICAgV2ViS2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uUHJpdmF0ZSBXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlOworCitzdHJ1
Y3QgX1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7CisgICAgV2ViS2l0UG9saWN5RGVj
aXNpb24gcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uQ2xhc3MgeworICAgIFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uX2dldF90eXBlICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IFdlYktpdE5hdmlnYXRpb25UeXBlCit3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25f
Z2V0X25hdmlnYXRpb25fdHlwZSAoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICpkZWNp
c2lvbik7CitXRUJLSVRfQVBJIGd1aW50Cit3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fZ2V0X21vdXNlX2J1dHRvbiAgICAoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICpk
ZWNpc2lvbik7CitXRUJLSVRfQVBJIGd1aW50Cit3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb25fZ2V0X21vZGlmaWVycyAgICAgICAoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
ICpkZWNpc2lvbik7CitXRUJLSVRfQVBJIFdlYktpdFVSSVJlcXVlc3QgKgord2Via2l0X25hdmln
YXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0ICAgICAgICAgKFdlYktpdE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3
ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X2ZyYW1lX25hbWUgICAgICAoV2Vi
S2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7CitHX0VORF9ERUNMUworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mM2MwZTFmNTA4YjdmNmIwOTdmMzE3NmRlOTk4N2U1MGRkZjNhZmFmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCIK
KyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKK1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiogd2Via2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uQ3JlYXRlKFdLRnJhbWVOYXZpZ2F0
aW9uVHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzLCBXS1VSTFJlcXVl
c3RSZWYsIGNvbnN0IGNoYXIqIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmKTsK
KworI2VuZGlmIC8vIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE3NTdkNDI4MjE1MjYyNzg5ZWMyMjM5Yjc0OGUyN2NlNTJj
MWU1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
S2l0UG9saWN5Q2xpZW50LmgiCisKKyNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb24uaCIKKyNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25DYWxsYmFjayhXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9u
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3Rl
bmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
R1JlZlB0cjxXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24+IGRlY2lzaW9uID0KKyAgICAg
ICAgYWRvcHRHUmVmKHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkNyZWF0ZShuYXZpZ2F0
aW9uVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3VzZUJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBmcmFtZSBuYW1lICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGlzdGVuZXIpKTsKKyAgICB3ZWJraXRXZWJWaWV3TWFrZVBvbGljeURlY2lzaW9uKFdFQktJVF9X
RUJfVklFVyhjbGllbnRJbmZvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfREVDSVNJT04oZGVjaXNp
b24uZ2V0KCkpKTsKK30KKworc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uQ2FsbGJhY2soV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdL
RXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdL
U3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgR1JlZlB0
cjxXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24+IGRlY2lzaW9uID0KKyAgICAgICAgYWRv
cHRHUmVmKHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkNyZWF0ZShuYXZpZ2F0aW9uVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb3VzZUJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0ltcGwoZnJhbWVOYW1lKS0+c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaXN0ZW5lcikpOworICAgIHdlYmtpdFdlYlZpZXdNYWtlUG9saWN5
RGVjaXNpb24oV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05FV19XSU5ET1df
QUNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BPTElD
WV9ERUNJU0lPTihkZWNpc2lvbi5nZXQoKSkpOworfQorCit2b2lkIGF0dGFjaFBvbGljeUNsaWVu
dFRvUGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdLUGFnZVBvbGljeUNsaWVu
dCBwb2xpY3lDbGllbnQgPSB7CisgICAgICAgIGtXS1BhZ2VQb2xpY3lDbGllbnRDdXJyZW50VmVy
c2lvbiwKKyAgICAgICAgd2ViVmlldywgLy8gY2xpZW50SW5mbworICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2ssCisgICAgICAgIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbkNhbGxiYWNrLAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZUNhbGxiYWNrLAorICAgICAgICAwLCAvLyB1bmFibGVUb0ltcGxlbWVudFBvbGljeQorICAg
IH07CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSSh3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKSwgJnBvbGljeUNsaWVudCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
b2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBv
bGljeUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZDhkNjJjY2I4NDU1MWUzNzg2NWIyMDc5ZjY4MWZj
NDk2NDc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0UG9saWN5Q2xpZW50X2gKKyNk
ZWZpbmUgV2ViS2l0UG9saWN5Q2xpZW50X2gKKworI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIK
Kwordm9pZCBhdHRhY2hQb2xpY3lDbGllbnRUb1BhZ2UoV2ViS2l0V2ViVmlldyopOworCisjZW5k
aWYgLy8gV2ViS2l0UG9saWN5Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NDU0NjdiNTZjOTk2MTM4NjdjZjk0ODBmNDJhYmQzZWIxNjA3NjczCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24u
Y3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvbi5o
IgorCisjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgorCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0UG9saWN5RGVjaXNp
b24KKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZW5kaW5nIHBvbGljeSBkZWNpc2lvbgorICog
QFRpdGxlOiBXZWJLaXRQb2xpY3lEZWNpc2lvbgorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmll
dworICoKKyAqIE9mdGVuIFdlYktpdCBhbGxvd3MgdGhlIGNsaWVudCB0byBkZWNpZGUgdGhlIHBv
bGljeSBmb3IgY2VydGFpbgorICogb3BlcmF0aW9ucy4gRm9yIGluc3RhbmNlLCBhIGNsaWVudCBt
YXkgd2FudCB0byBvcGVuIGEgbGluayBpbiBhIG5ldworICogdGFiLCBibG9jayBhIG5hdmlnYXRp
b24gZW50aXJlbHksIHF1ZXJ5IHRoZSB1c2VyIG9yIHRyaWdnZXIgYSBkb3dubG9hZAorICogaW5z
dGVhZCBvZiBhIG5hdmlnYXRpb24uIEluIHRoZXNlIGNhc2VzIFdlYktpdCB3aWxsIGZpcmUgdGhl
CisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGljeSBzaWduYWwgd2l0aCBhICNXZWJLaXRQ
b2xpY3lEZWNpc2lvbgorICogb2JqZWN0LiBJZiB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3Ro
aW5nLCBXZWJLaXQgd2lsbCBhY3QgYXMgaWYKKyAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNl
KCkgd2FzIGNhbGxlZCBhcyBzb29uIGFzIHNpZ25hbCBoYW5kbGluZworICogY29tcGxldGVzLiBU
byBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIGFzeW5jaHJvbm91c2x5LCBzaW1wbHkgaW5jcmVtZW50
CisgKiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSAjV2ViS2l0UG9saWN5RGVjaXNpb24gb2Jq
ZWN0LgorICovCitHX0RFRklORV9UWVBFKFdlYktpdFBvbGljeURlY2lzaW9uLCB3ZWJraXRfcG9s
aWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFBvbGljeURlY2lz
aW9uUHJpdmF0ZSB7CisgICAgV0tSZXRhaW5QdHI8V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmPiBs
aXN0ZW5lcjsKKyAgICBib29sIG1hZGVQb2xpY3lEZWNpc2lvbjsKK307CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faW5pdChXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNp
b24pCit7CisgICAgZGVjaXNpb24tPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
ZGVjaXNpb24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0UG9saWN5RGVjaXNp
b25Qcml2YXRlKTsKKyAgICBuZXcgKGRlY2lzaW9uLT5wcml2KSBXZWJLaXRQb2xpY3lEZWNpc2lv
blByaXZhdGUoKTsKKyAgICBkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uID0gZmFs
c2U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFBvbGljeURlY2lzaW9uRmluYWxpemUoR09iamVj
dCogb2JqZWN0KQoreworICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBX
RUJLSVRfUE9MSUNZX0RFQ0lTSU9OKG9iamVjdCktPnByaXY7CisKKyAgICAvLyBUaGlzIGlzIHRo
ZSBkZWZhdWx0IGNob2ljZSBmb3IgYWxsIHBvbGljeSBkZWNpc2lvbnMgaW4gV2ViUGFnZVByb3h5
LmNwcC4KKyAgICBpZiAoIXByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbikKKyAgICAgICAgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyVXNlKHByaXYtPmxpc3RlbmVyLmdldCgpKTsKKworICAgIHByaXYtPn5X
ZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3Zv
aWQgd2Via2l0UG9saWN5RGVjaXNpb25TZXRMaXN0ZW5lcihXZWJLaXRQb2xpY3lEZWNpc2lvbiog
ZGVjaXNpb24sIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAgICAgZGVj
aXNpb24tPnByaXYtPmxpc3RlbmVyID0gbGlzdGVuZXI7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzKiBk
ZWNpc2lvbkNsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhkZWNpc2lvbkNsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRQb2xpY3lEZWNpc2lvbkZpbmFsaXplOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShk
ZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlKSk7Cit9CisK
Ky8qKgorICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2U6CisgKiBAZGVjaXNpb246IGEgI1dl
YktpdFBvbGljeURlY2lzaW9uCisgKgorICogQWNjZXB0IHRoZSBhY3Rpb24gd2hpY2ggdHJpZ2dl
cmQgdGhpcyBkZWNpc2lvbi4KKyAqLwordm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZShX
ZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisgICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlKGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVjaXNpb24t
PnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7Cit9CisKKy8qKgorICogd2Via2l0X3Bv
bGljeV9kZWNpc2lvbl9pZ25vcmU6CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lz
aW9uCisgKgorICogSWdub3JlIHRoZSBhY3Rpb24gd2hpY2ggdHJpZ2dlcmQgdGhpcyBkZWNpc2lv
bi4gRm9yIGluc3RhbmNlLCBmb3IgYQorICogI1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24s
IHRoaXMgd291bGQgY2FuY2VsIHRoZSByZXF1ZXN0LgorICovCit2b2lkIHdlYmtpdF9wb2xpY3lf
ZGVjaXNpb25faWdub3JlKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKyAg
ICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUoZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLmdl
dCgpKTsKKyAgICBkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uID0gdHJ1ZTsKK30K
KworLyoqCisgKiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkOgorICogQGRlY2lzaW9u
OiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvbgorICoKKyAqIFNwYXduIGEgZG93bmxvYWQgZnJvbSB0
aGlzIGRlY2lzaW9uLgorICovCit2b2lkIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQo
V2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworICAgIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lckRvd25sb2FkKGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVj
aXNpb24tPnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lY2NhNWY5YzM1NGViZGE1MGU5MmQ5ZGRkMDg2YjZjOTllNzYwM2VlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRQb2xp
Y3lEZWNpc2lvbl9oCisjZGVmaW5lIFdlYktpdFBvbGljeURlY2lzaW9uX2gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04gICAgICAg
ICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRf
UE9MSUNZX0RFQ0lTSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB
U1QoKG9iaiksIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0UG9saWN5RGVjaXNp
b24pKQorI2RlZmluZSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19U
WVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lP
TiwgV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19QT0xJQ1lf
REVDSVNJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1BPTElDWV9E
RUNJU0lPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRfUE9MSUNZX0RFQ0lT
SU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgV2ViS2l0UG9saWN5
RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcyAgIFdl
YktpdFBvbGljeURlY2lzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UG9saWN5RGVj
aXNpb25Qcml2YXRlIFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZTsKKworc3RydWN0IF9XZWJL
aXRQb2xpY3lEZWNpc2lvbiB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0
ZSA+Ki8KKyAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2dl
dF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X3VzZSAgICAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktpdFBvbGljeURlY2lz
aW9uICpkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BvbGljeV9kZWNpc2lv
bl9kb3dubG9hZCAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNTgw
YzgzZTlkODM5NTZiNTcwNGJjNWMwZGZhMGYxOTVhMmZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvblByaXZh
dGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0
UG9saWN5RGVjaXNpb25Qcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9u
LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisKK3ZvaWQgd2Via2l0UG9saWN5RGVj
aXNpb25TZXRMaXN0ZW5lcihXZWJLaXRQb2xpY3lEZWNpc2lvbiosIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclJlZik7CisKKyNlbmRpZiAvLyBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRl
LmgKaW5kZXggM2RiNjFhNzQ5ZDNkMzVkNWI1ZDA0ODI3ODkzNTYzOThhODdjMWFjOS4uMTMyODBk
NjAwYTY4ZjE3MDk2NDdmN2M0ODI3MzQzZDNiZWVkMTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzMsMTUgKzMzLDExIEBA
CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLUdfQkVH
SU5fREVDTFMKLQogI2RlZmluZSBXRUJLSVRfUEFSQU1fUkVBREFCTEUgKHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihHX1BBUkFNX1JFQURBQkxFfEdfUEFSQU1fU1RBVElDX05BTUV8R19QQVJBTV9T
VEFUSUNfTklDS3xHX1BBUkFNX1NUQVRJQ19CTFVSQikpCiAjZGVmaW5lIFdFQktJVF9QQVJBTV9X
UklUQUJMRSAoc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fV1JJVEFCTEV8R19QQVJB
TV9TVEFUSUNfTkFNRXxHX1BBUkFNX1NUQVRJQ19OSUNLfEdfUEFSQU1fU1RBVElDX0JMVVJCKSkK
ICNkZWZpbmUgV0VCS0lUX1BBUkFNX1JFQURXUklURSAoc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KEdfUEFSQU1fUkVBRFdSSVRFfEdfUEFSQU1fU1RBVElDX05BTUV8R19QQVJBTV9TVEFUSUNfTklD
S3xHX1BBUkFNX1NUQVRJQ19CTFVSQikpCiAKICNkZWZpbmUgQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTSh3ZWJraXROYW1lLCB3ZWJjb3JlTmFtZSkgXAotICAgICAgICBDT01QSUxFX0FTU0VS
VChpbnQod2Via2l0TmFtZSkgPT0gaW50KFdlYkNvcmU6OndlYmNvcmVOYW1lKSwgbWlzbWF0Y2hp
bmdFbnVtcykKLQotR19FTkRfREVDTFMKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoaW50KHdlYmtp
dE5hbWUpID09IGludCh3ZWJjb3JlTmFtZSksIG1pc21hdGNoaW5nRW51bXMpCiAKICNlbmRpZiAv
LyBXZWJLaXRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggOWRjNDcyYTFmOGY3YWQwOTM0OTIzNzNjZDZhZDc4
ZThhNWQ5MDA2NS4uNzc1ZGQxYmQ3OTg1ZTRmNTY1MjNhZDBkYjg2NmMyNjZlYzU4ZWNiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXZWJLaXRFcnJvci5oIgogI2luY2x1ZGUg
IldlYktpdExvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdE1hcnNoYWwuaCIKKyNpbmNs
dWRlICJXZWJLaXRQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5nc1ByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgiCkBAIC01NSw2ICs1Niw4IEBAIGVudW0gewogICAgIFNDUklQVF9DT05G
SVJNLAogICAgIFNDUklQVF9QUk9NUFQsCiAKKyAgICBERUNJREVfUE9MSUNZLAorCiAgICAgTEFT
VF9TSUdOQUwKIH07CiAKQEAgLTE0NCw2ICsxNDcsMTIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dFdlYlZpZXdTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciog
bWUKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdE
ZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lv
biwgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlKQoreworICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNp
b25fdXNlKGRlY2lzaW9uKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKQpAQCAt
MTU3LDkgKzE2NiwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogCiAgICAgYXR0YWNoTG9hZGVyQ2xpZW50VG9WaWV3KHdlYlZpZXcpOwog
ICAgIGF0dGFjaFVJQ2xpZW50VG9WaWV3KHdlYlZpZXcpOworICAgIGF0dGFjaFBvbGljeUNsaWVu
dFRvUGFnZSh3ZWJWaWV3KTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZp
ZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFzZSk7CiAgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0g
YWRvcHRHUmVmKHdlYmtpdEJhY2tGb3J3YXJkTGlzdENyZWF0ZShXS1BhZ2VHZXRCYWNrRm9yd2Fy
ZExpc3QodG9BUEkocGFnZSkpKSk7CisKICAgICBwcml2LT5zZXR0aW5ncyA9IGFkb3B0R1JlZih3
ZWJraXRfc2V0dGluZ3NfbmV3KCkpOwogICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NU
b1BhZ2UocHJpdi0+c2V0dGluZ3MuZ2V0KCksIHRvQVBJKHBhZ2UpKTsKIH0KQEAgLTI0Myw2ICsy
NTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9
IHdlYmtpdFdlYlZpZXdTY3JpcHRBbGVydDsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9jb25m
aXJtID0gd2Via2l0V2ViVmlld1NjcmlwdENvbmZpcm07CiAgICAgd2ViVmlld0NsYXNzLT5zY3Jp
cHRfcHJvbXB0ID0gd2Via2l0V2ViVmlld1NjcmlwdFByb21wdDsKKyAgICB3ZWJWaWV3Q2xhc3Mt
PmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogCiAgICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQcml2
YXRlKSk7CiAKQEAgLTU0MSw2ICs1NTMsNjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX1NUUklORywgR19UWVBFX1NUUklORywgR19UWVBFX1BPSU5URVIpOwogCisgICAg
LyoqCisgICAgICogV2ViS2l0UG9saWN5Q2xpZW50OjpkZWNpZGUtcG9saWN5CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQGRlY2lzaW9uOiB0aGUgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgor
ICAgICAqIEBkZWNpc2lvbl90eXBlOiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgZGVub3Rp
bmcgdGhlIHR5cGUgb2YgQGRlY2lzaW9uCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBl
bWl0dGVkIHdoZW4gV2ViS2l0IGlzIHJlcXVlc3RpbmcgdGhlIGNsaWVudCB0byBkZWNpZGUgYSBw
b2xpY3kKKyAgICAgKiBkZWNpc2lvbiwgc3VjaCBhcyB3aGV0aGVyIHRvIG5hdmlnYXRlIHRvIGEg
cGFnZSwgb3BlbiBhIG5ldyB3aW5kb3cgb3Igd2hldGhlciBvcgorICAgICAqIG5vdCB0byBkb3du
bG9hZCBhIHJlc291cmNlLiBUaGUgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBwYXNz
ZWQgaW4gdGhlCisgICAgICogQGRlY2lzaW9uIGFyZ3VtZW50IGlzIGEgZ2VuZXJpYyB0eXBlLCBi
dXQgc2hvdWxkIGJlIGNhc3RlZCB0byBhIG1vcmUKKyAgICAgKiBzcGVjaWZpYyB0eXBlIHdoZW4g
bWFraW5nIHRoZSBkZWNpc2lvbi4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiA8aW5mb3Jt
YWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAgICAgKiBzdGF0aWMgZ2Jvb2xlYW4KKyAgICAg
KiBkZWNpZGVfcG9saWN5X2NiIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKKyAgICAgKiAgICAg
ICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24sCisgICAgICogICAg
ICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlIHR5cGUpCisgICAgICogewor
ICAgICAqICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgKiAgICAgY2FzZSBXRUJLSVRfUE9MSUNZ
X0RFQ0lTSU9OX1RZUEVfTkFWSUdBVElPTl9BQ1RJT046CisgICAgICogICAgICAgICBXZWJLaXRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gKm5hdmlnYXRpb25fZGVjaXNpb24gPSBXRUJLSVRfTkFW
SUdBVElPTl9QT0xJQ1lfREVDSVNJT04gKGRlY2lzaW9uKTsKKyAgICAgKiAgICAgICAgIC88IS0t
IC0tPiogTWFrZSBhIHBvbGljeSBkZWNpc2lvbiBoZXJlLiAqPCEtLSAtLT4vCisgICAgICogICAg
ICAgICBicmVhazsKKyAgICAgKiAgICAgY2FzZSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVf
TkVXX1dJTkRPV19BQ1RJT046CisgICAgICogICAgICAgICBXZWJLaXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24gKm5hdmlnYXRpb25fZGVjaXNpb24gPSBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lf
REVDSVNJT04gKGRlY2lzaW9uKTsKKyAgICAgKiAgICAgICAgIC88IS0tIC0tPiogTWFrZSBhIHBv
bGljeSBkZWNpc2lvbiBoZXJlLiAqPCEtLSAtLT4vCisgICAgICogICAgICAgICBicmVhazsKKyAg
ICAgKiAgICAgY2FzZSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0U6CisgICAg
ICogICAgICAgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uICpyZXNwb25zZSA9IFdFQktJ
VF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04gKGRlY2lzaW9uKTsKKyAgICAgKiAgICAgICAgIC88
IS0tIC0tPiogTWFrZSBhIHBvbGljeSBkZWNpc2lvbiBoZXJlLiAqPCEtLSAtLT4vCisgICAgICog
ICAgICAgICBicmVhazsKKyAgICAgKiAgICAgZGVmYXVsdDoKKyAgICAgKiAgICAgICAgIC88IS0t
IC0tPiogTWFraW5nIG5vIGRlY2lzaW9uIHJlc3VsdHMgaW4gd2Via2l0X3BvbGljeV9kZWNpc2lv
bl91c2UoKS4gKjwhLS0gLS0+LworICAgICAqICAgICAgICAgYnJlYWs7CisgICAgICogICAgIH0K
KyAgICAgKiB9CisgICAgICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAg
ICAgKgorICAgICAqIEl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgcG9saWN5IGRlY2lzaW9uIGFzeW5j
aHJvbm91c2x5LCBieSBzaW1wbHkgY2FsbGluZyBnX29iamVjdF9yZWYoKQorICAgICAqIG9uIHRo
ZSBAZGVjaXNpb24gYXJndW1lbnQgYW5kIHJldHVybmluZyAlVFJVRSB0byBibG9jayB0aGUgZGVm
YXVsdCBzaWduYWwgaGFuZGxlci4KKyAgICAgKiBJZiB0aGUgbGFzdCByZWZlcmVuY2UgaXMgcmVt
b3ZlZCBvbiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvbiBhbmQgbm8gZGVjaXNpb24gaGFzIGJlZW4K
KyAgICAgKiBtYWRlIGV4cGxpY2l0bHksIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKCkgd2ls
bCBiZSB0aGUgZGVmYXVsdCBwb2xpY3kgZGVjaXNpb24uCisgICAgICoKKyAgICAgKiBSZXR1cm5z
OiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhl
IGV2ZW50LgorICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4K
KyAgICAgKgorICAgICAqLworICAgIHNpZ25hbHNbREVDSURFX1BPTElDWV0gPQorICAgICAgICBn
X3NpZ25hbF9uZXcoImRlY2lkZS1wb2xpY3kiLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YlZpZXdDbGFzcywgZGVjaWRlX3BvbGljeSksCisgICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyogYWNjdW11bGF0b3IgZGF0YSAqLywKKyAg
ICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9FTlVNLAor
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsIC8qIG51bWJlciBvZiBwYXJh
bWV0ZXJzICovCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJ
T04sCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT05fVFlQ
RSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQpCkBAIC02NDYsNiArNzE1LDEyIEBAIFdL
U3RyaW5nUmVmIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IENTdHJpCiAgICAgcmV0dXJuIHRleHQgPyBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyh0ZXh0LmdldCgpKSA6IDA7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld01h
a2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNp
c2lvblR5cGUgdHlwZSwgV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tE
RUNJREVfUE9MSUNZXSwgMCwgZGVjaXNpb24sIHR5cGUsICZyZXR1cm5WYWx1ZSk7Cit9CisKIC8q
KgogICogd2Via2l0X3dlYl92aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTI1YzQzOGRkOTAxOTM1NDBiMDU1
ZmY2YzY3NGZhN2FkMzY3ZWY4MS4uNjk3ZmNkYzgwZTYwOTNiZGJmZDRiMTFjM2VkYTUyOTdjNjQ1
NWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaApAQCAtMzUsOSArMzUsNDQgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRQb2xpY3lEZWNpc2lvbi5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKKy8qKgorICogV2ViS2l0
UG9saWN5RGVjaXNpb25UeXBlOgorICogQFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJ
R0FUSU9OX0FDVElPTjogVGhpcyB0eXBlIG9mIHBvbGljeSBkZWNpc2lvbgorICogICBpcyByZXF1
ZXN0ZWQgd2hlbiBXZWJLaXQgaXMgYWJvdXQgdG8gbmF2aWdhdGUgdG8gYSBuZXcgcGFnZSBpbiBl
aXRoZXIgdGhlCisgKiAgIG1haW4gZnJhbWUgb3IgYSBzdWJmcmFtZS4gQWNjZXB0YWJsZSBwb2xp
Y3kgZGVjaXNpb25zIGFyZSBlaXRoZXIKKyAqICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Uo
KSBvciB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSgpLiBUaGlzCisgKiAgIHR5cGUgb2Yg
cG9saWN5IGRlY2lzaW9uIGlzIGFsd2F5cyBhICNXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24uCisgKiBAV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05FV19XSU5ET1dfQUNUSU9OOiBU
aGlzIHR5cGUgb2YgcG9saWN5IGRlY2lzaW9uCisgKiAgIGlzIHJlcXVlc3RlZCB3aGVuIFdlYktp
dCBpcyBhYm91dCB0byBjcmVhdGUgYSBuZXcgd2luZG93LiBBY2NlcHRhYmxlIHBvbGljeQorICog
ICBkZWNpc2lvbnMgYXJlIGVpdGhlciB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSgpIG9yCisg
KiAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlKCkuIFRoaXMgdHlwZSBvZiBwb2xpY3kg
ZGVjaXNpb24gaXMgYWx3YXlzCisgKiAgIGEgI1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bi4gVGhlc2UgZGVjaXNpb25zIGFyZSB1c2VmdWwgZm9yIGltcGxlbWVudGluZworICogICBzcGVj
aWFsIGFjdGlvbnMgZm9yIG5ldyB3aW5kb3dzLCBzdWNoIGFzIGZvcmNpbmcgdGhlIG5ldyB3aW5k
b3cgdG8gb3BlbgorICogICBpbiBhIHRhYiB3aGVuIGEga2V5Ym9hcmQgbW9kaWZpZXIgaXMgYWN0
aXZlIG9yIGhhbmRsaW5nIGEgc3BlY2lhbAorICogICB0YXJnZXQgYXR0cmlidXRlIG9uICZsdDth
Jmd0OyBlbGVtZW50cy4KKyAqIEBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0U6
IFRoaXMgdHlwZSBvZiBkZWNpc2lvbiBpcyB1c2VkIHdoZW4gV2ViS2l0IGhhcworICogICByZWNl
aXZlZCBhIHJlc3BvbnNlIGZvciBhIG5ldHdvcmsgcmVzb3VyY2UgYW5kIGlzIGFib3V0IHRvIHN0
YXJ0IHRoZSBsb2FkLgorICogICBOb3RlIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGluY2x1ZGUgYWxs
IHN1YnJlc291cmNlcyBvZiBhIHBhZ2Ugc3VjaCBhcyBpbWFnZXMKKyAqICAgYW5kIHN0eWxlc2hl
ZXRzIGFzIHdlbGwgYXMgbWFpbiBkb2N1bWVudHMuIEFwcHJvcHJpYXRlIHBvbGljeSByZXNwb25z
ZXMgdG8KKyAqICAgdGhpcyBkZWNpc2lvbiBhcmUgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Uo
KSwgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoKSwKKyAqICAgb3Igd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl9kb3dubG9hZCgpLiBUaGlzIHR5cGUgb2YgcG9saWN5IGRlY2lzaW9uIGlzIGFs
d2F5cworICogICBhICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLiBUaGlzIGRlY2lzaW9u
IGlzIHVzZWZ1bCBmb3IgZm9yY2luZworICogICBzb21lIHR5cGVzIG9mIHJlc291cmNlcyB0byBi
ZSBkb3dubG9hZGVkIHJhdGhlciB0aGFuIHJlbmRlcmVkIGluIHRoZSBXZWJWaWV3CisgKiAgIG9y
IHRvIGJsb2NrIHRoZSB0cmFuc2ZlciBvZiByZXNvdXJjZXMgZW50aXJlbHkuCisgKgorICogRW51
bSB2YWx1ZXMgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHR5cGUgb2YgYSBwb2xpY3kgZGVjaXNp
b24gZHVyaW5nCisgKiBXZWJLaXRXZWJWaWV3OjpkZWNpZGUtcG9saWN5LgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElP
TiwKKyAgICBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfTkVXX1dJTkRPV19BQ1RJT04sCisg
ICAgV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX1JFU1BPTlNFLAorfSBXZWJLaXRQb2xpY3lE
ZWNpc2lvblR5cGU7CisKICNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgICAgICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2dldF90eXBlKCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfVklFVyhvYmop
ICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJfVklFVywgV2ViS2l0V2ViVmlldykpCiAjZGVmaW5lIFdFQktJVF9XRUJfVklFV19DTEFT
UyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNzKSkKQEAgLTgxLDI2ICsxMTYsMjkgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBX
ZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAgIHZvaWQgICAgICAgKCogbG9hZF9j
aGFuZ2VkKSAgIChXZWJLaXRXZWJWaWV3ICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCBsb2FkX2V2ZW50KTsKLSAgICBnYm9vbGVh
biAgICgqIGxvYWRfZmFpbGVkKSAgICAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgbG9hZF9ldmVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKmZhaWxp
bmdfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAg
ICAqZXJyb3IpOwotCi0gICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgKFdl
YktpdFdlYlZpZXcgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIHNjcmlw
dF9hbGVydCkgICAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqbWVzc2FnZSk7Ci0gICAgZ2Jvb2xlYW4g
ICAoKiBzY3JpcHRfY29uZmlybSkgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKm1lc3NhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpjb25maXJtZWQp
OwotICAgIGdib29sZWFuICAgKCogc2NyaXB0X3Byb21wdCkgIChXZWJLaXRXZWJWaWV3ICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICptZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAqZGVmYXVsdF90ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Y2hhciAgICAgICAgICoqdGV4dCk7CisgICAgdm9pZCAgICAgICAoKiBsb2FkX2NoYW5nZWQpICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICBsb2FkX2V2ZW50KTsK
KyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dExvYWRFdmVudCAgICAgICAgICAgIGxvYWRfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAg
ICplcnJvcik7CisKKyAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9f
c2hvdykgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAg
ICAgICAoKiBjbG9zZSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3KTsKKworICAgIGdib29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqbWVzc2FnZSk7CisgICAgZ2Jvb2xlYW4gICAo
KiBzY3JpcHRfY29uZmlybSkgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh
biAgICAgICAgICAgICAgICAgICpjb25maXJtZWQpOworICAgIGdib29sZWFuICAgKCogc2NyaXB0
X3Byb21wdCkgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqbWVz
c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICAgICAqZGVmYXVsdF90ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnY2hhciAgICAgICAgICAgICAgICAgICAgKip0ZXh0KTsKKyAgICBnYm9vbGVhbiAgICgq
IGRlY2lkZV9wb2xpY3kpICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uICAg
ICAgKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
b2xpY3lEZWNpc2lvblR5cGUgIHR5cGUpOwogCiAgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggNWM4MTYxYWZkNDk4ZGY3MjI4NjQxMWJmMDg5NjBiYTQxMTdkN2QwOC4uNjYz
ODZkMDI4ZWE3MzM1YTZiZTYyMmRlZDA4YzZiMWJjOTIwNTFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC00Miw1ICs0Miw2IEBAIHZvaWQgd2Via2l0V2ViVmlld0Nsb3NlUGFnZShXZWJLaXRXZWJWaWV3
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0V2ViVmlldyos
IGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogYm9vbCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlw
dENvbmZpcm0oV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogV0tTdHJp
bmdSZWYgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyosIGNv
bnN0IENTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIGRlZmF1bHRUZXh0KTsKK3ZvaWQg
d2Via2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UG9s
aWN5RGVjaXNpb25UeXBlLCBXZWJLaXRQb2xpY3lEZWNpc2lvbiopOwogCiAjZW5kaWYgLy8gV2Vi
S2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNmMwZWM0NjJhMTY3
MzMzNjkyOTlmYjY4M2IxYTM5ZTBkNWU3MzEwMC4uYzZmOTQzYWIyYTY4ODAyOWQ5NTZlYmI2ODUw
ZmVjYjFmMjRjMjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yMSw2ICsyMSw4IEBACiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVSSVJlc3BvbnNlLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXREb3dubG9hZC54bWwiLz4KKyAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RXJyb3IueG1sIi8+CiAgIDwvY2hhcHRlcj4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggNDc4OTc5YmI4ZDliNWQ3MDE5ZDExODFlOGM3NjYy
ZTQ4OTlhM2I3ZC4uZWY0NGIyYmVkNjdjNjQxYzcwZjVhNDhlZDg0YTc5MjgwMGUwYjVhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC00OCw2ICs0OCw3IEBAIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdHlwZQogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2ViVmll
dwogV2ViS2l0TG9hZEV2ZW50CitXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUKIHdlYmtpdF93ZWJf
dmlld19uZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0CiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvbnRleHQKQEAgLTMxMiw2ICszMTMsNTEgQEAgd2Via2l0X2Rvd25sb2FkX2dldF90
eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248
L0ZJTEU+CitXZWJLaXRQb2xpY3lEZWNpc2lvbgord2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3du
bG9hZAord2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUKK3dlYmtpdF9wb2xpY3lfZGVjaXNp
b25fdXNlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0UG9saWN5RGVjaXNpb25DbGFz
cworV0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OCitX
RUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTCitX
RUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTCitXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX0dF
VF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2
YXRlCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNU
SU9OPgorPEZJTEU+V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uPC9GSUxFPgorV2ViS2l0
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCitXZWJLaXROYXZpZ2F0aW9uVHlwZQord2Via2l0X25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lCit3ZWJraXRfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb25fZ2V0X21vZGlmaWVycword2Via2l0X25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uX2dldF9tb3VzZV9idXR0b24KK3dlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNp
c2lvbl9nZXRfbmF2aWdhdGlvbl90eXBlCit3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fZ2V0X3JlcXVlc3QKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb25DbGFzcworV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJ
T04KK1dFQktJVF9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTgorV0VCS0lUX0lTX05BVklHQVRJ
T05fUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT05fQ0xB
U1MKK1dFQktJVF9JU19OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTl9DTEFTUworV0VCS0lUX05B
VklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRl
PgorV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZQord2Via2l0X25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJ
TEU+V2ViS2l0RXJyb3I8L0ZJTEU+CiBXRUJLSVRfTkVUV09SS19FUlJPUgogV0VCS0lUX1BMVUdJ
Tl9FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9HTlVtYWtlZmlsZS5hbQppbmRleCBkZjUzN2NhNGU4MDlkYmM1ZjZlZWI2MTUwM2FlNDIyMGIz
Y2UzOTQ4Li4xNzVhMTQ5ZTQzNDY0NzYwMzhhM2YxMTBmZmYyN2NkN2JhNTYwZWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmls
ZS5hbQpAQCAtNCw3ICs0LDggQEAgVEVTVF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQ
SVRlc3RzL1Rlc3RMb2FkZXJDbGllbnQgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0
V2ViS2l0U2V0dGluZ3MgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0QmFja0Zvcndh
cmRMaXN0IFwKLQlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdERvd25sb2FkcworCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0RG93bmxvYWRzIFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJ
VGVzdHMvVGVzdFdlYktpdFBvbGljeUNsaWVudAogCiBub2luc3RfUFJPR1JBTVMgKz0gJChURVNU
X1BST0dTKQogCkBAIC04NSw2ICs4NiwxMiBAQCBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVz
dEJhY2tGb3J3YXJkTGlzdF9DUFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncwogUHJv
Z3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RCYWNrRm9yd2FyZExpc3RfTERBREQgPSAkKHdlYmtp
dDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdEJhY2tGb3J3YXJk
TGlzdF9MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1dlYktp
dDJBUElUZXN0c19UZXN0V2ViS2l0UG9saWN5Q2xpZW50X1NPVVJDRVMgPSBcCisgICAgICAgIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGll
bnQuY3BwCitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFBvbGljeUNsaWVudF9D
UFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1dlYktpdDJBUElU
ZXN0c19UZXN0V2ViS2l0UG9saWN5Q2xpZW50X0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRk
KQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRQb2xpY3lDbGllbnRfTERGTEFH
UyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBpZiBIQVZFX0FUU1BJMgogUHJvZ3JhbXNf
V2ViS2l0MkFQSVRlc3RzX0FjY2Vzc2liaWxpdHlUZXN0U2VydmVyX1NPVVJDRVMgPSBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2
ZXIuY3BwCkBAIC0xMDQsNCArMTExLDMgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RE
b3dubG9hZHNfU09VUkNFUyA9IFwKIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0RG93bmxv
YWRzX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQogUHJvZ3JhbXNfV2ViS2l0
MkFQSVRlc3RzX1Rlc3REb3dubG9hZHNfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQ
cm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERvd25sb2Fkc19MREZMQUdTID0gJCh3ZWJraXQy
X3Rlc3RzX2xkZmxhZ3MpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2QxNzhiODdlOGU1MjU4ZTk1NzhkNmU5MjI1ZTVlOGRmODBhYmY3YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRQb2xpY3lDbGllbnQuY3BwCkBAIC0wLDAgKzEsMTk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkxvYWRU
cmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitjbGFzcyBQb2xpY3lDbGllbnRUZXN0OiBwdWJsaWMg
TG9hZFRyYWNraW5nVGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShQ
b2xpY3lDbGllbnRUZXN0KTsKKworICAgIGVudW0gUG9saWN5RGVjaXNpb25SZXNwb25zZSB7Cisg
ICAgICAgIFVzZSwKKyAgICAgICAgSWdub3JlLAorICAgICAgICBEb3dubG9hZCwKKyAgICAgICAg
Tm9uZQorICAgIH07CisKKyAgICBQb2xpY3lDbGllbnRUZXN0KCkKKyAgICAgICAgOiBMb2FkVHJh
Y2tpbmdUZXN0KCkKKyAgICAgICAgLCBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UoTm9uZSkKKyAg
ICAgICAgLCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcigwKQorICAgICAgICAsIG1fcmVzcG9u
ZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseShmYWxzZSkKKyAgICAgICAgLCBtX2hhbHRN
YWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb24oZmFsc2UpCisgICAgeworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBv
bGljeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHF1aXRN
YWluTG9vcExhdGVyKEdNYWluTG9vcCogbG9vcCkKKyAgICB7CisgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQobG9vcCk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCByZXNwb25kVG9Qb2xpY3lEZWNpc2lvbihQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBXZWJL
aXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCisgICAgeworICAgICAgICBzd2l0Y2ggKHRlc3Qt
Pm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSkgeworICAgICAgICBjYXNlIFVzZToKKyAgICAgICAg
ICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKGRlY2lzaW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIElnbm9yZToKKyAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVj
aXNpb25faWdub3JlKGRlY2lzaW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERvd25sb2FkOgorICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZChk
ZWNpc2lvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb25lOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGVzdC0+bV9oYWx0TWFpbkxv
b3BBZnRlck1ha2luZ0RlY2lzaW9uKQorICAgICAgICAgICAgZ19pZGxlX2FkZChyZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPihxdWl0TWFpbkxvb3BMYXRlciksIHRlc3QtPm1fbWFpbkxvb3Ap
OworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiByZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkxh
dGVyKFBvbGljeUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICByZXNwb25kVG9Qb2xp
Y3lEZWNpc2lvbih0ZXN0LCB0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVjaXNpb24uZ2V0KCkpOwor
ICAgICAgICB0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVjaXNpb24gPSAwOworICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIGRlY2lkZVBvbGljeUNhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lv
biwgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlIHR5cGUsIFBvbGljeUNsaWVudFRlc3QqIHRlc3Qp
CisgICAgeworICAgICAgICBpZiAodGVzdC0+bV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIgIT0g
dHlwZSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgICAgICB0ZXN0LT5tX3ByZXZp
b3VzUG9saWN5RGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICAgICAgaWYgKHRlc3QtPm1fcmVzcG9u
ZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSkgeworICAgICAgICAgICAgZ19pZGxlX2Fk
ZChyZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihyZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkxh
dGVyKSwgdGVzdCk7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAg
ICAgICByZXNwb25kVG9Qb2xpY3lEZWNpc2lvbih0ZXN0LCBkZWNpc2lvbik7CisgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBQb2xpY3lEZWNpc2lvblJlc3BvbnNlIG1fcG9saWN5
RGVjaXNpb25SZXNwb25zZTsKKyAgICBpbnQgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXI7Cisg
ICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHk7CisgICAgYm9v
bCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb247CisgICAgR1JlZlB0cjxXZWJLaXRQ
b2xpY3lEZWNpc2lvbj4gbV9wcmV2aW91c1BvbGljeURlY2lzaW9uOworfTsKKworc3RhdGljIHZv
aWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKK3sKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciA9IFdFQktJVF9Q
T0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTjsKKworICAgIHRlc3QtPm1fcG9s
aWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZTsKKyAgICB0ZXN0LT5s
b2FkSHRtbCgiPGh0bWwvPiIsICJodHRwOi8vd2Via2l0Z3RrLm9yZy8iKTsKKyAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2Fk
RXZlbnRzLnNpemUoKSwgPT0sIDMpOworCisgICAgLy8gSWRlYWxseSB3ZSdkIGxpa2UgdG8gaGF2
ZSBhIG1vcmUgaW50ZW5zaXZlIHRlc3QgaGVyZSwgYnV0IGl0J3Mgc3RpbGwgcHJldHR5IHRyaWNr
eQorICAgIC8vIHRvIHRyaWdnZXIgZGlmZmVyZW50IHR5cGVzIG9mIG5hdmlnYXRpb25zIHdpdGgg
dGhlIEdUSysgV2ViS2l0MiBBUEkuCisgICAgV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KiBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTih0ZXN0LT5tX3By
ZXZpb3VzUG9saWN5RGVjaXNpb24uZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X25hdmlnYXRpb25fdHlwZShkZWNpc2lvbiks
ID09LCBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
d2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9tb3VzZV9idXR0b24oZGVjaXNp
b24pLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9nZXRfbW9kaWZpZXJzKGRlY2lzaW9uKSwgPT0sIDApOworICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X2ZyYW1lX25hbWUo
ZGVjaXNpb24pLCA9PSwgMCk7CisgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtp
dF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdChkZWNpc2lvbik7CisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwg
Imh0dHA6Ly93ZWJraXRndGsub3JnLyIpOworCisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJl
c3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlOworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9s
aWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxo
dG1sLz4iLCAiaHR0cDovL3dlYmtpdGd0ay5vcmcvIik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXpl
KCksID09LCAzKTsKKworICAgIC8vIElmIHdlIGFyZSB3YWl0aW5nIHVudGlsIGxvYWQgY29tcGxl
dGlvbiwgaXQgd2lsbCBuZXZlciBjb21wbGV0ZSBpZiB3ZSBpZ25vcmUgdGhlCisgICAgLy8gbmF2
aWdhdGlvbi4gU28gd2UgdGVsbCB0aGUgbWFpbiBsb29wIHRvIHF1aXQgc29tZXRpbWUgbGF0ZXIu
CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6
SWdub3JlOworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNs
eSA9IGZhbHNlOworICAgIHRlc3QtPm1faGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNpc2lvbiA9
IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sLz4iLCAiaHR0cDovL3dlYmtpdGd0ay5v
cmcvIik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAwKTsKK30KKworc3RydWN0IENy
ZWF0ZUNhbGxiYWNrRGF0YSB7CisgICAgYm9vbCB0cmllZFRvT3BlbldpbmRvdzsKKyAgICBHTWFp
bkxvb3AqIG1haW5Mb29wOworfTsKKworc3RhdGljIFdlYktpdFdlYlZpZXcqIGNyZWF0ZUNhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIENyZWF0ZUNhbGxiYWNrRGF0YSogZGF0YSkKK3sK
KyAgICBkYXRhLT50cmllZFRvT3BlbldpbmRvdyA9IHRydWU7CisgICAgZ19tYWluX2xvb3BfcXVp
dChkYXRhLT5tYWluTG9vcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RO
ZXdXaW5kb3dQb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogd2luZG93T3BlbmluZ0hUTUwgPQorICAgICAgICAiPGh0
bWw+PGJvZHk+IgorICAgICAgICAiICAgIDxhIGlkPVwibGlua1wiIGhyZWY9XCJodHRwOi8vd3d3
Lmdvb2dsZS5jb21cIiB0YXJnZXQ9XCJfYmxhbmtcIj5MaW5rPC9hPiIKKyAgICAgICAgIiAgICA8
c2NyaXB0PiIKKyAgICAgICAgIiAgICAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZl
bnQoJ01vdXNlRXZlbnRzJyk7IgorICAgICAgICAiICAgICAgICBldmVudC5pbml0RXZlbnQoJ2Ns
aWNrJywgdHJ1ZSwgZmFsc2UpOyIKKyAgICAgICAgIiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xpbmsnKS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsiCisgICAgICAgICIgICAgPC9zY3Jp
cHQ+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNp
b25UeXBlRmlsdGVyID0gV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05FV19XSU5ET1dfQUNU
SU9OOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dz
X2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZp
ZXcpLCBUUlVFKTsKKworICAgIENyZWF0ZUNhbGxiYWNrRGF0YSBkYXRhOworICAgIGRhdGEudHJp
ZWRUb09wZW5XaW5kb3cgPSBmYWxzZTsKKyAgICBkYXRhLm1haW5Mb29wID0gdGVzdC0+bV9tYWlu
TG9vcDsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAiY3JlYXRlIiwg
R19DQUxMQkFDSyhjcmVhdGVDYWxsYmFjayksICZkYXRhKTsKKyAgICB0ZXN0LT5tX3BvbGljeURl
Y2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2U7CisgICAgdGVzdC0+bG9hZEh0
bWwod2luZG93T3BlbmluZ0hUTUwsICJodHRwOi8vd2Via2l0Z3RrLm9yZy8iKTsKKyAgICB0ZXN0
LT53YWl0KDEpOworICAgIGdfYXNzZXJ0KGRhdGEudHJpZWRUb09wZW5XaW5kb3cpOworCisgICAg
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FU
SU9OX1BPTElDWV9ERUNJU0lPTih0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVjaXNpb24uZ2V0KCkp
OworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25f
Z2V0X2ZyYW1lX25hbWUoZGVjaXNpb24pLCA9PSwgIl9ibGFuayIpOworCisgICAgLy8gVXNpbmcg
YSBzaG9ydCB0aW1lb3V0IGlzIGEgYml0IHVnbHkgaGVyZSwgYnV0IGl0J3MgaGFyZCB0byBnZXQg
YXJvdW5kIGJlY2F1c2UgaWYgd2UgYmxvY2sKKyAgICAvLyB0aGUgbmV3IHdpbmRvdyBzaWduYWwg
d2UgY2Fubm90IGhhbHQgdGhlIG1haW4gbG9vcCBpbiB0aGUgY3JlYXRlIGNhbGxiYWNrLiBJZiB3
ZQorICAgIC8vIGhhbHQgdGhlIG1haW4gbG9vcCBpbiB0aGUgcG9saWN5IGRlY2lzaW9uLCB0aGUg
Y3JlYXRlIGNhbGxiYWNrIG5ldmVyIGV4ZWN1dGVzLgorICAgIGRhdGEudHJpZWRUb09wZW5XaW5k
b3cgPSBmYWxzZTsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lD
bGllbnRUZXN0OjpJZ25vcmU7CisgICAgdGVzdC0+bG9hZEh0bWwod2luZG93T3BlbmluZ0hUTUws
ICJodHRwOi8vd2Via2l0Z3RrLm9yZy8iKTsKKyAgICB0ZXN0LT53YWl0KC4yKTsKKyAgICBnX2Fz
c2VydCghZGF0YS50cmllZFRvT3BlbldpbmRvdyk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sK
KyAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuYXZpZ2F0
aW9uLXBvbGljeSIsIHRlc3ROYXZpZ2F0aW9uUG9saWN5KTsKKyAgICBQb2xpY3lDbGllbnRUZXN0
OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuZXctd2luZG93LXBvbGljeSIsIHRlc3ROZXdX
aW5kb3dQb2xpY3kpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CmluZGV4IGU2
ZGRhMTBhZWZhZGU2MzlmYzhiYTNkNTdiYWZkOTk1ZjdkOWEwYTIuLjU5MThkMDk1YTkxZjdmN2Yy
YjVkMTc2Mjk5YjViZWI0MzdiZDQ2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdApAQCAtMSw1ICsxLDYgQEAKIEJPT0xF
QU46RU5VTSxTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpPQkpFQ1QKK0JPT0xFQU46T0JKRUNULEVO
VU0KIEJPT0xFQU46T0JKRUNULFNUUklORyxQT0lOVEVSCiBCT09MRUFOOlBPSU5URVIKIEJPT0xF
QU46U1RSSU5HCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMGY3NmU1NjI5NjAzYWVlYzVmMmI4YWQyYjc3NTMwZDc5MGI4NGVjNy4uMDE0MzA4MzIy
YjNiYWJiNzA0N2IyMTNjZDgwYWE5YmI3ZGM5NDlkYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTI1ICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBb
V0syXSBJbXBsZW1lbnQgdGhlIHBvbGljeSBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtZ3RrZG9jOgorICAgICAgICAo
Z2V0X3dlYmtpdDJfb3B0aW9ucyk6IFVwZGF0ZSB0aGUgbGlzdCBvZiBza2lwcGVkIHNvdXJjZSBm
aWxlcyB0byBpbmNsdWRlIGFsbCBjbGllbnRzLgorCiAyMDEyLTAxLTI1ICBOw6FuZG9yIEh1c3pr
YSAgPGh1c3prYS5uYW5kb3JAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBbV0syXSBXZWJL
aXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdF
bmFibGVkCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMvZ3Rr
L2dlbmVyYXRlLWd0a2RvYwppbmRleCBmNjk4YWZhY2VmZGU2ZmM4ZDM1NGNjZjc1NGRmYWJiYmU2
ZDliMDAyLi5hNTgzNDVjNTcwNjU4OGM2ZjVlNzEwMGY3OWY2MGQxOTU0NmMyNjgyIDEwMDc1NQot
LS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1n
dGtkb2MKQEAgLTU5LDEwICs1OSw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAg
ICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsg
XAogICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgoKSwKICAgICAgICAgJ2lnbm9y
ZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJypQcml2YXRlLmgnKSkgKyBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdQYWdlQ2xpZW50SW1wbC4qJykp
ICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0
RG93bmxvYWRDbGllbnQuKicpKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmds
b2Ioc3JjX3BhdGgoJ1dlYktpdFVJQ2xpZW50LionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRMb2FkZXJDbGllbnQuKicpKSArIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJypDbGllbnQqJykpICsg
XAogICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0V2Vi
Vmlld0Jhc2VBY2Nlc3NpYmxlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKICAgICB9KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123986</attachid>
            <date>2012-01-25 12:07:13 -0800</date>
            <delta_ts>2012-02-08 07:45:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76789-20120125120712.patch</filename>
            <type>text/plain</type>
            <size>22455</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDlmYjVmYTY2NjdiMWIy
ZTMzMTRkMDI0M2JlNzRlMzEwZThmZTI1Ny4uMDJiMzU5ZWYzZTNlMGJlYzZmYmQ4ZmVkZmM5ZGY5
N2JiZWE3NDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEyLTAxLTI0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBbV0sy
XSBBZGQgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uIEdPYmplY3QsIHVzZSBpdCBmb3IgcmVzcG9uc2UKKyAgICAgICAgcG9saWN5IGRlY2lzaW9u
cyBhbmQgYWRkIGEgdGVzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
c291cmNlIGZpbGVzIHRvIHRoZSBsaXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBvbGljeUNsaWVudC5jcHA6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNh
bGxiYWNrKTogQWRkZWQgdGhpcyBjYWxsYmFjayB3aGljaCBjcmVhdGVzIHRoZSByZXF1ZXN0Cisg
ICAgICAgIGFuZCBmaXJlcyB0aGUgc2lnbmFsLgorICAgICAgICAoYXR0YWNoUG9saWN5Q2xpZW50
VG9QYWdlKTogQWRkZWQgbmV3IGNhbGxiYWNrIHRvIHRoZSBDIEFQSSBwb2xpY3kgY2xpZW50Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBv
bGljeURlY2lzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6IEFkZGVkIG5ldyBkb2NzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRQb2xp
Y3lDbGllbnQuY3BwOgorICAgICAgICAodGVzdFJlc3BvbnNlUG9saWN5KTogQWRkZWQgdGhpcyB0
ZXN0IGZvciByZXNwb25zZSBwb2xpY3kgZGVjaXNpb25zLgorICAgICAgICAoc2VydmVyQ2FsbGJh
Y2spOiBBZGRlZCBhIFNvdXBTZXJ2ZXIgdG8gdGVzdCBwb2xpY3kgcmVzcG9uc2UgcG9saWN5IGRl
Y2lzaW9ucy4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERpdHRvLgorICAgICAgICAoYWZ0ZXJBbGwp
OiBEaXR0by4KKworMjAxMi0wMS0yNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKICAgICAgICAgW0dUS10gW1dLMl0gSW1wbGVtZW50IHRoZSBwb2xpY3kgY2xpZW50
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0Mwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGEyZWZmY2M3NzUwN2YyMjIzZjYxMjRiOGM5Yzc1YzBm
OGFjMTNmMDIuLjkxMDgwMTE5MTQ3MmRlOGUzYTdlZmMyMjhhMjNhNzM4OTU2MTYzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCkBAIC04Nyw2ICs4Nyw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlX0hF
QURFUlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lz
aW9uLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmggXApA
QCAtNTQwLDYgKzU0MSw5IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50UHJpdmF0ZS5oIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURl
Y2lzaW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbi5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA2MTc1
N2Q0MjgyMTUyNjI3ODllYzIyMzliNzQ4ZTI3Y2U1MmMxZTUyLi44N2ZlOTA3OTljYmVhMjhhZTlm
ZGM5YWE5NTRlNjk1M2Q1NWVkMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTU3LDYgKzU4
LDE1IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNr
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uLmdldCgpKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBHUmVmUHRyPFdl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24+IGRlY2lzaW9uID0KKyAgICAgICAgYWRvcHRHUmVm
KHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DcmVhdGUocmVxdWVzdCwgcmVzcG9uc2UsIGxp
c3RlbmVyKSk7CisgICAgd2Via2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXRUJLSVRfV0VC
X1ZJRVcoY2xpZW50SW5mbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uLmdldCgpKSk7
Cit9CisKIHZvaWQgYXR0YWNoUG9saWN5Q2xpZW50VG9QYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7CiAgICAgV0tQYWdlUG9saWN5Q2xpZW50IHBvbGljeUNsaWVudCA9IHsKQEAgLTY0LDcg
Kzc0LDcgQEAgdm9pZCBhdHRhY2hQb2xpY3lDbGllbnRUb1BhZ2UoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICAgICAgd2ViVmlldywgLy8gY2xpZW50SW5mbwogICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQ2FsbGJhY2ssCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbkNhbGxiYWNrLAotICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZUNhbGxiYWNrLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNhbGxiYWNrLAog
ICAgICAgICAwLCAvLyB1bmFibGVUb0ltcGxlbWVudFBvbGljeQogICAgIH07CiAgICAgV0tQYWdl
U2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKSwgJnBvbGljeUNsaWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNl
UG9saWN5RGVjaXNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZmNkZmRkN2M5ZmUwZWNhZjVjZWFmZThk
OTIxNTVlNDgyMDlkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcApAQCAtMCwwICsxLDE2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oIgorCisjaW5j
bHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgor
I2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24KKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwb2xp
Y3kgZGVjaXNpb24gZm9yIHJlc291cmNlIHJlc3BvbnNlcworICogQFRpdGxlOiBXZWJLaXRSZXNw
b25zZVBvbGljeURlY2lzaW9uCisgKiBAU2VlX2Fsc286ICNXZWJLaXRQb2xpY3lEZWNpc2lvbiwg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uIHJlcHJl
c2VudHMgYSBwb2xpY3kgZGVjaXNpb24gZm9yIGEKKyAqIHJlc291cmNlIHJlc3BvbnNlLCB3aGV0
aGVyIGZyb20gdGhlIG5ldHdvcmsgb3IgdGhlIGxvY2FsIHN5c3RlbS4KKyAqIEEgdmVyeSBjb21t
b24gdXNlY2FzZSBmb3IgdGhlc2UgdHlwZXMgb2YgZGVjaXNpb24gaXMgZGVjaWRpbmcKKyAqIHdo
ZXRoZXIgb3Igbm90IHRvIGRvd25sb2FkIGEgcGFydGljdWxhciByZXNvdXJjZSBvciB0byBsb2Fk
IGl0CisgKiBub3JtYWxseS4KKyAqLworR19ERUZJTkVfVFlQRShXZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uLCB3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uLCBXRUJLSVRfVFlQRV9Q
T0xJQ1lfREVDSVNJT04pCisKK3N0cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblBy
aXZhdGUgeworICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVxdWVzdD4gcmVxdWVzdDsKKyAgICBHUmVm
UHRyPFdlYktpdFVSSVJlc3BvbnNlPiByZXNwb25zZTsKK307CisKK2VudW0geworICAgIFBST1Bf
MCwKKyAgICBQUk9QX1JFUVVFU1QsCisgICAgUFJPUF9SRVNQT05TRSwKK307CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25faW5pdChXZWJLaXRSZXNwb25zZVBv
bGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBkZWNpc2lvbi0+cHJpdiA9IEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShkZWNpc2lvbiwgV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZ
X0RFQ0lTSU9OLCBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSk7CisgICAgbmV3
IChkZWNpc2lvbi0+cHJpdikgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUoKTsK
K30KKworc3RhdGljIHZvaWQgd2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OKG9i
amVjdCktPnByaXYtPn5XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOworICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbkdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lT
SU9OKG9iamVjdCk7CisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfUkVRVUVT
VDoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfcmVzcG9uc2VfcG9s
aWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0KGRlY2lzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9SRVNQT05TRToKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3
ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZShkZWNpc2lvbikpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lv
bl9jbGFzc19pbml0KFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25D
bGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
ZGVjaXNpb25DbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvbkZpbmFsaXplOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRSZXNwb25zZVBvbGljeURlY2lzaW9uR2V0UHJvcGVydHk7CisgICAgZ190eXBlX2Ns
YXNzX2FkZF9wcml2YXRlKGRlY2lzaW9uQ2xhc3MsIHNpemVvZihXZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uUHJpdmF0ZSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbjpyZXF1ZXN0OgorICAgICAqCisgICAgICogVGhpcyBwcm9wZXJ0eSBjb250YWlu
cyB0aGUgI1dlYktpdFVSSVJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAgICAgKiBwb2xp
Y3kgZGVjaXNpb24uCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
UkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19vYmplY3QoInJlcXVlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiUmVzcG9uc2UgVVJJIHJlcXVlc3QiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVUkkgcmVx
dWVzdCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeSBkZWNpc2lvbiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfVVJJX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb246cmVzcG9uc2U6CisgICAgICoKKyAgICAg
KiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIHRoZSAjV2ViS2l0VVJJUmVzcG9uc2UgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMKKyAgICAgKiBwb2xpY3kgZGVjaXNpb24uCisgICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoInJlc3BvbnNlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVSSSByZXNwb25z
ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXygiVGhlIFVSSSByZXNwb25zZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGlj
eSBkZWNpc2lvbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfVVJJX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKKworfQorCisvKioKKyAqIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3Jl
cXVlc3Q6CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24KKyAq
CisgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgI1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb246
cmVxdWVzdCBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IFRoZSBV
UkkgcmVxdWVzdCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeSBkZWNpc2lvbi4K
KyAqLworV2ViS2l0VVJJUmVxdWVzdCogd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9n
ZXRfcmVxdWVzdChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9O
KGRlY2lzaW9uKSwgMCk7CisgICAgcmV0dXJuIGRlY2lzaW9uLT5wcml2LT5yZXF1ZXN0LmdldCgp
OworfQorCisvKioKKyAqIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3Jlc3Bv
bnNlOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uCisgKgor
ICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlICNXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uOnJl
c3BvbnNlIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIFVS
SSByZXNwb25zZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeSBkZWNpc2lvbi4K
KyAqLworV2ViS2l0VVJJUmVzcG9uc2UqIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25f
Z2V0X3Jlc3BvbnNlKFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19SRVNQT05TRV9QT0xJQ1lfREVDSVNJ
T04oZGVjaXNpb24pLCAwKTsKKyAgICByZXR1cm4gZGVjaXNpb24tPnByaXYtPnJlc3BvbnNlLmdl
dCgpOworfQorCitXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiB3ZWJraXRSZXNwb25zZVBv
bGljeURlY2lzaW9uQ3JlYXRlKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS1VSTFJlc3BvbnNl
UmVmIHJlc3BvbnNlLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAg
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJLSVRfUkVTUE9OU0Vf
UE9MSUNZX0RFQ0lTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lf
REVDSVNJT04sIE5VTEwpKTsKKyAgICBkZWNpc2lvbi0+cHJpdi0+cmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklSZXF1ZXN0Q3JlYXRlRm9yUmVzb3VyY2VSZXF1ZXN0KHRvSW1wbChyZXF1ZXN0
KS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICBkZWNpc2lvbi0+cHJpdi0+cmVzcG9uc2UgPSBh
ZG9wdEdSZWYod2Via2l0VVJJUmVzcG9uc2VDcmVhdGVGb3JSZXNvdXJjZVJlc3BvbnNlKHRvSW1w
bChyZXNwb25zZSktPnJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIHdlYmtpdFBvbGljeURlY2lz
aW9uU2V0TGlzdGVuZXIoV0VCS0lUX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbiksIGxpc3RlbmVy
KTsKKyAgICByZXR1cm4gZGVjaXNpb247Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzY1M2ZjYzE0ZmI2NGMzY2JhOWI2NGY0MGIyYTY4MGNhYmZmNjFmNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb24uaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93
ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBX
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uX2gKKyNkZWZpbmUgV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UG9saWN5RGVjaXNp
b24uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04gICAgICAgICAgICAod2Via2l0X3Jl
c3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfUkVTUE9O
U0VfUE9MSUNZX0RFQ0lTSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9SRVNQT05TRV9QT0xJQ1lf
REVDSVNJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRSZXNwb25zZVBv
bGljeURlY2lzaW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZX0RF
Q0lTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9JU19S
RVNQT05TRV9QT0xJQ1lfREVDSVNJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OKSkKKyNk
ZWZpbmUgV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTl9HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJ
Q1lfREVDSVNJT04sIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DbGFzcykpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uICAgICAgICBXZWJLaXRSZXNw
b25zZVBvbGljeURlY2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5
RGVjaXNpb25DbGFzcyAgIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25DbGFzczsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSBXZWJLaXRSZXNw
b25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uIHsKKyAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiBwYXJlbnQ7CisKKyAgICAvKjwg
cHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkNsYXNzIHsKKyAg
ICBXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9B
UEkgR1R5cGUKK3dlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgICAgICAg
ICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VVJJUmVxdWVzdCAqCit3ZWJraXRfcmVz
cG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0ICAgICAgICAgKFdlYktpdFJlc3BvbnNl
UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVUklSZXNwb25z
ZSAqCit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZSAgICAgICAg
KFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNTA4YWE1MjViOGZmOTIzYThmNGY4NWUwMmJlZjlkYjNiNjQ3OGU0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvblByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvbi5oIgorCitXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiB3ZWJr
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ3JlYXRlKFdLVVJMUmVxdWVzdFJlZiwgV0tVUkxSZXNw
b25zZVJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmKTsKKworI2VuZGlmIC8vIFdlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IGM2
Zjk0M2FiMmE2ODgwMjlkOTU2ZWJiNjg1MGZlY2IxZjI0YzIwYTEuLmFmMGNkYWU3Yzk3N2RmMWQ1
ZTQ5NmMwZmZiMDc3Zjk0YjJlOTRlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMjMsNiAr
MjMsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXREb3dubG9hZC54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54
bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNp
c2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RXJyb3IueG1sIi8+
CiAgIDwvY2hhcHRlcj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZWY0NGIyYmVk
NjdjNjQxYzcwZjVhNDhlZDg0YTc5MjgwMGUwYjVhZi4uNjZmNDRjZjgyOGIyNjJlOTdhMGRkNjEz
ZGU3ZjA0NDIyMTYxNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0zNTgsNiAr
MzU4LDI2IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZQogPC9T
RUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb248
L0ZJTEU+CitXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uCit3ZWJraXRfcmVzcG9uc2VfcG9s
aWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0Cit3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9u
X2dldF9yZXNwb25zZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb25DbGFzcworV0VCS0lUX1RZUEVfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OCitX
RUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OCitXRUJLSVRfSVNfUkVTUE9OU0VfUE9MSUNZ
X0RFQ0lTSU9OCitXRUJLSVRfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTCitXRUJLSVRf
SVNfUkVTUE9OU0VfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTCitXRUJLSVRfUkVTUE9OU0VfUE9MSUNZ
X0RFQ0lTSU9OX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvblByaXZhdGUKK3dlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25f
Z2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRFcnJvcjwvRklM
RT4KIFdFQktJVF9ORVRXT1JLX0VSUk9SCiBXRUJLSVRfUExVR0lOX0VSUk9SCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0UG9saWN5
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IDNkMTc4Yjg3ZThlNTI1OGU5NTc4ZDZlOTIyNWU1
ZThkZjgwYWJmN2MuLmE2Yjc2ZDlhM2M2MWIyNThiNjEyNGY4YjhkOWY4NTM1Mjg0MTQ3ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0yMCw5ICsyMCwxMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgorI2luY2x1
ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCitzdGF0aWMgV2ViS2l0VGVzdFNlcnZl
cioga1NlcnZlcjsKKwogY2xhc3MgUG9saWN5Q2xpZW50VGVzdDogcHVibGljIExvYWRUcmFja2lu
Z1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoUG9saWN5Q2xpZW50
VGVzdCk7CkBAIC0xMzQsNiArMTM3LDM3IEBAIHN0YXRpYyB2b2lkIHRlc3ROYXZpZ2F0aW9uUG9s
aWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAwKTsKIH0KIAorc3RhdGljIHZv
aWQgdGVzdFJlc3BvbnNlUG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCit7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIgPSBXRUJLSVRfUE9M
SUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0U7CisKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9u
UmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2U7CisgICAgdGVzdC0+bG9hZFVSSShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzLnNpemUo
KSwgPT0sIDMpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZENvbW1pdHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisKKyAgICB0ZXN0LT5tX3Jlc3Bv
bmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSB0cnVlOworICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50
cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRz
WzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAg
Z19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rl
c3Q6OkxvYWRDb21taXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVu
dHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworCisgICAgdGVzdC0+
bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisgICAgdGVz
dC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6SWdub3JlOwor
ICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7Cisg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBnX2Fzc2VydF9jbXBpbnQo
dGVzdC0+bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMpOworICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9
PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZEZpbmlzaGVkKTsKK30KKwogc3RydWN0IENyZWF0ZUNhbGxiYWNrRGF0YSB7CiAgICAgYm9vbCB0
cmllZFRvT3BlbldpbmRvdzsKICAgICBHTWFpbkxvb3AqIG1haW5Mb29wOwpAQCAtMTgzLDEyICsy
MTcsMzEgQEAgc3RhdGljIHZvaWQgdGVzdE5ld1dpbmRvd1BvbGljeShQb2xpY3lDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCFkYXRhLnRyaWVkVG9PcGVuV2lu
ZG93KTsKIH0KIAorc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVy
LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNv
dXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAh
PSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVz
c2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09L
KTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNwb25zZVN0cmluZyA9ICI8aHRtbD48Ym9k
eT5UZXN0aW5nITwvYm9keT48L2h0bWw+IjsKKyAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQo
bWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZXNwb25zZVN0cmlu
Zywgc3RybGVuKHJlc3BvbnNlU3RyaW5nKSk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxl
dGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAg
ICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKKyAgICBrU2VydmVyLT5ydW4oc2Vy
dmVyQ2FsbGJhY2spOworCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lD
bGllbnQiLCAibmF2aWdhdGlvbi1wb2xpY3kiLCB0ZXN0TmF2aWdhdGlvblBvbGljeSk7CisgICAg
UG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAicmVzcG9uc2UtcG9s
aWN5IiwgdGVzdFJlc3BvbnNlUG9saWN5KTsKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldl
YktpdFBvbGljeUNsaWVudCIsICJuZXctd2luZG93LXBvbGljeSIsIHRlc3ROZXdXaW5kb3dQb2xp
Y3kpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKKyAgICBkZWxldGUga1NlcnZlcjsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>