<?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>91053</bug_id>
          
          <creation_ts>2012-07-12 00:01:50 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add Ewk class for cookie manager</short_desc>
          <delta_ts>2012-07-18 09:57:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>js45.yang</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>667443</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 00:01:50 -0700</bug_when>
    <thetext>We need a cookie manager Ewk class so that the client can manage cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667891</commentid>
    <comment_count>1</comment_count>
      <attachid>151978</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 09:52:09 -0700</bug_when>
    <thetext>Created attachment 151978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668067</commentid>
    <comment_count>2</comment_count>
      <attachid>151978</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-12 12:15:40 -0700</bug_when>
    <thetext>Comment on attachment 151978
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        The Ewk_Cookie_Manager instance can be retrieve

Nit: s/retrieve/retrieved/

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:78
&gt; +    g_return_if_fail(filename);

Isn&apos;t it better not to mix glib calls here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668076</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 12:25:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 151978 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151978&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:12
&gt; &gt; +        The Ewk_Cookie_Manager instance can be retrieve
&gt; 
&gt; Nit: s/retrieve/retrieved/
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:78
&gt; &gt; +    g_return_if_fail(filename);
&gt; 
&gt; Isn&apos;t it better not to mix glib calls here?

Good catches, thanks. I&apos;ll fix those right now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668078</commentid>
    <comment_count>4</comment_count>
      <attachid>152021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 12:26:26 -0700</bug_when>
    <thetext>Created attachment 152021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668098</commentid>
    <comment_count>5</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-12 12:45:12 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668555</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-12 20:18:38 -0700</bug_when>
    <thetext>I don&apos;t know much about cookies, but maybe Jocelyn would be kind to have a quick look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668850</commentid>
    <comment_count>7</comment_count>
      <attachid>152021</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-07-13 04:18:46 -0700</bug_when>
    <thetext>Comment on attachment 152021
Patch

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

Cookie-wise that looks fine to me, it basically just wraps the C API.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.h:136
&gt; +EAPI void ewk_cookie_manager_async_domains_with_cookies_get(Ewk_Cookie_Manager *manager, Ewk_Cookie_Manager_Async_Domains_Get_Cb callback, void *data);

Technically those are host names and not always domains since they can be specified as IP addresses. It&apos;s just a detail though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668876</commentid>
    <comment_count>8</comment_count>
      <attachid>152218</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 04:39:14 -0700</bug_when>
    <thetext>Created attachment 152218
Patch

Take Jocelyn&apos;s feedback into consideration, thanks for checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668962</commentid>
    <comment_count>9</comment_count>
      <attachid>152245</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 06:36:56 -0700</bug_when>
    <thetext>Created attachment 152245
Patch

Make new ewk header installable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669222</commentid>
    <comment_count>10</comment_count>
      <attachid>152298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-13 10:43:53 -0700</bug_when>
    <thetext>Created attachment 152298
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669824</commentid>
    <comment_count>11</comment_count>
      <attachid>152298</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-14 05:41:37 -0700</bug_when>
    <thetext>Comment on attachment 152298
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:46
&gt; +Ewk_Cookie_Manager* ewk_context_cookie_manager_get(Ewk_Context* ewkContext)

Use *const* for _get().

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:54
&gt; + * @return Ewk_Cookie_Manager object instance.

I think you need to mention what is returned on failure.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:83
&gt; +void ewk_cookie_manager_accept_policy_set(Ewk_Cookie_Manager *manager, Ewk_Cookie_Accept_Policy policy)

Nit : Move &apos;*&apos; to type of variable side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:107
&gt; +void ewk_cookie_manager_async_accept_policy_get(Ewk_Cookie_Manager* manager, Ewk_Cookie_Manager_Async_Policy_Get_Cb callback, void* data)

Use *const* keyword for _get().

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:109
&gt; +    EWK_COOKIE_MANAGER_WK_GET_OR_RETURN(manager, wkManager);

Do you really need to return wkManager in *void* return type ? There is no description related to return values in API description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669829</commentid>
    <comment_count>12</comment_count>
      <attachid>152298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-14 07:21:14 -0700</bug_when>
    <thetext>Comment on attachment 152298
Patch

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

I&apos;ll fix the nits and reupload, thanks Gyuyoung for catching them.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:109
&gt;&gt; +    EWK_COOKIE_MANAGER_WK_GET_OR_RETURN(manager, wkManager);
&gt; 
&gt; Do you really need to return wkManager in *void* return type ? There is no description related to return values in API description.

This macro does not return the wkManager, there would be a third argument if there was a return value. wkManager is the name of the WK typed variable that is retrieved from manager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669831</commentid>
    <comment_count>13</comment_count>
      <attachid>152423</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-14 08:01:54 -0700</bug_when>
    <thetext>Created attachment 152423
Patch

Fix nits spotted by Gyuyoung.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672288</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 05:49:58 -0700</bug_when>
    <thetext>Kenneth, can you please land this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672361</commentid>
    <comment_count>15</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-18 07:35:02 -0700</bug_when>
    <thetext>Are you writing unit tests in a separated bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672369</commentid>
    <comment_count>16</comment_count>
      <attachid>152423</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 07:41:33 -0700</bug_when>
    <thetext>Comment on attachment 152423
Patch

Clearing flags on attachment: 152423

Committed r122969: &lt;http://trac.webkit.org/changeset/122969&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672370</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 07:41:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672460</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 09:57:11 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Are you writing unit tests in a separated bug?

Yes, I&apos;m making good progress on it. I&apos;ll file the bug soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151978</attachid>
            <date>2012-07-12 09:52:09 -0700</date>
            <delta_ts>2012-07-12 12:26:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>21303</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZmZkYWIxLi4yNmUzMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmUKKyAgICAgICAg
ZnJvbSB0aGUgRXdrX0NvbnRleHQgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChfRXdrX0NvbnRleHQpOgor
ICAgICAgICAoX0V3a19Db250ZXh0OjpfRXdrX0NvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRl
eHRfY29va2llX21hbmFnZXJfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Db29raWVfTWFuYWdlcik6CisgICAgICAgIChf
RXdrX0Nvb2tpZV9NYW5hZ2VyOjpfRXdrX0Nvb2tpZV9NYW5hZ2VyKToKKyAgICAgICAgKGV3a19j
b29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KToKKyAgICAgICAgKGV3a19jb29r
aWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldCk6CisgICAgICAgIChHZXRfUG9saWN5X0FzeW5j
X0RhdGEpOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoZXdr
X2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KToKKyAgICAgICAgKEdldF9E
b21haW5zX0FzeW5jX0RhdGEpOgorICAgICAgICAoZ2V0RG9tYWluc1dpdGhDb29raWVzQ2FsbGJh
Y2spOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2RvbWFpbnNfd2l0aF9jb29r
aWVzX2dldCk6CisgICAgICAgIChld2tfY29va2llX21hbmFnZXJfZG9tYWluX2Nvb2tpZXNfY2xl
YXIpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIpOgorICAgICAg
ICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2Vy
X25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlcl9w
cml2YXRlLmg6IEFkZGVkLgorCiAyMDEyLTA3LTEyICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQnJv
d3NlciBjcmFzaGVzIHJ1bm5pbmcgQmF0dGVyeVN0YXR1cyB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggMmQ2NTA2ZS4uMzY0Mzg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTM1LDYgKzM1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19p
bnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaAppbmRleCA4ZmE5MGFlLi5kN2Q3OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgRVdlYktp
dDJfaAogCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29va2llX21h
bmFnZXIuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9z
ZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5k
ZXggZTFjY2ZmMi4uYTkxNTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjUsMjAgKzI1LDM0IEBACiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RydWN0IF9Fd2tfQ29udGV4dCB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0OworCisgICAgRXdrX0Nvb2tpZV9NYW5hZ2Vy
KiBjb29raWVNYW5hZ2VyOwogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBSZWZQdHI8
QmF0dGVyeVByb3ZpZGVyPiBiYXR0ZXJ5UHJvdmlkZXI7CiAjZW5kaWYKIAogICAgIF9Fd2tfQ29u
dGV4dChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKICAgICAgICAgOiBjb250ZXh0KGNvbnRleHRS
ZWYpCisgICAgICAgICwgY29va2llTWFuYWdlcigwKQogICAgIHsgfQogfTsKIAorRXdrX0Nvb2tp
ZV9NYW5hZ2VyKiBld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoRXdrX0NvbnRleHQqIGV3
a0NvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRl
eHQsIDApOworCisgICAgaWYgKCFld2tDb250ZXh0LT5jb29raWVNYW5hZ2VyKQorICAgICAgICBl
d2tDb250ZXh0LT5jb29raWVNYW5hZ2VyID0gZXdrX2Nvb2tpZV9tYW5hZ2VyX25ldyhXS0NvbnRl
eHRHZXRDb29raWVNYW5hZ2VyKGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCkpKTsKKworICAgIHJl
dHVybiBld2tDb250ZXh0LT5jb29raWVNYW5hZ2VyOworfQorCiBXS0NvbnRleHRSZWYgZXdrX2Nv
bnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKICAg
ICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IDc5NGQwNTIuLjBjNDcxMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAt
MjksNiArMjksNyBAQAogI2lmbmRlZiBld2tfY29udGV4dF9oCiAjZGVmaW5lIGV3a19jb250ZXh0
X2gKIAorI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgPEV2YXMuaD4K
IAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC00NSw2ICs0NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBf
RXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7CiAgKi8KIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCk7CiAKKy8qKgorICogR2V0cyB0aGUgY29va2llIG1hbmFnZXIgaW5z
dGFuY2UgZm9yIHRoaXMgQGEgY29udGV4dC4KKyAqCisgKiBAcGFyYW0gY29udGV4dCBjb250ZXh0
IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIEV3a19Db29raWVfTWFuYWdlciBvYmpl
Y3QgaW5zdGFuY2UuCisgKi8KK0VBUEkgRXdrX0Nvb2tpZV9NYW5hZ2VyICpld2tfY29udGV4dF9j
b29raWVfbWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQgKmNvbnRleHQpOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWRlOTY5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAgLTAsMCArMSwxOTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJl
d2tfY29va2llX21hbmFnZXIuaCIKKworI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZVR5cGUuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0FycmF5Lmgi
CisjaW5jbHVkZSAiV0tDb29raWVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIK
KyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1
Y3QgIF9Fd2tfQ29va2llX01hbmFnZXIKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb29raWUg
bWFuYWdlciBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19Db29raWVfTWFuYWdlciB7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb29raWVNYW5hZ2VyUmVmPiB3a0Nvb2tpZU1hbmFnZXI7CisKKyAgICBfRXdr
X0Nvb2tpZV9NYW5hZ2VyKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVmKQorICAg
ICAgICA6IHdrQ29va2llTWFuYWdlcihjb29raWVNYW5hZ2VyUmVmKQorICAgIHsgfQorfTsKKwor
I2RlZmluZSBFV0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01h
bmFnZXJfLCAuLi4pICAgIFwKKyAgICBpZiAoIShtYW5hZ2VyKSkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NS
SVQoIm1hbmFnZXIgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCEobWFuYWdlcikt
PndrQ29va2llTWFuYWdlcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFSU5BX0xPR19DUklUKCJtYW5hZ2VyLT53a0Nvb2tpZU1hbmFnZXIgaXMgTlVMTC4i
KTsgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIFdLQ29va2llTWFuYWdlclJlZiB3a01hbmFnZXJfID0gKG1hbmFnZXIpLT53a0Nvb2tpZU1h
bmFnZXIuZ2V0KCkKKworLy8gRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGVudW0gdmFsaWRhdGlv
bgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lf
QUxXQVlTLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSLCBrV0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5TmV2ZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFksIGtXS0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7CisKKy8vIEV3a19Db29raWVfUGVyc2lz
dGVudF9TdG9yYWdlIGVudW0gdmFsaWRhdGlvbgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhULCBTb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUZXh0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9Q
RVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFLCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VTUUxp
dGUpOworCit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3
a19Db29raWVfTWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hhciogZmlsZW5hbWUsIEV3a19Db29r
aWVfUGVyc2lzdGVudF9TdG9yYWdlIHN0b3JhZ2UpCit7CisgICAgRVdLX0NPT0tJRV9NQU5BR0VS
X1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKGZpbGVuYW1lKTsKKworICAgIHRvSW1wbCh3a01hbmFnZXIpLT5zZXRDb29raWVQZXJzaXN0
ZW50U3RvcmFnZShTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgc3RvcmFnZSk7Cit9CisKK3Zv
aWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lfc2V0KEV3a19Db29raWVfTWFuYWdl
ciAqbWFuYWdlciwgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSkKK3sKKyAgICBFV0tf
Q09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOworCisg
ICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh3a01hbmFnZXIsIHN0
YXRpY19jYXN0PFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KSk7Cit9CisKK3N0cnVj
dCBHZXRfUG9saWN5X0FzeW5jX0RhdGEgeworICAgIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Q
b2xpY3lfR2V0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOworfTsKKworc3RhdGlj
IHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBv
bGljeSwgV0tFcnJvclJlZiB3a0Vycm9yLCB2b2lkKiBkYXRhKQoreworICAgIEdldF9Qb2xpY3lf
QXN5bmNfRGF0YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nhc3Q8R2V0X1BvbGljeV9Bc3luY19E
YXRhKj4oZGF0YSk7CisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdr
X3dlYl9lcnJvcl9uZXcod2tFcnJvcikgOiAwOworCisgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFj
ayhzdGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k+KHBvbGljeSksIGV3a0Vycm9y
LCBjYWxsYmFja0RhdGEtPnVzZXJEYXRhKTsKKworICAgIGlmIChld2tFcnJvcikKKyAgICAgICAg
ZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBkZWxldGUgY2FsbGJhY2tEYXRhOwor
fQorCit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldChFd2tf
Q29va2llX01hbmFnZXIqIG1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lf
R2V0X0NiIGNhbGxiYWNrLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9X
S19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oY2FsbGJhY2spOworCisgICAgR2V0X1BvbGljeV9Bc3luY19EYXRhKiBjYWxs
YmFja0RhdGEgPSBuZXcgR2V0X1BvbGljeV9Bc3luY19EYXRhOworICAgIGNhbGxiYWNrRGF0YS0+
Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBjYWxsYmFja0RhdGEtPnVzZXJEYXRhID0gZGF0YTsK
KworICAgIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kod2tNYW5hZ2Vy
LCBjYWxsYmFja0RhdGEsIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKTsKK30KKworc3RydWN0IEdl
dF9Eb21haW5zX0FzeW5jX0RhdGEgeworICAgIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Eb21h
aW5zX0dldF9DYiBjYWxsYmFjazsKKyAgICB2b2lkKiB1c2VyRGF0YTsKK307CisKK3N0YXRpYyB2
b2lkIGdldERvbWFpbnNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tEb21haW5zLCBX
S0Vycm9yUmVmIHdrRXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAgRWluYV9MaXN0KiBkb21h
aW5zID0gMDsKKyAgICBHZXRfRG9tYWluc19Bc3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBzdGF0
aWNfY2FzdDxHZXRfRG9tYWluc19Bc3luY19EYXRhKj4oY29udGV4dCk7CisgICAgRXdrX1dlYl9F
cnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJvcl9uZXcod2tFcnJvcikgOiAw
OworCisgICAgY29uc3Qgc2l6ZV90IGRvbWFpbkNvdW50ID0gV0tBcnJheUdldFNpemUod2tEb21h
aW5zKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRvbWFpbkNvdW50OyArK2kpIHsKKyAg
ICAgICAgV0tTdHJpbmdSZWYgd2tEb21haW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tB
cnJheUdldEl0ZW1BdEluZGV4KHdrRG9tYWlucywgaSkpOworICAgICAgICBTdHJpbmcgZG9tYWlu
ID0gdG9JbXBsKHdrRG9tYWluKS0+c3RyaW5nKCk7CisgICAgICAgIGlmIChkb21haW4uaXNFbXB0
eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGRvbWFpbnMgPSBlaW5hX2xpc3Rf
YXBwZW5kKGRvbWFpbnMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGRvbWFpbi51dGY4KCkuZGF0YSgp
KSk7CisgICAgfQorCisgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayhkb21haW5zLCBld2tFcnJv
ciwgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSk7CisKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFf
TElTVF9GUkVFKGRvbWFpbnMsIGl0ZW0pCisgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdGF0
aWNfY2FzdDxFaW5hX1N0cmluZ3NoYXJlKj4oaXRlbSkpOworICAgIGlmIChld2tFcnJvcikKKyAg
ICAgICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBkZWxldGUgY2FsbGJhY2tE
YXRhOworfQorCit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19kb21haW5zX3dpdGhfY29v
a2llc19nZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJf
QXN5bmNfRG9tYWluc19HZXRfQ2IgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCit7CisgICAgRVdLX0NP
T0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjYWxsYmFjayk7CisKKyAgICBHZXRfRG9tYWluc19B
c3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBuZXcgR2V0X0RvbWFpbnNfQXN5bmNfRGF0YTsKKyAg
ICBjYWxsYmFja0RhdGEtPmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgY2FsbGJhY2tEYXRhLT51
c2VyRGF0YSA9IGRhdGE7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyh3a01hbmFnZXIsIGNhbGxiYWNrRGF0YSwgZ2V0RG9tYWluc1dpdGhDb29raWVzQ2FsbGJh
Y2spOworfQorCit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9kb21haW5fY29va2llc19jbGVhcihF
d2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyAgICBF
V0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGRvbWFpbik7CisKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoZG9tYWluKSk7CisgICAgV0tDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKHdrTWFuYWdlciwgd2tEb21haW4uZ2V0KCkpOworfQorCit2b2lkIGV3a19jb29raWVfbWFu
YWdlcl9jb29raWVzX2NsZWFyKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBF
V0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOwor
CisgICAgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llcyh3a01hbmFnZXIpOworfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfQ29va2llX01hbmFnZXIgb2JqZWN0Lgor
ICovCit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9mcmVlKEV3a19Db29raWVfTWFuYWdlciogbWFu
YWdlcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtYW5hZ2VyKTsKKworICAg
IGRlbGV0ZSBtYW5hZ2VyOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBh
IEV3a19Db29raWVfTWFuYWdlciBmcm9tIGEgV0tDb29raWVNYW5hZ2VyUmVmLgorICovCitFd2tf
Q29va2llX01hbmFnZXIqIGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb29raWVNYW5hZ2VyUmVm
IHdrQ29va2llTWFuYWdlcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
d2tDb29raWVNYW5hZ2VyLCAwKTsKKworICAgIHJldHVybiBuZXcgRXdrX0Nvb2tpZV9NYW5hZ2Vy
KHdrQ29va2llTWFuYWdlcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmU0MTMyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaApAQCAtMCwwICsxLDE1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29va2llX21hbmFnZXIuaAor
ICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29va2llIE1hbmFnZXIgQVBJLgorICovCisK
KyNpZm5kZWYgZXdrX2Nvb2tpZV9tYW5hZ2VyX2gKKyNkZWZpbmUgZXdrX2Nvb2tpZV9tYW5hZ2Vy
X2gKKworI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIF9Fd2tfQ29va2llX01hbmFnZXIgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tf
Q29va2llX01hbmFnZXIgRXdrX0Nvb2tpZV9NYW5hZ2VyOworCisvKioKKyAqIFxlbnVtICAgIF9F
d2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKKyAqCisgKiBAYnJpZWYgICBDb250YWlucyBhY2NlcHQg
cG9saWNpZXMgZm9yIHRoZSBjb29raWVzLgorICovCitlbnVtIF9Fd2tfQ29va2llX0FjY2VwdF9Q
b2xpY3kgeworICAgIC8vLyBBY2NlcHRzIGV2ZXJ5IGNvb2tpZSBzZW50IGZyb20gYW55IHBhZ2Uu
CisgICAgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUywKKyAgICAvLy8gUmVqZWN0cyBh
bGwgY29va2llcy4KKyAgICBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIsCisgICAgLy8v
IEFjY2VwdHMgY29va2llcyBvbmx5IGZyb20gdGhlIG1haW4gcGFnZS4KKyAgICBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciB0aGUgX0V3a19Db29raWVfQWNjZXB0X1BvbGljeS4KK3R5cGVkZWYgZW51bSBfRXdr
X0Nvb2tpZV9BY2NlcHRfUG9saWN5IEV3a19Db29raWVfQWNjZXB0X1BvbGljeTsKKworLyoqCisg
KiBcZW51bSAgICBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UKKyAqCisgKiBAYnJpZWYg
ICBFbnVtIHZhbHVlcyB0byBkZW5vdGUgY29va2llcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdHlwZS4K
KyAqLworZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgeworICAgIC8vLyBDb29r
aWVzIGFyZSBzdG9yZWQgaW4gYSB0ZXh0IGZpbGUgaW4gdGhlIE1vemlsbGEgImNvb2tpZXMudHh0
IiBmb3JtYXQuCisgICAgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCwKKyAgICAv
Ly8gQ29va2llcyBhcmUgc3RvcmVkIGluIGEgU1FMaXRlIGZpbGUgaW4gdGhlIGN1cnJlbnQgTW96
aWxsYSBmb3JtYXQuCisgICAgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFCit9
OworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhlIF9Fd2tfQ29va2llX1BlcnNpc3Rl
bnRfU3RvcmFnZS4KK3R5cGVkZWYgZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2Ug
RXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2U7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Nv
b2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5j
X1BvbGljeV9HZXRfQ2IKKyAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tf
Y29va2llX21hbmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQKKyAqLwordHlwZWRlZiB2b2lk
ICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IpKEV3a19Db29raWVfQWNj
ZXB0X1BvbGljeSBwb2xpY3ksIEV3a19XZWJfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZv
KTsKKworLyoqCisgKiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfRG9tYWluc19H
ZXRfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0RvbWFpbnNfR2V0X0NiCisgKiBAYnJpZWYg
Q2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2RvbWFp
bnNfd2l0aF9jb29raWVzX2dldAorICoKKyAqIEBub3RlIFRoZSBAYSBkb21haW5zIGxpc3QgaXRl
bXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZS4gV2hlbmV2ZXIgcG9zc2li
bGUKKyAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9zdHJpbmdz
aGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkKKyAqIG9yIHN0cmR1
cCgpLgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfRG9tYWlu
c19HZXRfQ2IpKEVpbmFfTGlzdCogZG9tYWlucywgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQg
KmV2ZW50X2luZm8pOworCisvKioKKyAqIFNldCB0aGUgQGEgZmlsZW5hbWUgd2hlcmUgbm9uLXNl
c3Npb24gY29va2llcyBhcmUgc3RvcmVkIHBlcnNpc3RlbnRseSB1c2luZyBAYSBzdG9yYWdlIGFz
IHRoZSBmb3JtYXQgdG8gcmVhZC93cml0ZSB0aGUgY29va2llcy4KKyAqCisgKiBDb29raWVzIGFy
ZSBpbml0aWFsbHkgcmVhZCBmcm9tIEBmaWxlbmFtZSB0byBjcmVhdGUgYW4gaW5pdGlhbCBzZXQg
b2YgY29va2llcy4KKyAqIFRoZW4sIG5vbi1zZXNzaW9uIGNvb2tpZXMgd2lsbCBiZSB3cml0dGVu
IHRvIEBmaWxlbmFtZS4KKyAqCisgKiBCeSBkZWZhdWx0LCBAYSBtYW5hZ2VyIGRvZXNuJ3Qgc3Rv
cmUgdGhlIGNvb2tpZXMgcGVyc2lzdGVubHksIHNvIHlvdSBuZWVkIHRvIGNhbGwgdGhpcworICog
bWV0aG9kIHRvIGtlZXAgY29va2llcyBzYXZlZCBhY3Jvc3Mgc2Vzc2lvbnMuCisgKgorICogQGNv
b2tpZV9tYW5hZ2VyOiBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgorICogQGZpbGVuYW1l
OiB0aGUgZmlsZW5hbWUgdG8gcmVhZCB0by93cml0ZSBmcm9tLgorICogQHN0b3JhZ2U6IGEgI1dl
YktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlLgorICovCit2b2lkIGV3a19jb29raWVfbWFuYWdl
cl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgY29u
c3QgY2hhciAqZmlsZW5hbWUsIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIHN0b3JhZ2Up
OworCisvKioKKyAqIFNldCBAYSBwb2xpY3kgYXMgdGhlIGNvb2tpZSBhY2NlcHRhbmNlIHBvbGlj
eSBmb3IgQGEgbWFuYWdlci4KKyAqCisgKiBCeSBkZWZhdWx0LCBjb29raWVzIGFyZSBhbHdheXMg
YWNjZXB0ZWQuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHVw
ZGF0ZS4KKyAqIEBwYXJhbSBwb2xpY3kgYSAjRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5CisgKi8K
KworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChFd2tfQ29v
a2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3kpOwor
CisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5
IG9mIEBhIG1hbmFnZXIuCisgKgorICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUgYWx3YXlzIGFj
Y2VwdGVkLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byBxdWVy
eS4KKyAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwb2xp
Y3kgaXMgcmVjZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJlZC4KKyAqIEBwYXJhbSBkYXRhIFVzZXIg
ZGF0YSAobWF5IGJlIEBjIE5VTEwpLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2Vy
X2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgRXdr
X0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2FsbGJhY2ssIHZvaWQgKmRhdGEp
OworCisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgbGlzdCBvZiBkb21haW5zIGZvciB3
aGljaCBAYSBtYW5hZ2VyIGNvbnRhaW5zIGNvb2tpZXMuCisgKgorICogQHBhcmFtIG1hbmFnZXIg
VGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHF1ZXJ5LgorICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5j
dGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvbWFpbnMgaGF2ZSBiZWVuIHJlY2VpdmVkLgorICogQHBh
cmFtIGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8KK0VBUEkgdm9pZCBld2tf
Y29va2llX21hbmFnZXJfYXN5bmNfZG9tYWluc193aXRoX2Nvb2tpZXNfZ2V0KEV3a19Db29raWVf
TWFuYWdlciAqbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0RvbWFpbnNfR2V0X0Ni
IGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKKworLyoqCisgKiBSZW1vdmUgYWxsIGNvb2tpZXMgb2Yg
QGEgbWFuYWdlciBmb3IgdGhlIGdpdmVuIEBhIGRvbWFpbi4KKyAqCisgKiBAcGFyYW0gbWFuYWdl
ciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgorICogQHBhcmFtIGRvbWFpbiBBIGRvbWFp
biBuYW1lLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2RvbWFpbl9jb29raWVz
X2NsZWFyKEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgY29uc3QgY2hhciAqZG9tYWluKTsK
KworLyoqCisgKiBEZWxldGUgYWxsIGNvb2tpZXMgb2YgQGEgbWFuYWdlci4KKyAqCisgKiBAcGFy
YW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgorICovCitFQVBJIHZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5h
Z2VyKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19j
b29raWVfbWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42NDI4NWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb29raWVfbWFu
YWdlcl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGVfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db29raWVf
TWFuYWdlciBFd2tfQ29va2llX01hbmFnZXI7CisKK0V3a19Db29raWVfTWFuYWdlciogZXdrX2Nv
b2tpZV9tYW5hZ2VyX25ldyhXS0Nvb2tpZU1hbmFnZXJSZWYgd2tDb29raWVNYW5hZ2VyKTsKK3Zv
aWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKTsK
KworI2VuZGlmIC8vIGV3a19jb29raWVfbWFuYWdlcl9wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152021</attachid>
            <date>2012-07-12 12:26:26 -0700</date>
            <delta_ts>2012-07-13 04:39:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>21320</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMDVmNjhhLi4wODkyNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmVkCisgICAgICAg
IGZyb20gdGhlIEV3a19Db250ZXh0IEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0KToK
KyAgICAgICAgKF9Fd2tfQ29udGV4dDo6X0V3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250
ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQ29va2llX01hbmFnZXIpOgorICAgICAgICAo
X0V3a19Db29raWVfTWFuYWdlcjo6X0V3a19Db29raWVfTWFuYWdlcik6CisgICAgICAgIChld2tf
Y29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldCk6CisgICAgICAgIChld2tfY29v
a2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQpOgorICAgICAgICAoR2V0X1BvbGljeV9Bc3lu
Y19EYXRhKToKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGV3
a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldCk6CisgICAgICAgIChHZXRf
RG9tYWluc19Bc3luY19EYXRhKToKKyAgICAgICAgKGdldERvbWFpbnNXaXRoQ29va2llc0NhbGxi
YWNrKToKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9hc3luY19kb21haW5zX3dpdGhfY29v
a2llc19nZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2RvbWFpbl9jb29raWVzX2Ns
ZWFyKToKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKToKKyAgICAg
ICAgKGV3a19jb29raWVfbWFuYWdlcl9mcmVlKToKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdl
cl9uZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXJf
cHJpdmF0ZS5oOiBBZGRlZC4KKwogMjAxMi0wNy0xMiAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5y
b3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dHVyZU1hcHBlckFuaW1hdGlv
biBhbmQgdGV4bWFwL0xheWVyVHJhbnNmb3JtIHRvIHBsYXRmb3JtL2dyYXBoaWNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IDJkNjUwNmUuLjM2NDM4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0zNSw2ICszNSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmln
YXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmgKaW5kZXggOGZhOTBhZS4uZDdkNzk2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5l
IEVXZWJLaXQyX2gKIAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2Nv
b2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19p
bnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwCmluZGV4IGUxY2NmZjIuLmE5MTUyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTI1LDIwICsyNSwzNCBAQAogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlcl9wcml2YXRl
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfRXdrX0NvbnRleHQgewog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dDsKKworICAgIEV3a19Db29raWVf
TWFuYWdlciogY29va2llTWFuYWdlcjsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAg
UmVmUHRyPEJhdHRlcnlQcm92aWRlcj4gYmF0dGVyeVByb3ZpZGVyOwogI2VuZGlmCiAKICAgICBf
RXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgICAgIDogY29udGV4dChj
b250ZXh0UmVmKQorICAgICAgICAsIGNvb2tpZU1hbmFnZXIoMCkKICAgICB7IH0KIH07CiAKK0V3
a19Db29raWVfTWFuYWdlciogZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KEV3a19Db250
ZXh0KiBld2tDb250ZXh0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChl
d2tDb250ZXh0LCAwKTsKKworICAgIGlmICghZXdrQ29udGV4dC0+Y29va2llTWFuYWdlcikKKyAg
ICAgICAgZXdrQ29udGV4dC0+Y29va2llTWFuYWdlciA9IGV3a19jb29raWVfbWFuYWdlcl9uZXco
V0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihld2tDb250ZXh0LT5jb250ZXh0LmdldCgpKSk7CisK
KyAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29va2llTWFuYWdlcjsKK30KKwogV0tDb250ZXh0UmVm
IGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQp
CiB7CiAgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCA3OTRkMDUyLi4wYzQ3
MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgZXdrX2NvbnRleHRfaAogI2RlZmluZSBld2tf
Y29udGV4dF9oCiAKKyNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXIuaCIKICNpbmNsdWRlIDxF
dmFzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNDUsNiArNDYsMTUgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OwogICovCiBFQVBJIEV3a19Db250ZXh0ICpl
d2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwogCisvKioKKyAqIEdldHMgdGhlIGNvb2tpZSBtYW5h
Z2VyIGluc3RhbmNlIGZvciB0aGlzIEBhIGNvbnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQg
Y29udGV4dCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBFd2tfQ29va2llX01hbmFn
ZXIgb2JqZWN0IGluc3RhbmNlLgorICovCitFQVBJIEV3a19Db29raWVfTWFuYWdlciAqZXdrX2Nv
bnRleHRfY29va2llX21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0ICpjb250ZXh0KTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5N2IyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0wLDAg
KzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tB
cnJheS5oIgorI2luY2x1ZGUgIldLQ29va2llTWFuYWdlci5oIgorI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
UHJveHkuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJy
b3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisg
KiBcc3RydWN0ICBfRXdrX0Nvb2tpZV9NYW5hZ2VyCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUg
Y29va2llIG1hbmFnZXIgZGF0YS4KKyAqLworc3RydWN0IF9Fd2tfQ29va2llX01hbmFnZXIgewor
ICAgIFdLUmV0YWluUHRyPFdLQ29va2llTWFuYWdlclJlZj4gd2tDb29raWVNYW5hZ2VyOworCisg
ICAgX0V3a19Db29raWVfTWFuYWdlcihXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJl
ZikKKyAgICAgICAgOiB3a0Nvb2tpZU1hbmFnZXIoY29va2llTWFuYWdlclJlZikKKyAgICB7IH0K
K307CisKKyNkZWZpbmUgRVdLX0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdl
ciwgd2tNYW5hZ2VyXywgLi4uKSAgICBcCisgICAgaWYgKCEobWFuYWdlcikpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5B
X0xPR19DUklUKCJtYW5hZ2VyIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKG1h
bmFnZXIpLT53a0Nvb2tpZU1hbmFnZXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgibWFuYWdlci0+d2tDb29raWVNYW5hZ2VyIGlz
IE5VTEwuIik7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBXS0Nvb2tpZU1hbmFnZXJSZWYgd2tNYW5hZ2VyXyA9IChtYW5hZ2VyKS0+d2tD
b29raWVNYW5hZ2VyLmdldCgpCisKKy8vIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBlbnVtIHZh
bGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRf
UE9MSUNZX0FMV0FZUywga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUiwga1dL
SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05PX1RISVJEX1BBUlRZLCBrV0tIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pOworCisvLyBFd2tfQ29va2ll
X1BlcnNpc3RlbnRfU3RvcmFnZSBlbnVtIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCwgU291cENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVGV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURSwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlU1FMaXRlKTsKKwordm9pZCBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdl
X3NldChFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBF
d2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBzdG9yYWdlKQoreworICAgIEVXS19DT09LSUVf
TUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oZmlsZW5hbWUpOworCisgICAgdG9JbXBsKHdrTWFuYWdlcikt
PnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpLCBz
dG9yYWdlKTsKK30KKwordm9pZCBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQo
RXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9s
aWN5KQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIs
IHdrTWFuYWdlcik7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHdrTWFuYWdlciwgc3RhdGljX2Nhc3Q8V0tIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xp
Y3kpKTsKK30KKworc3RydWN0IEdldF9Qb2xpY3lfQXN5bmNfRGF0YSB7CisgICAgRXdrX0Nvb2tp
ZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRh
dGE7Cit9OworCitzdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXS0Vycm9yUmVmIHdrRXJyb3IsIHZvaWQqIGRhdGEpCit7
CisgICAgR2V0X1BvbGljeV9Bc3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBzdGF0aWNfY2FzdDxH
ZXRfUG9saWN5X0FzeW5jX0RhdGEqPihkYXRhKTsKKyAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJv
ciA9IHdrRXJyb3IgPyBld2tfd2ViX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CisKKyAgICBjYWxs
YmFja0RhdGEtPmNhbGxiYWNrKHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4o
cG9saWN5KSwgZXdrRXJyb3IsIGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOworCisgICAgaWYgKGV3
a0Vycm9yKQorICAgICAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGRlbGV0
ZSBjYWxsYmFja0RhdGE7Cit9CisKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2Vw
dF9wb2xpY3lfZ2V0KEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5h
Z2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCit7CisgICAgRVdL
X0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjYWxsYmFjayk7CisKKyAgICBHZXRfUG9saWN5
X0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IG5ldyBHZXRfUG9saWN5X0FzeW5jX0RhdGE7Cisg
ICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIGNhbGxiYWNrRGF0YS0+
dXNlckRhdGEgPSBkYXRhOworCisgICAgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSh3a01hbmFnZXIsIGNhbGxiYWNrRGF0YSwgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2sp
OworfQorCitzdHJ1Y3QgR2V0X0RvbWFpbnNfQXN5bmNfRGF0YSB7CisgICAgRXdrX0Nvb2tpZV9N
YW5hZ2VyX0FzeW5jX0RvbWFpbnNfR2V0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRh
OworfTsKKworc3RhdGljIHZvaWQgZ2V0RG9tYWluc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJh
eVJlZiB3a0RvbWFpbnMsIFdLRXJyb3JSZWYgd2tFcnJvciwgdm9pZCogY29udGV4dCkKK3sKKyAg
ICBFaW5hX0xpc3QqIGRvbWFpbnMgPSAwOworICAgIEdldF9Eb21haW5zX0FzeW5jX0RhdGEqIGNh
bGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0PEdldF9Eb21haW5zX0FzeW5jX0RhdGEqPihjb250ZXh0
KTsKKyAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKSA6IDA7CisKKyAgICBjb25zdCBzaXplX3QgZG9tYWluQ291bnQgPSBXS0Fy
cmF5R2V0U2l6ZSh3a0RvbWFpbnMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZG9tYWlu
Q291bnQ7ICsraSkgeworICAgICAgICBXS1N0cmluZ1JlZiB3a0RvbWFpbiA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tEb21haW5zLCBpKSk7CisgICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b0ltcGwod2tEb21haW4pLT5zdHJpbmcoKTsKKyAgICAgICAg
aWYgKGRvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZG9t
YWlucyA9IGVpbmFfbGlzdF9hcHBlbmQoZG9tYWlucywgZWluYV9zdHJpbmdzaGFyZV9hZGQoZG9t
YWluLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
KGRvbWFpbnMsIGV3a0Vycm9yLCBjYWxsYmFja0RhdGEtPnVzZXJEYXRhKTsKKworICAgIHZvaWQq
IGl0ZW07CisgICAgRUlOQV9MSVNUX0ZSRUUoZG9tYWlucywgaXRlbSkKKyAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHN0YXRpY19jYXN0PEVpbmFfU3RyaW5nc2hhcmUqPihpdGVtKSk7CisgICAg
aWYgKGV3a0Vycm9yKQorICAgICAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAg
IGRlbGV0ZSBjYWxsYmFja0RhdGE7Cit9CisKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5j
X2RvbWFpbnNfd2l0aF9jb29raWVzX2dldChFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIsIEV3
a19Db29raWVfTWFuYWdlcl9Bc3luY19Eb21haW5zX0dldF9DYiBjYWxsYmFjaywgdm9pZCogZGF0
YSkKK3sKKyAgICBFV0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3
a01hbmFnZXIpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNhbGxiYWNrKTsKKwor
ICAgIEdldF9Eb21haW5zX0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IG5ldyBHZXRfRG9tYWlu
c19Bc3luY19EYXRhOworICAgIGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICBjYWxsYmFja0RhdGEtPnVzZXJEYXRhID0gZGF0YTsKKworICAgIFdLQ29va2llTWFuYWdlckdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKHdrTWFuYWdlciwgY2FsbGJhY2tEYXRhLCBnZXREb21haW5z
V2l0aENvb2tpZXNDYWxsYmFjayk7Cit9CisKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2RvbWFp
bl9jb29raWVzX2NsZWFyKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hhciog
ZG9tYWluKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFn
ZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZG9tYWluKTsK
KworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0RvbWFpbihBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4pKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJEZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUod2tNYW5hZ2VyLCB3a0RvbWFpbi5nZXQoKSk7Cit9CisKK3Zv
aWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBt
YW5hZ2VyKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFn
ZXIsIHdrTWFuYWdlcik7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJEZWxldGVBbGxDb29raWVzKHdr
TWFuYWdlcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGcmVlcyBhIEV3a19Db29raWVf
TWFuYWdlciBvYmplY3QuCisgKi8KK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUoRXdrX0Nv
b2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KG1hbmFnZXIpOworCisgICAgZGVsZXRlIG1hbmFnZXI7Cit9CisKKy8qKgorICogQGludGVybmFs
CisgKiBDb25zdHJ1Y3RzIGEgRXdrX0Nvb2tpZV9NYW5hZ2VyIGZyb20gYSBXS0Nvb2tpZU1hbmFn
ZXJSZWYuCisgKi8KK0V3a19Db29raWVfTWFuYWdlciogZXdrX2Nvb2tpZV9tYW5hZ2VyX25ldyhX
S0Nvb2tpZU1hbmFnZXJSZWYgd2tDb29raWVNYW5hZ2VyKQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh3a0Nvb2tpZU1hbmFnZXIsIDApOworCisgICAgcmV0dXJuIG5ldyBF
d2tfQ29va2llX01hbmFnZXIod2tDb29raWVNYW5hZ2VyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQxMzJkNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0w
LDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19j
b29raWVfbWFuYWdlci5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb29raWUgTWFu
YWdlciBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfaAorI2RlZmluZSBl
d2tfY29va2llX21hbmFnZXJfaAorCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2luY2x1
ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Db29raWVfTWFuYWdlciAqLwordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19Db29raWVfTWFuYWdlciBFd2tfQ29va2llX01hbmFnZXI7CisKKy8q
KgorICogXGVudW0gICAgX0V3a19Db29raWVfQWNjZXB0X1BvbGljeQorICoKKyAqIEBicmllZiAg
IENvbnRhaW5zIGFjY2VwdCBwb2xpY2llcyBmb3IgdGhlIGNvb2tpZXMuCisgKi8KK2VudW0gX0V3
a19Db29raWVfQWNjZXB0X1BvbGljeSB7CisgICAgLy8vIEFjY2VwdHMgZXZlcnkgY29va2llIHNl
bnQgZnJvbSBhbnkgcGFnZS4KKyAgICBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTLAor
ICAgIC8vLyBSZWplY3RzIGFsbCBjb29raWVzLgorICAgIEVXS19DT09LSUVfQUNDRVBUX1BPTElD
WV9ORVZFUiwKKyAgICAvLy8gQWNjZXB0cyBjb29raWVzIG9ubHkgZnJvbSB0aGUgbWFpbiBwYWdl
LgorICAgIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9OT19USElSRF9QQVJUWQorfTsKKworLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBfRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Lgor
dHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5OworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFn
ZQorICoKKyAqIEBicmllZiAgIEVudW0gdmFsdWVzIHRvIGRlbm90ZSBjb29raWVzIHBlcnNpc3Rl
bnQgc3RvcmFnZSB0eXBlLgorICovCitlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFn
ZSB7CisgICAgLy8vIENvb2tpZXMgYXJlIHN0b3JlZCBpbiBhIHRleHQgZmlsZSBpbiB0aGUgTW96
aWxsYSAiY29va2llcy50eHQiIGZvcm1hdC4KKyAgICBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RP
UkFHRV9URVhULAorICAgIC8vLyBDb29raWVzIGFyZSBzdG9yZWQgaW4gYSBTUUxpdGUgZmlsZSBp
biB0aGUgY3VycmVudCBNb3ppbGxhIGZvcm1hdC4KKyAgICBFV0tfQ09PS0lFX1BFUlNJU1RFTlRf
U1RPUkFHRV9TUUxJVEUKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgX0V3
a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlLgordHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX1Bl
cnNpc3RlbnRfU3RvcmFnZSBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZTsKKworLyoqCisg
KiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBFd2tfQ29v
a2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYgorICogQGJyaWVmIENhbGxiYWNrIHR5cGUg
Zm9yIHVzZSB3aXRoIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldAor
ICovCit0eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9D
YikoRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciAqZXJyb3Is
IHZvaWQgKmV2ZW50X2luZm8pOworCisvKioKKyAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdl
cl9Bc3luY19Eb21haW5zX0dldF9DYiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfRG9tYWluc19H
ZXRfQ2IKKyAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29va2llX21h
bmFnZXJfYXN5bmNfZG9tYWluc193aXRoX2Nvb2tpZXNfZ2V0CisgKgorICogQG5vdGUgVGhlIEBh
IGRvbWFpbnMgbGlzdCBpdGVtcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJl
LiBXaGVuZXZlciBwb3NzaWJsZQorICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5k
IHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9h
ZGQoKQorICogb3Igc3RyZHVwKCkuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Eb21haW5zX0dldF9DYikoRWluYV9MaXN0KiBkb21haW5zLCBFd2tfV2ViX0Vy
cm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CisKKy8qKgorICogU2V0IHRoZSBAYSBmaWxl
bmFtZSB3aGVyZSBub24tc2Vzc2lvbiBjb29raWVzIGFyZSBzdG9yZWQgcGVyc2lzdGVudGx5IHVz
aW5nIEBhIHN0b3JhZ2UgYXMgdGhlIGZvcm1hdCB0byByZWFkL3dyaXRlIHRoZSBjb29raWVzLgor
ICoKKyAqIENvb2tpZXMgYXJlIGluaXRpYWxseSByZWFkIGZyb20gQGZpbGVuYW1lIHRvIGNyZWF0
ZSBhbiBpbml0aWFsIHNldCBvZiBjb29raWVzLgorICogVGhlbiwgbm9uLXNlc3Npb24gY29va2ll
cyB3aWxsIGJlIHdyaXR0ZW4gdG8gQGZpbGVuYW1lLgorICoKKyAqIEJ5IGRlZmF1bHQsIEBhIG1h
bmFnZXIgZG9lc24ndCBzdG9yZSB0aGUgY29va2llcyBwZXJzaXN0ZW5seSwgc28geW91IG5lZWQg
dG8gY2FsbCB0aGlzCisgKiBtZXRob2QgdG8ga2VlcCBjb29raWVzIHNhdmVkIGFjcm9zcyBzZXNz
aW9ucy4KKyAqCisgKiBAY29va2llX21hbmFnZXI6IFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRh
dGUuCisgKiBAZmlsZW5hbWU6IHRoZSBmaWxlbmFtZSB0byByZWFkIHRvL3dyaXRlIGZyb20uCisg
KiBAc3RvcmFnZTogYSAjV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UuCisgKi8KK3ZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoRXdrX0Nvb2tpZV9NYW5h
Z2VyICptYW5hZ2VyLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgRXdrX0Nvb2tpZV9QZXJzaXN0ZW50
X1N0b3JhZ2Ugc3RvcmFnZSk7CisKKy8qKgorICogU2V0IEBhIHBvbGljeSBhcyB0aGUgY29va2ll
IGFjY2VwdGFuY2UgcG9saWN5IGZvciBAYSBtYW5hZ2VyLgorICoKKyAqIEJ5IGRlZmF1bHQsIGNv
b2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29v
a2llIG1hbmFnZXIgdG8gdXBkYXRlLgorICogQHBhcmFtIHBvbGljeSBhICNFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3kKKyAqLworCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9w
b2xpY3lfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5IHBvbGljeSk7CisKKy8qKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBjb29raWUg
YWNjZXB0YW5jZSBwb2xpY3kgb2YgQGEgbWFuYWdlci4KKyAqCisgKiBCeSBkZWZhdWx0LCBjb29r
aWVzIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tp
ZSBtYW5hZ2VyIHRvIHF1ZXJ5LgorICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdoZW4gdGhlIHBvbGljeSBpcyByZWNlaXZlZCBvciBhbiBlcnJvciBvY2N1cmVkLgorICog
QHBhcmFtIGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8KK0VBUEkgdm9pZCBl
d2tfY29va2llX21hbmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQoRXdrX0Nvb2tpZV9NYW5h
Z2VyICptYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBjYWxs
YmFjaywgdm9pZCAqZGF0YSk7CisKKy8qKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBsaXN0
IG9mIGRvbWFpbnMgZm9yIHdoaWNoIEBhIG1hbmFnZXIgY29udGFpbnMgY29va2llcy4KKyAqCisg
KiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gcXVlcnkuCisgKiBAcGFyYW0g
Y2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9tYWlucyBoYXZlIGJlZW4g
cmVjZWl2ZWQuCisgKiBAcGFyYW0gZGF0YSBVc2VyIGRhdGEgKG1heSBiZSBAYyBOVUxMKS4KKyAq
LworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19kb21haW5zX3dpdGhfY29va2ll
c19nZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5
bmNfRG9tYWluc19HZXRfQ2IgY2FsbGJhY2ssIHZvaWQgKmRhdGEpOworCisvKioKKyAqIFJlbW92
ZSBhbGwgY29va2llcyBvZiBAYSBtYW5hZ2VyIGZvciB0aGUgZ2l2ZW4gQGEgZG9tYWluLgorICoK
KyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUuCisgKiBAcGFy
YW0gZG9tYWluIEEgZG9tYWluIG5hbWUuCisgKi8KK0VBUEkgdm9pZCBld2tfY29va2llX21hbmFn
ZXJfZG9tYWluX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBjb25z
dCBjaGFyICpkb21haW4pOworCisvKioKKyAqIERlbGV0ZSBhbGwgY29va2llcyBvZiBAYSBtYW5h
Z2VyLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUu
CisgKi8KK0VBUEkgdm9pZCBld2tfY29va2llX21hbmFnZXJfY29va2llc19jbGVhcihFd2tfQ29v
a2llX01hbmFnZXIgKm1hbmFnZXIpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLy8gZXdrX2Nvb2tpZV9tYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0Mjg1YzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXJfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29va2llX21hbmFn
ZXJfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCit0eXBlZGVmIHN0
cnVjdCBfRXdrX0Nvb2tpZV9NYW5hZ2VyIEV3a19Db29raWVfTWFuYWdlcjsKKworRXdrX0Nvb2tp
ZV9NYW5hZ2VyKiBld2tfY29va2llX21hbmFnZXJfbmV3KFdLQ29va2llTWFuYWdlclJlZiB3a0Nv
b2tpZU1hbmFnZXIpOwordm9pZCBld2tfY29va2llX21hbmFnZXJfZnJlZShFd2tfQ29va2llX01h
bmFnZXIqIG1hbmFnZXIpOworCisjZW5kaWYgLy8gZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGVf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152218</attachid>
            <date>2012-07-13 04:39:14 -0700</date>
            <delta_ts>2012-07-13 06:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>21385</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4MjYyMjRmLi43ZDM2MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmVkCisgICAgICAg
IGZyb20gdGhlIEV3a19Db250ZXh0IEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0KToK
KyAgICAgICAgKF9Fd2tfQ29udGV4dDo6X0V3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250
ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQ29va2llX01hbmFnZXIpOgorICAgICAgICAo
X0V3a19Db29raWVfTWFuYWdlcjo6X0V3a19Db29raWVfTWFuYWdlcik6CisgICAgICAgIChld2tf
Y29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldCk6CisgICAgICAgIChld2tfY29v
a2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQpOgorICAgICAgICAoR2V0X1BvbGljeV9Bc3lu
Y19EYXRhKToKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGV3
a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldCk6CisgICAgICAgIChHZXRf
SG9zdG5hbWVzX0FzeW5jX0RhdGEpOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXND
YWxsYmFjayk6CisgICAgICAgIChld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dp
dGhfY29va2llc19nZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nv
b2tpZXNfY2xlYXIpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIp
OgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUpOgorICAgICAgICAoZXdrX2Nvb2tp
ZV9tYW5hZ2VyX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlcl9wcml2YXRlLmg6IEFkZGVkLgorCiAyMDEyLTA3LTEzICBaZW5vIEFsYmlzc2VyICA8
emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgR3JhcGhpY3NT
dXJmYWNlIGZvciBMaW51eC9HTFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGU1ZTU0
ZTYuLmZjMzM0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICszNyw3IEBA
IExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRl
cnlQcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggOGZhOTBh
ZS4uZDdkNzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIEVXZWJLaXQyX2gKIAogI2luY2x1ZGUgImV3
a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
ZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUg
ImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IGUxY2NmZjIuLmE5MTUyY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAKQEAgLTI1LDIwICsyNSwzNCBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIHN0cnVjdCBfRXdrX0NvbnRleHQgewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dDsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFuYWdlcjsKICNp
ZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgUmVmUHRyPEJhdHRlcnlQcm92aWRlcj4gYmF0
dGVyeVByb3ZpZGVyOwogI2VuZGlmCiAKICAgICBfRXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCiAgICAgICAgIDogY29udGV4dChjb250ZXh0UmVmKQorICAgICAgICAsIGNvb2tp
ZU1hbmFnZXIoMCkKICAgICB7IH0KIH07CiAKK0V3a19Db29raWVfTWFuYWdlciogZXdrX2NvbnRl
eHRfY29va2llX21hbmFnZXJfZ2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0KQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChld2tDb250ZXh0LCAwKTsKKworICAgIGlmICgh
ZXdrQ29udGV4dC0+Y29va2llTWFuYWdlcikKKyAgICAgICAgZXdrQ29udGV4dC0+Y29va2llTWFu
YWdlciA9IGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihl
d2tDb250ZXh0LT5jb250ZXh0LmdldCgpKSk7CisKKyAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29v
a2llTWFuYWdlcjsKK30KKwogV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQo
Y29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCiB7CiAgICAgcmV0dXJuIGV3a0NvbnRleHQt
PmNvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaAppbmRleCA3OTRkMDUyLi4wYzQ3MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5k
ZWYgZXdrX2NvbnRleHRfaAogI2RlZmluZSBld2tfY29udGV4dF9oCiAKKyNpbmNsdWRlICJld2tf
Y29va2llX21hbmFnZXIuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwpAQCAtNDUsNiArNDYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250
ZXh0OwogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwog
CisvKioKKyAqIEdldHMgdGhlIGNvb2tpZSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIEBhIGNv
bnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QgdG8gcXVlcnkuCisg
KgorICogQHJldHVybiBFd2tfQ29va2llX01hbmFnZXIgb2JqZWN0IGluc3RhbmNlLgorICovCitF
QVBJIEV3a19Db29raWVfTWFuYWdlciAqZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KGNv
bnN0IEV3a19Db250ZXh0ICpjb250ZXh0KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29v
a2llX21hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZmU2
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLQ29va2ll
TWFuYWdlci5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBcc3RydWN0ICBfRXdrX0Nvb2tpZV9NYW5h
Z2VyCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgY29va2llIG1hbmFnZXIgZGF0YS4KKyAqLwor
c3RydWN0IF9Fd2tfQ29va2llX01hbmFnZXIgeworICAgIFdLUmV0YWluUHRyPFdLQ29va2llTWFu
YWdlclJlZj4gd2tDb29raWVNYW5hZ2VyOworCisgICAgX0V3a19Db29raWVfTWFuYWdlcihXS0Nv
b2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZikKKyAgICAgICAgOiB3a0Nvb2tpZU1hbmFn
ZXIoY29va2llTWFuYWdlclJlZikKKyAgICB7IH0KK307CisKKyNkZWZpbmUgRVdLX0NPT0tJRV9N
QU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyXywgLi4uKSAgICBcCisg
ICAgaWYgKCEobWFuYWdlcikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJtYW5hZ2VyIGlzIE5VTEwu
Iik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFf
QVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGlmICghKG1hbmFnZXIpLT53a0Nvb2tpZU1hbmFnZXIpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJ
VCgibWFuYWdlci0+d2tDb29raWVNYW5hZ2VyIGlzIE5VTEwuIik7ICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXS0Nvb2tpZU1hbmFnZXJS
ZWYgd2tNYW5hZ2VyXyA9IChtYW5hZ2VyKS0+d2tDb29raWVNYW5hZ2VyLmdldCgpCisKKy8vIEV3
a19Db29raWVfQWNjZXB0X1BvbGljeSBlbnVtIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUywga1dLSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUFsd2F5cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUiwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVy
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZ
X05PX1RISVJEX1BBUlRZLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9j
dW1lbnREb21haW4pOworCisvLyBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBlbnVtIHZh
bGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9QRVJTSVNU
RU5UX1NUT1JBR0VfVEVYVCwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4dCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NR
TElURSwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlKTsKKwordm9pZCBld2tfY29v
a2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChFd2tfQ29va2llX01hbmFnZXIqIG1h
bmFnZXIsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFn
ZSBzdG9yYWdlKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1h
bmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZmlsZW5h
bWUpOworCisgICAgdG9JbXBsKHdrTWFuYWdlciktPnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
KFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpLCBzdG9yYWdlKTsKK30KKwordm9pZCBld2tfY29v
a2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2Vy
LCBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5KQoreworICAgIEVXS19DT09LSUVfTUFO
QUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisKKyAgICBXS0Nvb2tp
ZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHdrTWFuYWdlciwgc3RhdGljX2Nhc3Q8
V0tIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpKTsKK30KKworc3RydWN0IEdldF9Qb2xp
Y3lfQXN5bmNfRGF0YSB7CisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRf
Q2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRhdGE7Cit9OworCitzdGF0aWMgdm9pZCBnZXRB
Y2NlcHRQb2xpY3lDYWxsYmFjayhXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXS0Vy
cm9yUmVmIHdrRXJyb3IsIHZvaWQqIGRhdGEpCit7CisgICAgR2V0X1BvbGljeV9Bc3luY19EYXRh
KiBjYWxsYmFja0RhdGEgPSBzdGF0aWNfY2FzdDxHZXRfUG9saWN5X0FzeW5jX0RhdGEqPihkYXRh
KTsKKyAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKSA6IDA7CisKKyAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNrKHN0YXRpY19j
YXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4ocG9saWN5KSwgZXdrRXJyb3IsIGNhbGxiYWNr
RGF0YS0+dXNlckRhdGEpOworCisgICAgaWYgKGV3a0Vycm9yKQorICAgICAgICBld2tfd2ViX2Vy
cm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7Cit9CisKK3ZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KEV3a19Db29raWVfTWFu
YWdlciogbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2Fs
bGJhY2ssIHZvaWQqIGRhdGEpCit7CisgICAgRVdLX0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9S
RVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihjYWxsYmFjayk7CisKKyAgICBHZXRfUG9saWN5X0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9
IG5ldyBHZXRfUG9saWN5X0FzeW5jX0RhdGE7CisgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayA9
IGNhbGxiYWNrOworICAgIGNhbGxiYWNrRGF0YS0+dXNlckRhdGEgPSBkYXRhOworCisgICAgV0tD
b29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh3a01hbmFnZXIsIGNhbGxiYWNr
RGF0YSwgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOworfQorCitzdHJ1Y3QgR2V0X0hvc3RuYW1l
c19Bc3luY19EYXRhIHsKKyAgICBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dl
dF9DYiBjYWxsYmFjazsKKyAgICB2b2lkKiB1c2VyRGF0YTsKK307CisKK3N0YXRpYyB2b2lkIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tF
cnJvclJlZiB3a0Vycm9yLCB2b2lkKiBjb250ZXh0KQoreworICAgIEVpbmFfTGlzdCogaG9zdG5h
bWVzID0gMDsKKyAgICBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0
YXRpY19jYXN0PEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSo+KGNvbnRleHQpOworICAgIEV3a19X
ZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3Ip
IDogMDsKKworICAgIGNvbnN0IHNpemVfdCBob3N0bmFtZUNvdW50ID0gV0tBcnJheUdldFNpemUo
d2tIb3N0bmFtZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaG9zdG5hbWVDb3VudDsg
KytpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrSG9zdG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrSG9zdG5hbWVzLCBpKSk7CisgICAgICAg
IFN0cmluZyBob3N0bmFtZSA9IHRvSW1wbCh3a0hvc3RuYW1lKS0+c3RyaW5nKCk7CisgICAgICAg
IGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aG9zdG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChob3N0bmFtZXMsIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBjYWxsYmFja0RhdGEt
PmNhbGxiYWNrKGhvc3RuYW1lcywgZXdrRXJyb3IsIGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOwor
CisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMsIGl0ZW0pCisg
ICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdGF0aWNfY2FzdDxFaW5hX1N0cmluZ3NoYXJlKj4o
aXRlbSkpOworICAgIGlmIChld2tFcnJvcikKKyAgICAgICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3
a0Vycm9yKTsKKyAgICBkZWxldGUgY2FsbGJhY2tEYXRhOworfQorCit2b2lkIGV3a19jb29raWVf
bWFuYWdlcl9hc3luY19ob3N0bmFtZXNfd2l0aF9jb29raWVzX2dldChFd2tfQ29va2llX01hbmFn
ZXIqIG1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiIGNh
bGxiYWNrLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1Jf
UkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oY2FsbGJhY2spOworCisgICAgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKiBjYWxsYmFja0Rh
dGEgPSBuZXcgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhOworICAgIGNhbGxiYWNrRGF0YS0+Y2Fs
bGJhY2sgPSBjYWxsYmFjazsKKyAgICBjYWxsYmFja0RhdGEtPnVzZXJEYXRhID0gZGF0YTsKKwor
ICAgIFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdrTWFuYWdlciwgY2Fs
bGJhY2tEYXRhLCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKTsKK30KKwordm9pZCBl
d2tfY29va2llX21hbmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihFd2tfQ29va2llX01hbmFn
ZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGhvc3ROYW1lKQoreworICAgIEVXS19DT09LSUVfTUFO
QUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oaG9zdE5hbWUpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrSG9zdE5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoaG9z
dE5hbWUpKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJEZWxldGVDb29raWVzRm9ySG9zdG5hbWUod2tN
YW5hZ2VyLCB3a0hvc3ROYW1lLmdldCgpKTsKK30KKwordm9pZCBld2tfY29va2llX21hbmFnZXJf
Y29va2llc19jbGVhcihFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgRVdLX0NP
T0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKworICAg
IFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXMod2tNYW5hZ2VyKTsKK30KKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIEZyZWVzIGEgRXdrX0Nvb2tpZV9NYW5hZ2VyIG9iamVjdC4KKyAqLwor
dm9pZCBld2tfY29va2llX21hbmFnZXJfZnJlZShFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIp
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWFuYWdlcik7CisKKyAgICBkZWxl
dGUgbWFuYWdlcjsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENvbnN0cnVjdHMgYSBFd2tf
Q29va2llX01hbmFnZXIgZnJvbSBhIFdLQ29va2llTWFuYWdlclJlZi4KKyAqLworRXdrX0Nvb2tp
ZV9NYW5hZ2VyKiBld2tfY29va2llX21hbmFnZXJfbmV3KFdLQ29va2llTWFuYWdlclJlZiB3a0Nv
b2tpZU1hbmFnZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHdrQ29v
a2llTWFuYWdlciwgMCk7CisKKyAgICByZXR1cm4gbmV3IEV3a19Db29raWVfTWFuYWdlcih3a0Nv
b2tpZU1hbmFnZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29va2llX21hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xMzQwOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKKyAqIEBi
cmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvb2tpZSBNYW5hZ2VyIEFQSS4KKyAqLworCisjaWZu
ZGVmIGV3a19jb29raWVfbWFuYWdlcl9oCisjZGVmaW5lIGV3a19jb29raWVfbWFuYWdlcl9oCisK
KyNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBfRXdrX0Nvb2tpZV9NYW5hZ2VyICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX0Nvb2tp
ZV9NYW5hZ2VyIEV3a19Db29raWVfTWFuYWdlcjsKKworLyoqCisgKiBcZW51bSAgICBfRXdrX0Nv
b2tpZV9BY2NlcHRfUG9saWN5CisgKgorICogQGJyaWVmICAgQ29udGFpbnMgYWNjZXB0IHBvbGlj
aWVzIGZvciB0aGUgY29va2llcy4KKyAqLworZW51bSBfRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5
IHsKKyAgICAvLy8gQWNjZXB0cyBldmVyeSBjb29raWUgc2VudCBmcm9tIGFueSBwYWdlLgorICAg
IEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMsCisgICAgLy8vIFJlamVjdHMgYWxsIGNv
b2tpZXMuCisgICAgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSLAorICAgIC8vLyBBY2Nl
cHRzIGNvb2tpZXMgb25seSBmcm9tIHRoZSBtYWluIHBhZ2UuCisgICAgRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX05PX1RISVJEX1BBUlRZCit9OworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgdGhlIF9Fd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kuCit0eXBlZGVmIGVudW0gX0V3a19Db29r
aWVfQWNjZXB0X1BvbGljeSBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k7CisKKy8qKgorICogXGVu
dW0gICAgX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlCisgKgorICogQGJyaWVmICAgRW51
bSB2YWx1ZXMgdG8gZGVub3RlIGNvb2tpZXMgcGVyc2lzdGVudCBzdG9yYWdlIHR5cGUuCisgKi8K
K2VudW0gX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIHsKKyAgICAvLy8gQ29va2llcyBh
cmUgc3RvcmVkIGluIGEgdGV4dCBmaWxlIGluIHRoZSBNb3ppbGxhICJjb29raWVzLnR4dCIgZm9y
bWF0LgorICAgIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsCisgICAgLy8vIENv
b2tpZXMgYXJlIHN0b3JlZCBpbiBhIFNRTGl0ZSBmaWxlIGluIHRoZSBjdXJyZW50IE1vemlsbGEg
Zm9ybWF0LgorICAgIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURQorfTsKKwor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0
b3JhZ2UuCit0eXBlZGVmIGVudW0gX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIEV3a19D
b29raWVfUGVyc2lzdGVudF9TdG9yYWdlOworCisvKioKKyAqIEB0eXBlZGVmIEV3a19Db29raWVf
TWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xp
Y3lfR2V0X0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0CisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3
a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0FjY2VwdF9Q
b2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CisK
Ky8qKgorICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRf
Q2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IKKyAqIEBicmllZiBD
YWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5h
bWVzX3dpdGhfY29va2llc19nZXQKKyAqCisgKiBAbm90ZSBUaGUgQGEgaG9zdG5hbWVzIGxpc3Qg
aXRlbXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZS4gV2hlbmV2ZXIgcG9z
c2libGUKKyAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9zdHJp
bmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkKKyAqIG9yIHN0
cmR1cCgpLgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9z
dG5hbWVzX0dldF9DYikoRWluYV9MaXN0KiBob3N0bmFtZXMsIEV3a19XZWJfRXJyb3IgKmVycm9y
LCB2b2lkICpldmVudF9pbmZvKTsKKworLyoqCisgKiBTZXQgdGhlIEBhIGZpbGVuYW1lIHdoZXJl
IG5vbi1zZXNzaW9uIGNvb2tpZXMgYXJlIHN0b3JlZCBwZXJzaXN0ZW50bHkgdXNpbmcgQGEgc3Rv
cmFnZSBhcyB0aGUgZm9ybWF0IHRvIHJlYWQvd3JpdGUgdGhlIGNvb2tpZXMuCisgKgorICogQ29v
a2llcyBhcmUgaW5pdGlhbGx5IHJlYWQgZnJvbSBAZmlsZW5hbWUgdG8gY3JlYXRlIGFuIGluaXRp
YWwgc2V0IG9mIGNvb2tpZXMuCisgKiBUaGVuLCBub24tc2Vzc2lvbiBjb29raWVzIHdpbGwgYmUg
d3JpdHRlbiB0byBAZmlsZW5hbWUuCisgKgorICogQnkgZGVmYXVsdCwgQGEgbWFuYWdlciBkb2Vz
bid0IHN0b3JlIHRoZSBjb29raWVzIHBlcnNpc3Rlbmx5LCBzbyB5b3UgbmVlZCB0byBjYWxsIHRo
aXMKKyAqIG1ldGhvZCB0byBrZWVwIGNvb2tpZXMgc2F2ZWQgYWNyb3NzIHNlc3Npb25zLgorICoK
KyAqIEBwYXJhbSBjb29raWVfbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgor
ICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlbmFtZSB0byByZWFkIHRvL3dyaXRlIGZyb20uCisg
KiBAcGFyYW0gc3RvcmFnZSB0aGUgdHlwZSBvZiBzdG9yYWdlLgorICovCit2b2lkIGV3a19jb29r
aWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFu
YWdlciwgY29uc3QgY2hhciAqZmlsZW5hbWUsIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdl
IHN0b3JhZ2UpOworCisvKioKKyAqIFNldCBAYSBwb2xpY3kgYXMgdGhlIGNvb2tpZSBhY2NlcHRh
bmNlIHBvbGljeSBmb3IgQGEgbWFuYWdlci4KKyAqCisgKiBCeSBkZWZhdWx0LCBjb29raWVzIGFy
ZSBhbHdheXMgYWNjZXB0ZWQuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5h
Z2VyIHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBwb2xpY3kgYSAjRXdrX0Nvb2tpZV9BY2NlcHRfUG9s
aWN5CisgKi8KKworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3Nl
dChFd2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBw
b2xpY3kpOworCisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgY29va2llIGFjY2VwdGFu
Y2UgcG9saWN5IG9mIEBhIG1hbmFnZXIuCisgKgorICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUg
YWx3YXlzIGFjY2VwdGVkLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdl
ciB0byBxdWVyeS4KKyAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVu
IHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJlZC4KKyAqIEBwYXJhbSBk
YXRhIFVzZXIgZGF0YSAobWF5IGJlIEBjIE5VTEwpLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFu
YWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2FsbGJhY2ssIHZv
aWQgKmRhdGEpOworCisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgbGlzdCBvZiBob3N0
IG5hbWVzIGZvciB3aGljaCBAYSBtYW5hZ2VyIGNvbnRhaW5zIGNvb2tpZXMuCisgKgorICogQHBh
cmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHF1ZXJ5LgorICogQHBhcmFtIGNhbGxi
YWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGhvc3QgbmFtZXMgaGF2ZSBiZWVuIHJl
Y2VpdmVkLgorICogQHBhcmFtIGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8K
K0VBUEkgdm9pZCBld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dpdGhfY29va2ll
c19nZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5
bmNfSG9zdG5hbWVzX0dldF9DYiBjYWxsYmFjaywgdm9pZCAqZGF0YSk7CisKKy8qKgorICogUmVt
b3ZlIGFsbCBjb29raWVzIG9mIEBhIG1hbmFnZXIgZm9yIHRoZSBnaXZlbiBAYSBob3N0bmFtZS4K
KyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgorICog
QHBhcmFtIGhvc3RuYW1lIEEgaG9zdCBuYW1lLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9t
YW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2Vy
LCBjb25zdCBjaGFyICpob3N0bmFtZSk7CisKKy8qKgorICogRGVsZXRlIGFsbCBjb29raWVzIG9m
IEBhIG1hbmFnZXIuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRv
IHVwZGF0ZS4KKyAqLworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFy
KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvLyBld2tfY29va2llX21hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlcl9w
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyODVjOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlcl9wcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb29r
aWVfbWFuYWdlcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5
cGVkZWYgc3RydWN0IF9Fd2tfQ29va2llX01hbmFnZXIgRXdrX0Nvb2tpZV9NYW5hZ2VyOworCitF
d2tfQ29va2llX01hbmFnZXIqIGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb29raWVNYW5hZ2Vy
UmVmIHdrQ29va2llTWFuYWdlcik7Cit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9mcmVlKEV3a19D
b29raWVfTWFuYWdlciogbWFuYWdlcik7CisKKyNlbmRpZiAvLyBld2tfY29va2llX21hbmFnZXJf
cHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152245</attachid>
            <date>2012-07-13 06:36:56 -0700</date>
            <delta_ts>2012-07-13 10:43:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>21786</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyOTk0ZmJmLi44NzBhMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmVkCisgICAgICAg
IGZyb20gdGhlIEV3a19Db250ZXh0IEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0KToK
KyAgICAgICAgKF9Fd2tfQ29udGV4dDo6X0V3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250
ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQ29va2llX01hbmFnZXIpOgorICAgICAgICAo
X0V3a19Db29raWVfTWFuYWdlcjo6X0V3a19Db29raWVfTWFuYWdlcik6CisgICAgICAgIChld2tf
Y29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldCk6CisgICAgICAgIChld2tfY29v
a2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQpOgorICAgICAgICAoR2V0X1BvbGljeV9Bc3lu
Y19EYXRhKToKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGV3
a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldCk6CisgICAgICAgIChHZXRf
SG9zdG5hbWVzX0FzeW5jX0RhdGEpOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXND
YWxsYmFjayk6CisgICAgICAgIChld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dp
dGhfY29va2llc19nZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nv
b2tpZXNfY2xlYXIpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIp
OgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUpOgorICAgICAgICAoZXdrX2Nvb2tp
ZV9tYW5hZ2VyX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlcl9wcml2YXRlLmg6IEFkZGVkLgorCiAyMDEyLTA3LTEzICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJLaXQyIGNyYXNo
IHdoZW4gZ29pbmcgYmFjay9mb3J3YXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGU1
ZTU0ZTYuLmNlMDYyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICszNyw3
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0Jh
dHRlcnlQcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNw
cApAQCAtMTcwLDYgKzE3MSw3IEBAIENPTkZJR1VSRV9GSUxFKGVmbC9ld2Via2l0Mi5wYy5pbiAk
e0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBPCiBTRVQgKEVXZWJL
aXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIgogKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCA4ZmE5
MGFlLi5kN2Q3OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgRVdlYktpdDJfaAogCiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXIuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVk
ZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggZTFjY2ZmMi4uYTkxNTJj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcApAQCAtMjUsMjAgKzI1LDM0IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogc3RydWN0IF9Fd2tfQ29udGV4dCB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0OworCisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyKiBjb29raWVNYW5hZ2VyOwog
I2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBSZWZQdHI8QmF0dGVyeVByb3ZpZGVyPiBi
YXR0ZXJ5UHJvdmlkZXI7CiAjZW5kaWYKIAogICAgIF9Fd2tfQ29udGV4dChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZikKICAgICAgICAgOiBjb250ZXh0KGNvbnRleHRSZWYpCisgICAgICAgICwgY29v
a2llTWFuYWdlcigwKQogICAgIHsgfQogfTsKIAorRXdrX0Nvb2tpZV9NYW5hZ2VyKiBld2tfY29u
dGV4dF9jb29raWVfbWFuYWdlcl9nZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRleHQsIDApOworCisgICAgaWYg
KCFld2tDb250ZXh0LT5jb29raWVNYW5hZ2VyKQorICAgICAgICBld2tDb250ZXh0LT5jb29raWVN
YW5hZ2VyID0gZXdrX2Nvb2tpZV9tYW5hZ2VyX25ldyhXS0NvbnRleHRHZXRDb29raWVNYW5hZ2Vy
KGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCkpKTsKKworICAgIHJldHVybiBld2tDb250ZXh0LT5j
b29raWVNYW5hZ2VyOworfQorCiBXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dl
dChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKICAgICByZXR1cm4gZXdrQ29udGV4
dC0+Y29udGV4dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oCmluZGV4IDc5NGQwNTIuLjBjNDcxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMjksNiArMjksNyBAQAogI2lm
bmRlZiBld2tfY29udGV4dF9oCiAjZGVmaW5lIGV3a19jb250ZXh0X2gKIAorI2luY2x1ZGUgImV3
a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCkBAIC00NSw2ICs0NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0Nv
bnRleHQ7CiAgKi8KIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7
CiAKKy8qKgorICogR2V0cyB0aGUgY29va2llIG1hbmFnZXIgaW5zdGFuY2UgZm9yIHRoaXMgQGEg
Y29udGV4dC4KKyAqCisgKiBAcGFyYW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBxdWVyeS4K
KyAqCisgKiBAcmV0dXJuIEV3a19Db29raWVfTWFuYWdlciBvYmplY3QgaW5zdGFuY2UuCisgKi8K
K0VBUEkgRXdrX0Nvb2tpZV9NYW5hZ2VyICpld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQo
Y29uc3QgRXdrX0NvbnRleHQgKmNvbnRleHQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVm
ZTYwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXIu
aCIKKworI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCIKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tDb29r
aWVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgImV3a19w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfQ29va2llX01h
bmFnZXIKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb29raWUgbWFuYWdlciBkYXRhLgorICov
CitzdHJ1Y3QgX0V3a19Db29raWVfTWFuYWdlciB7CisgICAgV0tSZXRhaW5QdHI8V0tDb29raWVN
YW5hZ2VyUmVmPiB3a0Nvb2tpZU1hbmFnZXI7CisKKyAgICBfRXdrX0Nvb2tpZV9NYW5hZ2VyKFdL
Q29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVmKQorICAgICAgICA6IHdrQ29va2llTWFu
YWdlcihjb29raWVNYW5hZ2VyUmVmKQorICAgIHsgfQorfTsKKworI2RlZmluZSBFV0tfQ09PS0lF
X01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXJfLCAuLi4pICAgIFwK
KyAgICBpZiAoIShtYW5hZ2VyKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoIm1hbmFnZXIgaXMgTlVM
TC4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19W
QV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCEobWFuYWdlciktPndrQ29va2llTWFuYWdlcikg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19D
UklUKCJtYW5hZ2VyLT53a0Nvb2tpZU1hbmFnZXIgaXMgTlVMTC4iKTsgICAgICAgICAgICAgIFwK
KyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFdLQ29va2llTWFuYWdl
clJlZiB3a01hbmFnZXJfID0gKG1hbmFnZXIpLT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCkKKworLy8g
RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGVudW0gdmFsaWRhdGlvbgorQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTLCBrV0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5QWx3YXlzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2
ZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJ
Q1lfTk9fVEhJUkRfUEFSVFksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbik7CisKKy8vIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIGVudW0g
dmFsaWRhdGlvbgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX1BFUlNJ
U1RFTlRfU1RPUkFHRV9URVhULCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUZXh0KTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0Vf
U1FMSVRFLCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VTUUxpdGUpOworCit2b2lkIGV3a19j
b29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciog
bWFuYWdlciwgY29uc3QgY2hhciogZmlsZW5hbWUsIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9y
YWdlIHN0b3JhZ2UpCit7CisgICAgRVdLX0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4o
bWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihmaWxl
bmFtZSk7CisKKyAgICB0b0ltcGwod2tNYW5hZ2VyKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3Jh
Z2UoU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZSksIHN0b3JhZ2UpOworfQorCit2b2lkIGV3a19j
b29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChFd2tfQ29va2llX01hbmFnZXIgKm1hbmFn
ZXIsIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3kpCit7CisgICAgRVdLX0NPT0tJRV9N
QU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKworICAgIFdLQ29v
a2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kod2tNYW5hZ2VyLCBzdGF0aWNfY2Fz
dDxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHBvbGljeSkpOworfQorCitzdHJ1Y3QgR2V0X1Bv
bGljeV9Bc3luY19EYXRhIHsKKyAgICBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dl
dF9DYiBjYWxsYmFjazsKKyAgICB2b2lkKiB1c2VyRGF0YTsKK307CisKK3N0YXRpYyB2b2lkIGdl
dEFjY2VwdFBvbGljeUNhbGxiYWNrKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdL
RXJyb3JSZWYgd2tFcnJvciwgdm9pZCogZGF0YSkKK3sKKyAgICBHZXRfUG9saWN5X0FzeW5jX0Rh
dGEqIGNhbGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0PEdldF9Qb2xpY3lfQXN5bmNfRGF0YSo+KGRh
dGEpOworICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJy
b3JfbmV3KHdrRXJyb3IpIDogMDsKKworICAgIGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2soc3RhdGlj
X2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Pihwb2xpY3kpLCBld2tFcnJvciwgY2FsbGJh
Y2tEYXRhLT51c2VyRGF0YSk7CisKKyAgICBpZiAoZXdrRXJyb3IpCisgICAgICAgIGV3a193ZWJf
ZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKK30KKwordm9p
ZCBld2tfY29va2llX21hbmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQoRXdrX0Nvb2tpZV9N
YW5hZ2VyKiBtYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBj
YWxsYmFjaywgdm9pZCogZGF0YSkKK3sKKyAgICBFV0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09S
X1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKGNhbGxiYWNrKTsKKworICAgIEdldF9Qb2xpY3lfQXN5bmNfRGF0YSogY2FsbGJhY2tEYXRh
ID0gbmV3IEdldF9Qb2xpY3lfQXN5bmNfRGF0YTsKKyAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
ID0gY2FsbGJhY2s7CisgICAgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSA9IGRhdGE7CisKKyAgICBX
S0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHdrTWFuYWdlciwgY2FsbGJh
Y2tEYXRhLCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayk7Cit9CisKK3N0cnVjdCBHZXRfSG9zdG5h
bWVzX0FzeW5jX0RhdGEgeworICAgIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNf
R2V0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOworfTsKKworc3RhdGljIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhXS0FycmF5UmVmIHdrSG9zdG5hbWVzLCBX
S0Vycm9yUmVmIHdrRXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAgRWluYV9MaXN0KiBob3N0
bmFtZXMgPSAwOworICAgIEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSogY2FsbGJhY2tEYXRhID0g
c3RhdGljX2Nhc3Q8R2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKj4oY29udGV4dCk7CisgICAgRXdr
X1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJvcl9uZXcod2tFcnJv
cikgOiAwOworCisgICAgY29uc3Qgc2l6ZV90IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5R2V0U2l6
ZSh3a0hvc3RuYW1lcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0bmFtZUNvdW50
OyArK2kpIHsKKyAgICAgICAgV0tTdHJpbmdSZWYgd2tIb3N0bmFtZSA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tIb3N0bmFtZXMsIGkpKTsKKyAgICAg
ICAgU3RyaW5nIGhvc3RuYW1lID0gdG9JbXBsKHdrSG9zdG5hbWUpLT5zdHJpbmcoKTsKKyAgICAg
ICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBob3N0bmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGhvc3RuYW1lcywgZWluYV9zdHJpbmdzaGFy
ZV9hZGQoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgIH0KKworICAgIGNhbGxiYWNrRGF0
YS0+Y2FsbGJhY2soaG9zdG5hbWVzLCBld2tFcnJvciwgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSk7
CisKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFfTElTVF9GUkVFKGhvc3RuYW1lcywgaXRlbSkK
KyAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19jYXN0PEVpbmFfU3RyaW5nc2hhcmUq
PihpdGVtKSk7CisgICAgaWYgKGV3a0Vycm9yKQorICAgICAgICBld2tfd2ViX2Vycm9yX2ZyZWUo
ZXdrRXJyb3IpOworICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7Cit9CisKK3ZvaWQgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2FzeW5jX2hvc3RuYW1lc193aXRoX2Nvb2tpZXNfZ2V0KEV3a19Db29raWVfTWFu
YWdlciogbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIGRhdGEpCit7CisgICAgRVdLX0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9P
Ul9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihjYWxsYmFjayk7CisKKyAgICBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqIGNhbGxiYWNr
RGF0YSA9IG5ldyBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGE7CisgICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayA9IGNhbGxiYWNrOworICAgIGNhbGxiYWNrRGF0YS0+dXNlckRhdGEgPSBkYXRhOwor
CisgICAgV0tDb29raWVNYW5hZ2VyR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMod2tNYW5hZ2VyLCBj
YWxsYmFja0RhdGEsIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOworfQorCit2b2lk
IGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFtZV9jb29raWVzX2NsZWFyKEV3a19Db29raWVfTWFu
YWdlciogbWFuYWdlciwgY29uc3QgY2hhciogaG9zdE5hbWUpCit7CisgICAgRVdLX0NPT0tJRV9N
QU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihob3N0TmFtZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tIb3N0TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyho
b3N0TmFtZSkpOworICAgIFdLQ29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSh3
a01hbmFnZXIsIHdrSG9zdE5hbWUuZ2V0KCkpOworfQorCit2b2lkIGV3a19jb29raWVfbWFuYWdl
cl9jb29raWVzX2NsZWFyKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBFV0tf
Q09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOworCisg
ICAgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llcyh3a01hbmFnZXIpOworfQorCisvKioK
KyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfQ29va2llX01hbmFnZXIgb2JqZWN0LgorICov
Cit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9mcmVlKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdl
cikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtYW5hZ2VyKTsKKworICAgIGRl
bGV0ZSBtYW5hZ2VyOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3
a19Db29raWVfTWFuYWdlciBmcm9tIGEgV0tDb29raWVNYW5hZ2VyUmVmLgorICovCitFd2tfQ29v
a2llX01hbmFnZXIqIGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb29raWVNYW5hZ2VyUmVmIHdr
Q29va2llTWFuYWdlcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwod2tD
b29raWVNYW5hZ2VyLCAwKTsKKworICAgIHJldHVybiBuZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyKHdr
Q29va2llTWFuYWdlcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjEzNDA4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29va2llX21hbmFnZXIuaAorICog
QGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29va2llIE1hbmFnZXIgQVBJLgorICovCisKKyNp
Zm5kZWYgZXdrX2Nvb2tpZV9tYW5hZ2VyX2gKKyNkZWZpbmUgZXdrX2Nvb2tpZV9tYW5hZ2VyX2gK
KworI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIF9Fd2tfQ29va2llX01hbmFnZXIgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29v
a2llX01hbmFnZXIgRXdrX0Nvb2tpZV9NYW5hZ2VyOworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tf
Q29va2llX0FjY2VwdF9Qb2xpY3kKKyAqCisgKiBAYnJpZWYgICBDb250YWlucyBhY2NlcHQgcG9s
aWNpZXMgZm9yIHRoZSBjb29raWVzLgorICovCitlbnVtIF9Fd2tfQ29va2llX0FjY2VwdF9Qb2xp
Y3kgeworICAgIC8vLyBBY2NlcHRzIGV2ZXJ5IGNvb2tpZSBzZW50IGZyb20gYW55IHBhZ2UuCisg
ICAgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUywKKyAgICAvLy8gUmVqZWN0cyBhbGwg
Y29va2llcy4KKyAgICBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIsCisgICAgLy8vIEFj
Y2VwdHMgY29va2llcyBvbmx5IGZyb20gdGhlIG1haW4gcGFnZS4KKyAgICBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciB0aGUgX0V3a19Db29raWVfQWNjZXB0X1BvbGljeS4KK3R5cGVkZWYgZW51bSBfRXdrX0Nv
b2tpZV9BY2NlcHRfUG9saWN5IEV3a19Db29raWVfQWNjZXB0X1BvbGljeTsKKworLyoqCisgKiBc
ZW51bSAgICBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UKKyAqCisgKiBAYnJpZWYgICBF
bnVtIHZhbHVlcyB0byBkZW5vdGUgY29va2llcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdHlwZS4KKyAq
LworZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgeworICAgIC8vLyBDb29raWVz
IGFyZSBzdG9yZWQgaW4gYSB0ZXh0IGZpbGUgaW4gdGhlIE1vemlsbGEgImNvb2tpZXMudHh0IiBm
b3JtYXQuCisgICAgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCwKKyAgICAvLy8g
Q29va2llcyBhcmUgc3RvcmVkIGluIGEgU1FMaXRlIGZpbGUgaW4gdGhlIGN1cnJlbnQgTW96aWxs
YSBmb3JtYXQuCisgICAgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFCit9Owor
CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhlIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRf
U3RvcmFnZS4KK3R5cGVkZWYgZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgRXdr
X0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2U7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Nvb2tp
ZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1Bv
bGljeV9HZXRfQ2IKKyAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29v
a2llX21hbmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQKKyAqLwordHlwZWRlZiB2b2lkICgq
RXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IpKEV3a19Db29raWVfQWNjZXB0
X1BvbGljeSBwb2xpY3ksIEV3a19XZWJfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsK
KworLyoqCisgKiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dl
dF9DYiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYgorICogQGJyaWVm
IENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19ob3N0
bmFtZXNfd2l0aF9jb29raWVzX2dldAorICoKKyAqIEBub3RlIFRoZSBAYSBob3N0bmFtZXMgbGlz
dCBpdGVtcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLiBXaGVuZXZlciBw
b3NzaWJsZQorICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZSBlaW5hX3N0
cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKQorICogb3Ig
c3RyZHVwKCkuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19I
b3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJvciAqZXJy
b3IsIHZvaWQgKmV2ZW50X2luZm8pOworCisvKioKKyAqIFNldCB0aGUgQGEgZmlsZW5hbWUgd2hl
cmUgbm9uLXNlc3Npb24gY29va2llcyBhcmUgc3RvcmVkIHBlcnNpc3RlbnRseSB1c2luZyBAYSBz
dG9yYWdlIGFzIHRoZSBmb3JtYXQgdG8gcmVhZC93cml0ZSB0aGUgY29va2llcy4KKyAqCisgKiBD
b29raWVzIGFyZSBpbml0aWFsbHkgcmVhZCBmcm9tIEBmaWxlbmFtZSB0byBjcmVhdGUgYW4gaW5p
dGlhbCBzZXQgb2YgY29va2llcy4KKyAqIFRoZW4sIG5vbi1zZXNzaW9uIGNvb2tpZXMgd2lsbCBi
ZSB3cml0dGVuIHRvIEBmaWxlbmFtZS4KKyAqCisgKiBCeSBkZWZhdWx0LCBAYSBtYW5hZ2VyIGRv
ZXNuJ3Qgc3RvcmUgdGhlIGNvb2tpZXMgcGVyc2lzdGVubHksIHNvIHlvdSBuZWVkIHRvIGNhbGwg
dGhpcworICogbWV0aG9kIHRvIGtlZXAgY29va2llcyBzYXZlZCBhY3Jvc3Mgc2Vzc2lvbnMuCisg
KgorICogQHBhcmFtIGNvb2tpZV9tYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUu
CisgKiBAcGFyYW0gZmlsZW5hbWUgdGhlIGZpbGVuYW1lIHRvIHJlYWQgdG8vd3JpdGUgZnJvbS4K
KyAqIEBwYXJhbSBzdG9yYWdlIHRoZSB0eXBlIG9mIHN0b3JhZ2UuCisgKi8KK3ZvaWQgZXdrX2Nv
b2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICpt
YW5hZ2VyLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3Jh
Z2Ugc3RvcmFnZSk7CisKKy8qKgorICogU2V0IEBhIHBvbGljeSBhcyB0aGUgY29va2llIGFjY2Vw
dGFuY2UgcG9saWN5IGZvciBAYSBtYW5hZ2VyLgorICoKKyAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMg
YXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1h
bmFnZXIgdG8gdXBkYXRlLgorICogQHBhcmFtIHBvbGljeSBhICNFd2tfQ29va2llX0FjY2VwdF9Q
b2xpY3kKKyAqLworCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lf
c2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5
IHBvbGljeSk7CisKKy8qKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBjb29raWUgYWNjZXB0
YW5jZSBwb2xpY3kgb2YgQGEgbWFuYWdlci4KKyAqCisgKiBCeSBkZWZhdWx0LCBjb29raWVzIGFy
ZSBhbHdheXMgYWNjZXB0ZWQuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5h
Z2VyIHRvIHF1ZXJ5LgorICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdo
ZW4gdGhlIHBvbGljeSBpcyByZWNlaXZlZCBvciBhbiBlcnJvciBvY2N1cmVkLgorICogQHBhcmFt
IGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8KK0VBUEkgdm9pZCBld2tfY29v
a2llX21hbmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICpt
YW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBjYWxsYmFjaywg
dm9pZCAqZGF0YSk7CisKKy8qKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBsaXN0IG9mIGhv
c3QgbmFtZXMgZm9yIHdoaWNoIEBhIG1hbmFnZXIgY29udGFpbnMgY29va2llcy4KKyAqCisgKiBA
cGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gcXVlcnkuCisgKiBAcGFyYW0gY2Fs
bGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaG9zdCBuYW1lcyBoYXZlIGJlZW4g
cmVjZWl2ZWQuCisgKiBAcGFyYW0gZGF0YSBVc2VyIGRhdGEgKG1heSBiZSBAYyBOVUxMKS4KKyAq
LworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19ob3N0bmFtZXNfd2l0aF9jb29r
aWVzX2dldChFd2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9B
c3luY19Ib3N0bmFtZXNfR2V0X0NiIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKKworLyoqCisgKiBS
ZW1vdmUgYWxsIGNvb2tpZXMgb2YgQGEgbWFuYWdlciBmb3IgdGhlIGdpdmVuIEBhIGhvc3RuYW1l
LgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUuCisg
KiBAcGFyYW0gaG9zdG5hbWUgQSBob3N0IG5hbWUuCisgKi8KK0VBUEkgdm9pZCBld2tfY29va2ll
X21hbmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihFd2tfQ29va2llX01hbmFnZXIgKm1hbmFn
ZXIsIGNvbnN0IGNoYXIgKmhvc3RuYW1lKTsKKworLyoqCisgKiBEZWxldGUgYWxsIGNvb2tpZXMg
b2YgQGEgbWFuYWdlci4KKyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIg
dG8gdXBkYXRlLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xl
YXIoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19jb29raWVfbWFuYWdlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDI4NWM5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyX3ByaXZhdGUuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGV3a19jb29raWVfbWFuYWdlcl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2Nv
b2tpZV9tYW5hZ2VyX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Db29raWVfTWFuYWdlciBFd2tfQ29va2llX01hbmFnZXI7CisK
K0V3a19Db29raWVfTWFuYWdlciogZXdrX2Nvb2tpZV9tYW5hZ2VyX25ldyhXS0Nvb2tpZU1hbmFn
ZXJSZWYgd2tDb29raWVNYW5hZ2VyKTsKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUoRXdr
X0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKTsKKworI2VuZGlmIC8vIGV3a19jb29raWVfbWFuYWdl
cl9wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152298</attachid>
            <date>2012-07-13 10:43:53 -0700</date>
            <delta_ts>2012-07-14 08:01:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>21964</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2IyOGRkLi4zZmM2MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmVkCisgICAgICAg
IGZyb20gdGhlIEV3a19Db250ZXh0IEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0KToK
KyAgICAgICAgKF9Fd2tfQ29udGV4dDo6X0V3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250
ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQ29va2llX01hbmFnZXIpOgorICAgICAgICAo
X0V3a19Db29raWVfTWFuYWdlcjo6X0V3a19Db29raWVfTWFuYWdlcik6CisgICAgICAgIChld2tf
Y29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldCk6CisgICAgICAgIChld2tfY29v
a2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQpOgorICAgICAgICAoR2V0X1BvbGljeV9Bc3lu
Y19EYXRhKToKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGV3
a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldCk6CisgICAgICAgIChHZXRf
SG9zdG5hbWVzX0FzeW5jX0RhdGEpOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXND
YWxsYmFjayk6CisgICAgICAgIChld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dp
dGhfY29va2llc19nZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nv
b2tpZXNfY2xlYXIpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIp
OgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUpOgorICAgICAgICAoZXdrX2Nvb2tp
ZV9tYW5hZ2VyX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlcl9wcml2YXRlLmg6IEFkZGVkLgorCiAyMDEyLTA3LTEzICBUaGlhZ28gTWFyY29zIFAu
IFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUHJv
cGVyIGhhbmRsaW5nIG9mIEVOQUJMRV9BUElfVEVTVFMgYnVpbGQgb3B0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDk4NzBlMGUuLjUxMDljZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0zNyw2ICszNyw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfaW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uLmNwcApAQCAtMTcwLDYgKzE3MSw3IEBAIENPTkZJR1VSRV9GSUxF
KGVmbC9ld2Via2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJr
aXQyLnBjIEBPCiBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgiCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIgorICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfaW50ZW50LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNp
c2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5k
ZXggOGZhOTBhZS4uZDdkNzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIEVXZWJLaXQyX2gKIAogI2lu
Y2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgog
I2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IGUxY2NmZjIu
LmE5MTUyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKQEAgLTI1LDIwICsyNSwzNCBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfRXdrX0NvbnRleHQgewogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dDsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFu
YWdlcjsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgUmVmUHRyPEJhdHRlcnlQcm92
aWRlcj4gYmF0dGVyeVByb3ZpZGVyOwogI2VuZGlmCiAKICAgICBfRXdrX0NvbnRleHQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgICAgIDogY29udGV4dChjb250ZXh0UmVmKQorICAgICAg
ICAsIGNvb2tpZU1hbmFnZXIoMCkKICAgICB7IH0KIH07CiAKK0V3a19Db29raWVfTWFuYWdlciog
ZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0KQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChld2tDb250ZXh0LCAwKTsKKwor
ICAgIGlmICghZXdrQ29udGV4dC0+Y29va2llTWFuYWdlcikKKyAgICAgICAgZXdrQ29udGV4dC0+
Y29va2llTWFuYWdlciA9IGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb250ZXh0R2V0Q29va2ll
TWFuYWdlcihld2tDb250ZXh0LT5jb250ZXh0LmdldCgpKSk7CisKKyAgICByZXR1cm4gZXdrQ29u
dGV4dC0+Y29va2llTWFuYWdlcjsKK30KKwogV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29u
dGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCiB7CiAgICAgcmV0dXJuIGV3
a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCA3OTRkMDUyLi4wYzQ3MTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZm5kZWYgZXdrX2NvbnRleHRfaAogI2RlZmluZSBld2tfY29udGV4dF9oCiAKKyNpbmNs
dWRlICJld2tfY29va2llX21hbmFnZXIuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwpAQCAtNDUsNiArNDYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0
IEV3a19Db250ZXh0OwogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0
X2dldCgpOwogCisvKioKKyAqIEdldHMgdGhlIGNvb2tpZSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0
aGlzIEBhIGNvbnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QgdG8g
cXVlcnkuCisgKgorICogQHJldHVybiBFd2tfQ29va2llX01hbmFnZXIgb2JqZWN0IGluc3RhbmNl
LgorICovCitFQVBJIEV3a19Db29raWVfTWFuYWdlciAqZXdrX2NvbnRleHRfY29va2llX21hbmFn
ZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0ICpjb250ZXh0KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29va2llX21hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFlZmU2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9t
YW5hZ2VyLmgiCisKKyNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgi
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUg
IldLQ29va2llTWFuYWdlci5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBcc3RydWN0ICBfRXdrX0Nv
b2tpZV9NYW5hZ2VyCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgY29va2llIG1hbmFnZXIgZGF0
YS4KKyAqLworc3RydWN0IF9Fd2tfQ29va2llX01hbmFnZXIgeworICAgIFdLUmV0YWluUHRyPFdL
Q29va2llTWFuYWdlclJlZj4gd2tDb29raWVNYW5hZ2VyOworCisgICAgX0V3a19Db29raWVfTWFu
YWdlcihXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZikKKyAgICAgICAgOiB3a0Nv
b2tpZU1hbmFnZXIoY29va2llTWFuYWdlclJlZikKKyAgICB7IH0KK307CisKKyNkZWZpbmUgRVdL
X0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyXywgLi4u
KSAgICBcCisgICAgaWYgKCEobWFuYWdlcikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJtYW5hZ2Vy
IGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0
dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKG1hbmFnZXIpLT53a0Nvb2tpZU1h
bmFnZXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlO
QV9MT0dfQ1JJVCgibWFuYWdlci0+d2tDb29raWVNYW5hZ2VyIGlzIE5VTEwuIik7ICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXS0Nvb2tp
ZU1hbmFnZXJSZWYgd2tNYW5hZ2VyXyA9IChtYW5hZ2VyKS0+d2tDb29raWVNYW5hZ2VyLmdldCgp
CisKKy8vIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBlbnVtIHZhbGlkYXRpb24KK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUywga1dL
SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUiwga1dLSFRUUENvb2tpZUFjY2VwdFBv
bGljeU5ldmVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX05PX1RISVJEX1BBUlRZLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZy
b21NYWluRG9jdW1lbnREb21haW4pOworCisvLyBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFn
ZSBlbnVtIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJ
RV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4
dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfUEVSU0lTVEVOVF9T
VE9SQUdFX1NRTElURSwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlKTsKKwordm9p
ZCBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChFd2tfQ29va2llX01h
bmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBFd2tfQ29va2llX1BlcnNpc3Rl
bnRfU3RvcmFnZSBzdG9yYWdlKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1Jf
UkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oZmlsZW5hbWUpOworCisgICAgdG9JbXBsKHdrTWFuYWdlciktPnNldENvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlKFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpLCBzdG9yYWdlKTsKK30KKwordm9p
ZCBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2Vy
ICptYW5hZ2VyLCBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5KQoreworICAgIEVXS19D
T09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisKKyAg
ICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHdrTWFuYWdlciwgc3Rh
dGljX2Nhc3Q8V0tIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpKTsKK30KKworc3RydWN0
IEdldF9Qb2xpY3lfQXN5bmNfRGF0YSB7CisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1Bv
bGljeV9HZXRfQ2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRhdGE7Cit9OworCitzdGF0aWMg
dm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBXS0Vycm9yUmVmIHdrRXJyb3IsIHZvaWQqIGRhdGEpCit7CisgICAgR2V0X1BvbGljeV9B
c3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBzdGF0aWNfY2FzdDxHZXRfUG9saWN5X0FzeW5jX0Rh
dGEqPihkYXRhKTsKKyAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tf
d2ViX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CisKKyAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
KHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4ocG9saWN5KSwgZXdrRXJyb3Is
IGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOworCisgICAgaWYgKGV3a0Vycm9yKQorICAgICAgICBl
d2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7Cit9
CisKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KEV3a19D
b29raWVfTWFuYWdlciogbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9H
ZXRfQ2IgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCit7CisgICAgRVdLX0NPT0tJRV9NQU5BR0VSX1dL
X0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2VyKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihjYWxsYmFjayk7CisKKyAgICBHZXRfUG9saWN5X0FzeW5jX0RhdGEqIGNhbGxi
YWNrRGF0YSA9IG5ldyBHZXRfUG9saWN5X0FzeW5jX0RhdGE7CisgICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayA9IGNhbGxiYWNrOworICAgIGNhbGxiYWNrRGF0YS0+dXNlckRhdGEgPSBkYXRhOwor
CisgICAgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh3a01hbmFnZXIs
IGNhbGxiYWNrRGF0YSwgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOworfQorCitzdHJ1Y3QgR2V0
X0hvc3RuYW1lc19Bc3luY19EYXRhIHsKKyAgICBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9z
dG5hbWVzX0dldF9DYiBjYWxsYmFjazsKKyAgICB2b2lkKiB1c2VyRGF0YTsKK307CisKK3N0YXRp
YyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3Ru
YW1lcywgV0tFcnJvclJlZiB3a0Vycm9yLCB2b2lkKiBjb250ZXh0KQoreworICAgIEVpbmFfTGlz
dCogaG9zdG5hbWVzID0gMDsKKyAgICBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqIGNhbGxiYWNr
RGF0YSA9IHN0YXRpY19jYXN0PEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSo+KGNvbnRleHQpOwor
ICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3JfbmV3
KHdrRXJyb3IpIDogMDsKKworICAgIGNvbnN0IHNpemVfdCBob3N0bmFtZUNvdW50ID0gV0tBcnJh
eUdldFNpemUod2tIb3N0bmFtZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaG9zdG5h
bWVDb3VudDsgKytpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrSG9zdG5hbWUgPSBzdGF0aWNf
Y2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrSG9zdG5hbWVzLCBpKSk7
CisgICAgICAgIFN0cmluZyBob3N0bmFtZSA9IHRvSW1wbCh3a0hvc3RuYW1lKS0+c3RyaW5nKCk7
CisgICAgICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaG9zdG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChob3N0bmFtZXMsIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBjYWxs
YmFja0RhdGEtPmNhbGxiYWNrKGhvc3RuYW1lcywgZXdrRXJyb3IsIGNhbGxiYWNrRGF0YS0+dXNl
ckRhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMs
IGl0ZW0pCisgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdGF0aWNfY2FzdDxFaW5hX1N0cmlu
Z3NoYXJlKj4oaXRlbSkpOworICAgIGlmIChld2tFcnJvcikKKyAgICAgICAgZXdrX3dlYl9lcnJv
cl9mcmVlKGV3a0Vycm9yKTsKKyAgICBkZWxldGUgY2FsbGJhY2tEYXRhOworfQorCit2b2lkIGV3
a19jb29raWVfbWFuYWdlcl9hc3luY19ob3N0bmFtZXNfd2l0aF9jb29raWVzX2dldChFd2tfQ29v
a2llX01hbmFnZXIqIG1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNf
R2V0X0NiIGNhbGxiYWNrLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9X
S19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oY2FsbGJhY2spOworCisgICAgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKiBj
YWxsYmFja0RhdGEgPSBuZXcgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhOworICAgIGNhbGxiYWNr
RGF0YS0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBjYWxsYmFja0RhdGEtPnVzZXJEYXRhID0g
ZGF0YTsKKworICAgIFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdrTWFu
YWdlciwgY2FsbGJhY2tEYXRhLCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKTsKK30K
Kwordm9pZCBld2tfY29va2llX21hbmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihFd2tfQ29v
a2llX01hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGhvc3ROYW1lKQoreworICAgIEVXS19D
T09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaG9zdE5hbWUpOworCisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHdrSG9zdE5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoaG9zdE5hbWUpKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJEZWxldGVDb29raWVzRm9ySG9z
dG5hbWUod2tNYW5hZ2VyLCB3a0hvc3ROYW1lLmdldCgpKTsKK30KKwordm9pZCBld2tfY29va2ll
X21hbmFnZXJfY29va2llc19jbGVhcihFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpCit7Cisg
ICAgRVdLX0NPT0tJRV9NQU5BR0VSX1dLX0dFVF9PUl9SRVRVUk4obWFuYWdlciwgd2tNYW5hZ2Vy
KTsKKworICAgIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXMod2tNYW5hZ2VyKTsKK30K
KworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZyZWVzIGEgRXdrX0Nvb2tpZV9NYW5hZ2VyIG9iamVj
dC4KKyAqLwordm9pZCBld2tfY29va2llX21hbmFnZXJfZnJlZShFd2tfQ29va2llX01hbmFnZXIq
IG1hbmFnZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWFuYWdlcik7CisK
KyAgICBkZWxldGUgbWFuYWdlcjsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENvbnN0cnVj
dHMgYSBFd2tfQ29va2llX01hbmFnZXIgZnJvbSBhIFdLQ29va2llTWFuYWdlclJlZi4KKyAqLwor
RXdrX0Nvb2tpZV9NYW5hZ2VyKiBld2tfY29va2llX21hbmFnZXJfbmV3KFdLQ29va2llTWFuYWdl
clJlZiB3a0Nvb2tpZU1hbmFnZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHdrQ29va2llTWFuYWdlciwgMCk7CisKKyAgICByZXR1cm4gbmV3IEV3a19Db29raWVfTWFu
YWdlcih3a0Nvb2tpZU1hbmFnZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xMzQwOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKQEAgLTAsMCArMSwxNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvb2tpZSBNYW5hZ2VyIEFQSS4KKyAq
LworCisjaWZuZGVmIGV3a19jb29raWVfbWFuYWdlcl9oCisjZGVmaW5lIGV3a19jb29raWVfbWFu
YWdlcl9oCisKKyNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSA8RWluYS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVz
IGEgdHlwZSBuYW1lIGZvciBfRXdrX0Nvb2tpZV9NYW5hZ2VyICovCit0eXBlZGVmIHN0cnVjdCBf
RXdrX0Nvb2tpZV9NYW5hZ2VyIEV3a19Db29raWVfTWFuYWdlcjsKKworLyoqCisgKiBcZW51bSAg
ICBfRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5CisgKgorICogQGJyaWVmICAgQ29udGFpbnMgYWNj
ZXB0IHBvbGljaWVzIGZvciB0aGUgY29va2llcy4KKyAqLworZW51bSBfRXdrX0Nvb2tpZV9BY2Nl
cHRfUG9saWN5IHsKKyAgICAvLy8gQWNjZXB0cyBldmVyeSBjb29raWUgc2VudCBmcm9tIGFueSBw
YWdlLgorICAgIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMsCisgICAgLy8vIFJlamVj
dHMgYWxsIGNvb2tpZXMuCisgICAgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSLAorICAg
IC8vLyBBY2NlcHRzIGNvb2tpZXMgb25seSBmcm9tIHRoZSBtYWluIHBhZ2UuCisgICAgRVdLX0NP
T0tJRV9BQ0NFUFRfUE9MSUNZX05PX1RISVJEX1BBUlRZCit9OworCisvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgdGhlIF9Fd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kuCit0eXBlZGVmIGVudW0g
X0V3a19Db29raWVfQWNjZXB0X1BvbGljeSBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k7CisKKy8q
KgorICogXGVudW0gICAgX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlCisgKgorICogQGJy
aWVmICAgRW51bSB2YWx1ZXMgdG8gZGVub3RlIGNvb2tpZXMgcGVyc2lzdGVudCBzdG9yYWdlIHR5
cGUuCisgKi8KK2VudW0gX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIHsKKyAgICAvLy8g
Q29va2llcyBhcmUgc3RvcmVkIGluIGEgdGV4dCBmaWxlIGluIHRoZSBNb3ppbGxhICJjb29raWVz
LnR4dCIgZm9ybWF0LgorICAgIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsCisg
ICAgLy8vIENvb2tpZXMgYXJlIHN0b3JlZCBpbiBhIFNRTGl0ZSBmaWxlIGluIHRoZSBjdXJyZW50
IE1vemlsbGEgZm9ybWF0LgorICAgIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElU
RQorfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBfRXdrX0Nvb2tpZV9QZXJz
aXN0ZW50X1N0b3JhZ2UuCit0eXBlZGVmIGVudW0gX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9y
YWdlIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlOworCisvKioKKyAqIEB0eXBlZGVmIEV3
a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9B
c3luY19Qb2xpY3lfR2V0X0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGgg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0CisgKi8KK3R5cGVkZWYg
dm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2ll
X0FjY2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRf
aW5mbyk7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3Ru
YW1lc19HZXRfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IKKyAq
IEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29va2llX21hbmFnZXJfYXN5
bmNfaG9zdG5hbWVzX3dpdGhfY29va2llc19nZXQKKyAqCisgKiBAbm90ZSBUaGUgQGEgaG9zdG5h
bWVzIGxpc3QgaXRlbXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZS4gV2hl
bmV2ZXIgcG9zc2libGUKKyAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2Ug
ZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkK
KyAqIG9yIHN0cmR1cCgpLgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJf
QXN5bmNfSG9zdG5hbWVzX0dldF9DYikoRWluYV9MaXN0KiBob3N0bmFtZXMsIEV3a19XZWJfRXJy
b3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKKworLyoqCisgKiBTZXQgdGhlIEBhIGZpbGVu
YW1lIHdoZXJlIG5vbi1zZXNzaW9uIGNvb2tpZXMgYXJlIHN0b3JlZCBwZXJzaXN0ZW50bHkgdXNp
bmcgQGEgc3RvcmFnZSBhcyB0aGUgZm9ybWF0IHRvIHJlYWQvd3JpdGUgdGhlIGNvb2tpZXMuCisg
KgorICogQ29va2llcyBhcmUgaW5pdGlhbGx5IHJlYWQgZnJvbSBAZmlsZW5hbWUgdG8gY3JlYXRl
IGFuIGluaXRpYWwgc2V0IG9mIGNvb2tpZXMuCisgKiBUaGVuLCBub24tc2Vzc2lvbiBjb29raWVz
IHdpbGwgYmUgd3JpdHRlbiB0byBAZmlsZW5hbWUuCisgKgorICogQnkgZGVmYXVsdCwgQGEgbWFu
YWdlciBkb2Vzbid0IHN0b3JlIHRoZSBjb29raWVzIHBlcnNpc3Rlbmx5LCBzbyB5b3UgbmVlZCB0
byBjYWxsIHRoaXMKKyAqIG1ldGhvZCB0byBrZWVwIGNvb2tpZXMgc2F2ZWQgYWNyb3NzIHNlc3Np
b25zLgorICoKKyAqIEBwYXJhbSBjb29raWVfbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8g
dXBkYXRlLgorICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlbmFtZSB0byByZWFkIHRvL3dyaXRl
IGZyb20uCisgKiBAcGFyYW0gc3RvcmFnZSB0aGUgdHlwZSBvZiBzdG9yYWdlLgorICovCit2b2lk
IGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFu
YWdlciAqbWFuYWdlciwgY29uc3QgY2hhciAqZmlsZW5hbWUsIEV3a19Db29raWVfUGVyc2lzdGVu
dF9TdG9yYWdlIHN0b3JhZ2UpOworCisvKioKKyAqIFNldCBAYSBwb2xpY3kgYXMgdGhlIGNvb2tp
ZSBhY2NlcHRhbmNlIHBvbGljeSBmb3IgQGEgbWFuYWdlci4KKyAqCisgKiBCeSBkZWZhdWx0LCBj
b29raWVzIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNv
b2tpZSBtYW5hZ2VyIHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBwb2xpY3kgYSAjRXdrX0Nvb2tpZV9B
Y2NlcHRfUG9saWN5CisgKi8KKworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRf
cG9saWN5X3NldChFd2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a19Db29raWVfQWNjZXB0
X1BvbGljeSBwb2xpY3kpOworCisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgY29va2ll
IGFjY2VwdGFuY2UgcG9saWN5IG9mIEBhIG1hbmFnZXIuCisgKgorICogQnkgZGVmYXVsdCwgY29v
a2llcyBhcmUgYWx3YXlzIGFjY2VwdGVkLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29r
aWUgbWFuYWdlciB0byBxdWVyeS4KKyAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8g
Y2FsbCB3aGVuIHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJlZC4KKyAq
IEBwYXJhbSBkYXRhIFVzZXIgZGF0YSAobWF5IGJlIEBjIE5VTEwpLgorICovCitFQVBJIHZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KEV3a19Db29raWVfTWFu
YWdlciAqbWFuYWdlciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgY2Fs
bGJhY2ssIHZvaWQgKmRhdGEpOworCisvKioKKyAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgbGlz
dCBvZiBob3N0IG5hbWVzIGZvciB3aGljaCBAYSBtYW5hZ2VyIGNvbnRhaW5zIGNvb2tpZXMuCisg
KgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHF1ZXJ5LgorICogQHBh
cmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGhvc3QgbmFtZXMgaGF2
ZSBiZWVuIHJlY2VpdmVkLgorICogQHBhcmFtIGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMgTlVM
TCkuCisgKi8KK0VBUEkgdm9pZCBld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dp
dGhfY29va2llc19nZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBFd2tfQ29va2llX01h
bmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYiBjYWxsYmFjaywgdm9pZCAqZGF0YSk7CisKKy8q
KgorICogUmVtb3ZlIGFsbCBjb29raWVzIG9mIEBhIG1hbmFnZXIgZm9yIHRoZSBnaXZlbiBAYSBo
b3N0bmFtZS4KKyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBk
YXRlLgorICogQHBhcmFtIGhvc3RuYW1lIEEgaG9zdCBuYW1lLgorICovCitFQVBJIHZvaWQgZXdr
X2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2Vy
ICptYW5hZ2VyLCBjb25zdCBjaGFyICpob3N0bmFtZSk7CisKKy8qKgorICogRGVsZXRlIGFsbCBj
b29raWVzIG9mIEBhIG1hbmFnZXIuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBt
YW5hZ2VyIHRvIHVwZGF0ZS4KKyAqLworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9jb29r
aWVzX2NsZWFyKEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlcik7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfY29va2llX21hbmFnZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQy
ODVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZV9oCisjZGVmaW5l
IGV3a19jb29raWVfbWFuYWdlcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29va2llX01hbmFnZXIgRXdrX0Nvb2tpZV9NYW5h
Z2VyOworCitFd2tfQ29va2llX01hbmFnZXIqIGV3a19jb29raWVfbWFuYWdlcl9uZXcoV0tDb29r
aWVNYW5hZ2VyUmVmIHdrQ29va2llTWFuYWdlcik7Cit2b2lkIGV3a19jb29raWVfbWFuYWdlcl9m
cmVlKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcik7CisKKyNlbmRpZiAvLyBld2tfY29va2ll
X21hbmFnZXJfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152423</attachid>
            <date>2012-07-14 08:01:54 -0700</date>
            <delta_ts>2012-07-18 07:41:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91053_cookie_manager.patch</filename>
            <type>text/plain</type>
            <size>22208</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2IyOGRkLi4zYWVjNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDctMTQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2sgY2xhc3MgZm9yIGNvb2tpZSBtYW5h
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgRXdrX0Nvb2tpZV9NYW5hZ2VyIGNsYXNzIHRvIGFsbG93IHRoZSBjbGllbnQKKyAgICAgICAg
dG8gc2V0L2dldCB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5LCBzdXBwb3J0CisgICAgICAg
IHBlcnNpc3RlbnQgY29va2llIHN0b3JhZ2UgYW5kIGNsZWFyIGNvb2tpZXMuCisKKyAgICAgICAg
VGhlIEV3a19Db29raWVfTWFuYWdlciBpbnN0YW5jZSBjYW4gYmUgcmV0cmlldmVkCisgICAgICAg
IGZyb20gdGhlIEV3a19Db250ZXh0IEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0KToK
KyAgICAgICAgKF9Fd2tfQ29udGV4dDo6X0V3a19Db250ZXh0KToKKyAgICAgICAgKF9Fd2tfQ29u
dGV4dDo6fl9Fd2tfQ29udGV4dCk6CisgICAgICAgIChld2tfY29udGV4dF9jb29raWVfbWFuYWdl
cl9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChfRXdrX0Nvb2tpZV9NYW5hZ2VyKToKKyAgICAgICAgKF9Fd2tfQ29va2llX01hbmFn
ZXI6Ol9Fd2tfQ29va2llX01hbmFnZXIpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX3Bl
cnNpc3RlbnRfc3RvcmFnZV9zZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3lfc2V0KToKKyAgICAgICAgKEdldF9Qb2xpY3lfQXN5bmNfRGF0YSk6CisgICAgICAg
IChnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayk6CisgICAgICAgIChld2tfY29va2llX21hbmFnZXJf
YXN5bmNfYWNjZXB0X3BvbGljeV9nZXQpOgorICAgICAgICAoR2V0X0hvc3RuYW1lc19Bc3luY19E
YXRhKToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAg
ICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2hvc3RuYW1lc193aXRoX2Nvb2tpZXNfZ2V0KToK
KyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFtZV9jb29raWVzX2NsZWFyKToKKyAg
ICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKToKKyAgICAgICAgKGV3a19j
b29raWVfbWFuYWdlcl9mcmVlKToKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9uZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5o
OiBBZGRlZC4KKwogMjAxMi0wNy0xMyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28u
c2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFByb3BlciBoYW5kbGluZyBvZiBF
TkFCTEVfQVBJX1RFU1RTIGJ1aWxkIG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA5ODcwZTBlLi41MTA5Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcsNiAr
MzcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNl
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bi5jcHAKQEAgLTE3MCw2ICsxNzEsNyBAQCBDT05GSUdVUkVfRklMRShlZmwvZXdlYmtpdDIucGMu
aW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBATwogU0VUIChF
V2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2ludGVudF9zZXJ2aWNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDhmYTkwYWUuLmQ3ZDc5
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAt
MjgsNiArMjgsNyBAQAogI2RlZmluZSBFV2ViS2l0Ml9oCiAKICNpbmNsdWRlICJld2tfY29udGV4
dC5oIgorI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19pbnRl
bnQuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRlICJld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCBlMWNjZmYyLi4yMWMxNTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0y
NSwyMCArMjUsNDAgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1JldGFp
blB0ci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
Y29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBz
dHJ1Y3QgX0V3a19Db250ZXh0IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQ7CisKKyAgICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXI7CiAjaWYgRU5BQkxF
KEJBVFRFUllfU1RBVFVTKQogICAgIFJlZlB0cjxCYXR0ZXJ5UHJvdmlkZXI+IGJhdHRlcnlQcm92
aWRlcjsKICNlbmRpZgogCiAgICAgX0V3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
KQogICAgICAgICA6IGNvbnRleHQoY29udGV4dFJlZikKKyAgICAgICAgLCBjb29raWVNYW5hZ2Vy
KDApCiAgICAgeyB9CisKKyAgICB+X0V3a19Db250ZXh0KCkKKyAgICB7CisgICAgICAgIGlmIChj
b29raWVNYW5hZ2VyKQorICAgICAgICAgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUoY29va2ll
TWFuYWdlcik7CisgICAgfQogfTsKIAorRXdrX0Nvb2tpZV9NYW5hZ2VyKiBld2tfY29udGV4dF9j
b29raWVfbWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRleHQsIDApOworCisgICAgaWYg
KCFld2tDb250ZXh0LT5jb29raWVNYW5hZ2VyKQorICAgICAgICBjb25zdF9jYXN0PEV3a19Db250
ZXh0Kj4oZXdrQ29udGV4dCktPmNvb2tpZU1hbmFnZXIgPSBld2tfY29va2llX21hbmFnZXJfbmV3
KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoZXdrQ29udGV4dC0+Y29udGV4dC5nZXQoKSkpOwor
CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvb2tpZU1hbmFnZXI7Cit9CisKIFdLQ29udGV4dFJl
ZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0
KQogewogICAgIHJldHVybiBld2tDb250ZXh0LT5jb250ZXh0LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggNzk0ZDA1Mi4uZTg5
MDM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIGV3a19jb250ZXh0X2gKICNkZWZpbmUgZXdr
X2NvbnRleHRfaAogCisjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
RXZhcy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTQ1LDYgKzQ2LDE1IEBAIHR5cGVkZWYg
c3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKICAqLwogRUFQSSBFd2tfQ29udGV4dCAq
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKIAorLyoqCisgKiBHZXRzIHRoZSBjb29raWUgbWFu
YWdlciBpbnN0YW5jZSBmb3IgdGhpcyBAYSBjb250ZXh0LgorICoKKyAqIEBwYXJhbSBjb250ZXh0
IGNvbnRleHQgb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gRXdrX0Nvb2tpZV9NYW5h
Z2VyIG9iamVjdCBpbnN0YW5jZSBvciBAYyBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAqLwor
RUFQSSBFd2tfQ29va2llX01hbmFnZXIgKmV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChj
b25zdCBFd2tfQ29udGV4dCAqY29udGV4dCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29v
a2llX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmYx
ZmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5o
IgorCisjaW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgorI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS0Nvb2tp
ZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU3RyaW5n
LmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3a19Db29raWVfTWFu
YWdlcgorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIGNvb2tpZSBtYW5hZ2VyIGRhdGEuCisgKi8K
K3N0cnVjdCBfRXdrX0Nvb2tpZV9NYW5hZ2VyIHsKKyAgICBXS1JldGFpblB0cjxXS0Nvb2tpZU1h
bmFnZXJSZWY+IHdrQ29va2llTWFuYWdlcjsKKworICAgIF9Fd2tfQ29va2llX01hbmFnZXIoV0tD
b29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXJSZWYpCisgICAgICAgIDogd2tDb29raWVNYW5h
Z2VyKGNvb2tpZU1hbmFnZXJSZWYpCisgICAgeyB9Cit9OworCisjZGVmaW5lIEVXS19DT09LSUVf
TUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcl8sIC4uLikgICAgXAor
ICAgIGlmICghKG1hbmFnZXIpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgibWFuYWdlciBpcyBOVUxM
LiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZB
X0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIShtYW5hZ2VyKS0+d2tDb29raWVNYW5hZ2VyKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NS
SVQoIm1hbmFnZXItPndrQ29va2llTWFuYWdlciBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgXAor
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgV0tDb29raWVNYW5hZ2Vy
UmVmIHdrTWFuYWdlcl8gPSAobWFuYWdlciktPndrQ29va2llTWFuYWdlci5nZXQoKQorCisvLyBF
d2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgZW51bSB2YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMsIGtXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3lBbHdheXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIsIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZl
cik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElD
WV9OT19USElSRF9QQVJUWSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluKTsKKworLy8gRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgZW51bSB2
YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfUEVSU0lT
VEVOVF9TVE9SQUdFX1RFWFQsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVRleHQpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9T
UUxJVEUsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNRTGl0ZSk7CisKK3ZvaWQgZXdrX2Nv
b2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBt
YW5hZ2VyLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3Jh
Z2Ugc3RvcmFnZSkKK3sKKyAgICBFV0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTiht
YW5hZ2VyLCB3a01hbmFnZXIpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGZpbGVu
YW1lKTsKKworICAgIHRvSW1wbCh3a01hbmFnZXIpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZShTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgc3RvcmFnZSk7Cit9CisKK3ZvaWQgZXdrX2Nv
b2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lfc2V0KEV3a19Db29raWVfTWFuYWdlciogbWFuYWdl
ciwgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSkKK3sKKyAgICBFV0tfQ09PS0lFX01B
TkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOworCisgICAgV0tDb29r
aWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh3a01hbmFnZXIsIHN0YXRpY19jYXN0
PFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KSk7Cit9CisKK3N0cnVjdCBHZXRfUG9s
aWN5X0FzeW5jX0RhdGEgeworICAgIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0
X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOworfTsKKworc3RhdGljIHZvaWQgZ2V0
QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tF
cnJvclJlZiB3a0Vycm9yLCB2b2lkKiBkYXRhKQoreworICAgIEdldF9Qb2xpY3lfQXN5bmNfRGF0
YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nhc3Q8R2V0X1BvbGljeV9Bc3luY19EYXRhKj4oZGF0
YSk7CisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJv
cl9uZXcod2tFcnJvcikgOiAwOworCisgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayhzdGF0aWNf
Y2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k+KHBvbGljeSksIGV3a0Vycm9yLCBjYWxsYmFj
a0RhdGEtPnVzZXJEYXRhKTsKKworICAgIGlmIChld2tFcnJvcikKKyAgICAgICAgZXdrX3dlYl9l
cnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBkZWxldGUgY2FsbGJhY2tEYXRhOworfQorCit2b2lk
IGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldChjb25zdCBFd2tfQ29v
a2llX01hbmFnZXIqIG1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0
X0NiIGNhbGxiYWNrLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19H
RVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFuYWdlcik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oY2FsbGJhY2spOworCisgICAgR2V0X1BvbGljeV9Bc3luY19EYXRhKiBjYWxsYmFj
a0RhdGEgPSBuZXcgR2V0X1BvbGljeV9Bc3luY19EYXRhOworICAgIGNhbGxiYWNrRGF0YS0+Y2Fs
bGJhY2sgPSBjYWxsYmFjazsKKyAgICBjYWxsYmFja0RhdGEtPnVzZXJEYXRhID0gZGF0YTsKKwor
ICAgIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kod2tNYW5hZ2VyLCBj
YWxsYmFja0RhdGEsIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKTsKK30KKworc3RydWN0IEdldF9I
b3N0bmFtZXNfQXN5bmNfRGF0YSB7CisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3Ru
YW1lc19HZXRfQ2IgY2FsbGJhY2s7CisgICAgdm9pZCogdXNlckRhdGE7Cit9OworCitzdGF0aWMg
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tIb3N0bmFt
ZXMsIFdLRXJyb3JSZWYgd2tFcnJvciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBFaW5hX0xpc3Qq
IGhvc3RuYW1lcyA9IDA7CisgICAgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKiBjYWxsYmFja0Rh
dGEgPSBzdGF0aWNfY2FzdDxHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqPihjb250ZXh0KTsKKyAg
ICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tfd2ViX2Vycm9yX25ldyh3
a0Vycm9yKSA6IDA7CisKKyAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlH
ZXRTaXplKHdrSG9zdG5hbWVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1l
Q291bnQ7ICsraSkgeworICAgICAgICBXS1N0cmluZ1JlZiB3a0hvc3RuYW1lID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0hvc3RuYW1lcywgaSkpOwor
ICAgICAgICBTdHJpbmcgaG9zdG5hbWUgPSB0b0ltcGwod2tIb3N0bmFtZSktPnN0cmluZygpOwor
ICAgICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGhvc3RuYW1lcyA9IGVpbmFfbGlzdF9hcHBlbmQoaG9zdG5hbWVzLCBlaW5hX3N0cmlu
Z3NoYXJlX2FkZChob3N0bmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgfQorCisgICAgY2FsbGJh
Y2tEYXRhLT5jYWxsYmFjayhob3N0bmFtZXMsIGV3a0Vycm9yLCBjYWxsYmFja0RhdGEtPnVzZXJE
YXRhKTsKKworICAgIHZvaWQqIGl0ZW07CisgICAgRUlOQV9MSVNUX0ZSRUUoaG9zdG5hbWVzLCBp
dGVtKQorICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoc3RhdGljX2Nhc3Q8RWluYV9TdHJpbmdz
aGFyZSo+KGl0ZW0pKTsKKyAgICBpZiAoZXdrRXJyb3IpCisgICAgICAgIGV3a193ZWJfZXJyb3Jf
ZnJlZShld2tFcnJvcik7CisgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKK30KKwordm9pZCBld2tf
Y29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dpdGhfY29va2llc19nZXQoY29uc3QgRXdr
X0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyLCBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5h
bWVzX0dldF9DYiBjYWxsYmFjaywgdm9pZCogZGF0YSkKK3sKKyAgICBFV0tfQ09PS0lFX01BTkFH
RVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGNhbGxiYWNrKTsKKworICAgIEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0
YSogY2FsbGJhY2tEYXRhID0gbmV3IEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YTsKKyAgICBjYWxs
YmFja0RhdGEtPmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgY2FsbGJhY2tEYXRhLT51c2VyRGF0
YSA9IGRhdGE7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJHZXRIb3N0bmFtZXNXaXRoQ29va2llcyh3
a01hbmFnZXIsIGNhbGxiYWNrRGF0YSwgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayk7
Cit9CisKK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoRXdr
X0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBob3N0TmFtZSkKK3sKKyAgICBF
V0tfQ09PS0lFX01BTkFHRVJfV0tfR0VUX09SX1JFVFVSTihtYW5hZ2VyLCB3a01hbmFnZXIpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGhvc3ROYW1lKTsKKworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB3a0hvc3ROYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGhvc3ROYW1lKSk7CisgICAgV0tDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKHdrTWFuYWdlciwgd2tIb3N0TmFtZS5nZXQoKSk7Cit9CisKK3ZvaWQgZXdrX2Nv
b2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQor
eworICAgIEVXS19DT09LSUVfTUFOQUdFUl9XS19HRVRfT1JfUkVUVVJOKG1hbmFnZXIsIHdrTWFu
YWdlcik7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJEZWxldGVBbGxDb29raWVzKHdrTWFuYWdlcik7
Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGcmVlcyBhIEV3a19Db29raWVfTWFuYWdlciBv
YmplY3QuCisgKi8KK3ZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2ZyZWUoRXdrX0Nvb2tpZV9NYW5h
Z2VyKiBtYW5hZ2VyKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1hbmFnZXIp
OworCisgICAgZGVsZXRlIG1hbmFnZXI7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25z
dHJ1Y3RzIGEgRXdrX0Nvb2tpZV9NYW5hZ2VyIGZyb20gYSBXS0Nvb2tpZU1hbmFnZXJSZWYuCisg
Ki8KK0V3a19Db29raWVfTWFuYWdlciogZXdrX2Nvb2tpZV9tYW5hZ2VyX25ldyhXS0Nvb2tpZU1h
bmFnZXJSZWYgd2tDb29raWVNYW5hZ2VyKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTCh3a0Nvb2tpZU1hbmFnZXIsIDApOworCisgICAgcmV0dXJuIG5ldyBFd2tfQ29va2ll
X01hbmFnZXIod2tDb29raWVNYW5hZ2VyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2MwYzM4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0wLDAgKzEsMTU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb29raWVfbWFu
YWdlci5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb29raWUgTWFuYWdlciBBUEku
CisgKi8KKworI2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfaAorI2RlZmluZSBld2tfY29va2ll
X21hbmFnZXJfaAorCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2luY2x1ZGUgPEVpbmEu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3Jl
YXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Db29raWVfTWFuYWdlciAqLwordHlwZWRlZiBzdHJ1
Y3QgX0V3a19Db29raWVfTWFuYWdlciBFd2tfQ29va2llX01hbmFnZXI7CisKKy8qKgorICogXGVu
dW0gICAgX0V3a19Db29raWVfQWNjZXB0X1BvbGljeQorICoKKyAqIEBicmllZiAgIENvbnRhaW5z
IGFjY2VwdCBwb2xpY2llcyBmb3IgdGhlIGNvb2tpZXMuCisgKi8KK2VudW0gX0V3a19Db29raWVf
QWNjZXB0X1BvbGljeSB7CisgICAgLy8vIEFjY2VwdHMgZXZlcnkgY29va2llIHNlbnQgZnJvbSBh
bnkgcGFnZS4KKyAgICBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTLAorICAgIC8vLyBS
ZWplY3RzIGFsbCBjb29raWVzLgorICAgIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUiwK
KyAgICAvLy8gQWNjZXB0cyBjb29raWVzIG9ubHkgZnJvbSB0aGUgbWFpbiBwYWdlLgorICAgIEVX
S19DT09LSUVfQUNDRVBUX1BPTElDWV9OT19USElSRF9QQVJUWQorfTsKKworLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIHRoZSBfRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5LgordHlwZWRlZiBl
bnVtIF9Fd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Owor
CisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZQorICoKKyAq
IEBicmllZiAgIEVudW0gdmFsdWVzIHRvIGRlbm90ZSBjb29raWVzIHBlcnNpc3RlbnQgc3RvcmFn
ZSB0eXBlLgorICovCitlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSB7CisgICAg
Ly8vIENvb2tpZXMgYXJlIHN0b3JlZCBpbiBhIHRleHQgZmlsZSBpbiB0aGUgTW96aWxsYSAiY29v
a2llcy50eHQiIGZvcm1hdC4KKyAgICBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhU
LAorICAgIC8vLyBDb29raWVzIGFyZSBzdG9yZWQgaW4gYSBTUUxpdGUgZmlsZSBpbiB0aGUgY3Vy
cmVudCBNb3ppbGxhIGZvcm1hdC4KKyAgICBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9T
UUxJVEUKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgX0V3a19Db29raWVf
UGVyc2lzdGVudF9TdG9yYWdlLgordHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRf
U3RvcmFnZSBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZTsKKworLyoqCisgKiBAdHlwZWRl
ZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBFd2tfQ29va2llX01hbmFn
ZXJfQXN5bmNfUG9saWN5X0dldF9DYgorICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3
aXRoIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldAorICovCit0eXBl
ZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nv
b2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2
ZW50X2luZm8pOworCisvKioKKyAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19I
b3N0bmFtZXNfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0Ni
CisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tpZV9tYW5hZ2Vy
X2FzeW5jX2hvc3RuYW1lc193aXRoX2Nvb2tpZXNfZ2V0CisgKgorICogQG5vdGUgVGhlIEBhIGhv
c3RuYW1lcyBsaXN0IGl0ZW1zIGFyZSBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUu
IFdoZW5ldmVyIHBvc3NpYmxlCisgKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpCisgKiBvciBzdHJkdXAoKS4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5h
Z2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IpKEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfV2Vi
X0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CisKKy8qKgorICogU2V0IHRoZSBAYSBm
aWxlbmFtZSB3aGVyZSBub24tc2Vzc2lvbiBjb29raWVzIGFyZSBzdG9yZWQgcGVyc2lzdGVudGx5
IHVzaW5nIEBhIHN0b3JhZ2UgYXMgdGhlIGZvcm1hdCB0byByZWFkL3dyaXRlIHRoZSBjb29raWVz
LgorICoKKyAqIENvb2tpZXMgYXJlIGluaXRpYWxseSByZWFkIGZyb20gQGZpbGVuYW1lIHRvIGNy
ZWF0ZSBhbiBpbml0aWFsIHNldCBvZiBjb29raWVzLgorICogVGhlbiwgbm9uLXNlc3Npb24gY29v
a2llcyB3aWxsIGJlIHdyaXR0ZW4gdG8gQGZpbGVuYW1lLgorICoKKyAqIEJ5IGRlZmF1bHQsIEBh
IG1hbmFnZXIgZG9lc24ndCBzdG9yZSB0aGUgY29va2llcyBwZXJzaXN0ZW5seSwgc28geW91IG5l
ZWQgdG8gY2FsbCB0aGlzCisgKiBtZXRob2QgdG8ga2VlcCBjb29raWVzIHNhdmVkIGFjcm9zcyBz
ZXNzaW9ucy4KKyAqCisgKiBAcGFyYW0gY29va2llX21hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2Vy
IHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgZmlsZW5hbWUgdG8gcmVhZCB0by93
cml0ZSBmcm9tLgorICogQHBhcmFtIHN0b3JhZ2UgdGhlIHR5cGUgb2Ygc3RvcmFnZS4KKyAqLwor
dm9pZCBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChFd2tfQ29va2ll
X01hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBFd2tfQ29va2llX1BlcnNp
c3RlbnRfU3RvcmFnZSBzdG9yYWdlKTsKKworLyoqCisgKiBTZXQgQGEgcG9saWN5IGFzIHRoZSBj
b29raWUgYWNjZXB0YW5jZSBwb2xpY3kgZm9yIEBhIG1hbmFnZXIuCisgKgorICogQnkgZGVmYXVs
dCwgY29va2llcyBhcmUgYWx3YXlzIGFjY2VwdGVkLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRo
ZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUuCisgKiBAcGFyYW0gcG9saWN5IGEgI0V3a19Db29r
aWVfQWNjZXB0X1BvbGljeQorICovCisKK0VBUEkgdm9pZCBld2tfY29va2llX21hbmFnZXJfYWNj
ZXB0X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLCBFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3kgcG9saWN5KTsKKworLyoqCisgKiBBc3luY2hyb25vdXNseSBnZXQgdGhlIGNv
b2tpZSBhY2NlcHRhbmNlIHBvbGljeSBvZiBAYSBtYW5hZ2VyLgorICoKKyAqIEJ5IGRlZmF1bHQs
IGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqCisgKiBAcGFyYW0gbWFuYWdlciBUaGUg
Y29va2llIG1hbmFnZXIgdG8gcXVlcnkuCisgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9u
IHRvIGNhbGwgd2hlbiB0aGUgcG9saWN5IGlzIHJlY2VpdmVkIG9yIGFuIGVycm9yIG9jY3VyZWQu
CisgKiBAcGFyYW0gZGF0YSBVc2VyIGRhdGEgKG1heSBiZSBAYyBOVUxMKS4KKyAqLworRUFQSSB2
b2lkIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldChjb25zdCBFd2tf
Q29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lf
R2V0X0NiIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKKworLyoqCisgKiBBc3luY2hyb25vdXNseSBn
ZXQgdGhlIGxpc3Qgb2YgaG9zdCBuYW1lcyBmb3Igd2hpY2ggQGEgbWFuYWdlciBjb250YWlucyBj
b29raWVzLgorICoKKyAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byBxdWVy
eS4KKyAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBob3N0
IG5hbWVzIGhhdmUgYmVlbiByZWNlaXZlZC4KKyAqIEBwYXJhbSBkYXRhIFVzZXIgZGF0YSAobWF5
IGJlIEBjIE5VTEwpLgorICovCitFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2hv
c3RuYW1lc193aXRoX2Nvb2tpZXNfZ2V0KGNvbnN0IEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdl
ciwgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IgY2FsbGJhY2ssIHZv
aWQgKmRhdGEpOworCisvKioKKyAqIFJlbW92ZSBhbGwgY29va2llcyBvZiBAYSBtYW5hZ2VyIGZv
ciB0aGUgZ2l2ZW4gQGEgaG9zdG5hbWUuCisgKgorICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tp
ZSBtYW5hZ2VyIHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBob3N0bmFtZSBBIGhvc3QgbmFtZS4KKyAq
LworRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFtZV9jb29raWVzX2NsZWFyKEV3
a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgY29uc3QgY2hhciAqaG9zdG5hbWUpOworCisvKioK
KyAqIERlbGV0ZSBhbGwgY29va2llcyBvZiBAYSBtYW5hZ2VyLgorICoKKyAqIEBwYXJhbSBtYW5h
Z2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUuCisgKi8KK0VBUEkgdm9pZCBld2tfY29v
a2llX21hbmFnZXJfY29va2llc19jbGVhcihFd2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2Nvb2tpZV9t
YW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY0Mjg1YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oCkBAIC0wLDAgKzEs
MzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2Nvb2tpZV9tYW5hZ2VyX3By
aXZhdGVfaAorI2RlZmluZSBld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZV9oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0Nvb2tpZV9NYW5hZ2Vy
IEV3a19Db29raWVfTWFuYWdlcjsKKworRXdrX0Nvb2tpZV9NYW5hZ2VyKiBld2tfY29va2llX21h
bmFnZXJfbmV3KFdLQ29va2llTWFuYWdlclJlZiB3a0Nvb2tpZU1hbmFnZXIpOwordm9pZCBld2tf
Y29va2llX21hbmFnZXJfZnJlZShFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpOworCisjZW5k
aWYgLy8gZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>