<?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>91639</bug_id>
          
          <creation_ts>2012-07-18 10:32:58 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add unit tests for Ewk_Cookie_Manager</short_desc>
          <delta_ts>2012-07-23 13:26:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91647</dependson>
    
    <dependson>91741</dependson>
    
    <dependson>91747</dependson>
          <blocked>91345</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>danw</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</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>672505</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 10:32:58 -0700</bug_when>
    <thetext>We need to add unit tests for Ewk_Cookie_Manager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672562</commentid>
    <comment_count>1</comment_count>
      <attachid>153055</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 11:24:05 -0700</bug_when>
    <thetext>Created attachment 153055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672579</commentid>
    <comment_count>2</comment_count>
      <attachid>153055</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-18 11:38:02 -0700</bug_when>
    <thetext>Comment on attachment 153055
Patch

Attachment 153055 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13277603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672704</commentid>
    <comment_count>3</comment_count>
      <attachid>153077</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 13:29:24 -0700</bug_when>
    <thetext>Created attachment 153077
Patch

Reuploading the same patch again to make ewk-efl happy, now that the dependency landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673060</commentid>
    <comment_count>4</comment_count>
      <attachid>153077</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-18 18:43:36 -0700</bug_when>
    <thetext>Comment on attachment 153077
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:7
&gt; +    ${CAIRO_LIBRARIES}

This one should be changed CAIRO_LIBRARIES with CAIRO_LDFLAGS.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp:50
&gt; +    gchar* uriString = soup_uri_to_string(uri, FALSE);

Should we use gchar ? I think we avoid to use glib type in EFL port, if possible.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h:29
&gt; +

Nit: Unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673215</commentid>
    <comment_count>5</comment_count>
      <attachid>153188</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 23:46:54 -0700</bug_when>
    <thetext>Created attachment 153188
Patch

Take Gyuyoung&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673330</commentid>
    <comment_count>6</comment_count>
      <attachid>153188</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-19 02:20:22 -0700</bug_when>
    <thetext>Comment on attachment 153188
Patch

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

One final consideration: I can see that you are using a lot of ASSERT_EQ. They are all &quot;fatal&quot; exceptions and will stop that particular test block in case it is hit. If the the tests on the block don&apos;t depend on each other, I recommend using EXPECT_* instead. If you did it on purpose, just ignore this comment.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp:51
&gt; +    CString ret = uriString;

WebKit doesn&apos;t like variables named &quot;ret&quot;. You should use something more descriptive.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:68
&gt; +    ASSERT(!error);

Use gtest assertions (i.e. ASSERT_TRUE/ASSERT_FALSE) on the test. Otherwise you wont get this error when testing a release build.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:84
&gt; +    ASSERT(!error);

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:120
&gt; +    g_type_init();
&gt; +    ecore_main_loop_glib_integrate();

This would be a nice addition for the fixture SetUp().

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:126
&gt; +    ASSERT(cookieManager);

Use gtest fatal assertion.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:218
&gt; +    ASSERT(cookieManager);

Use gtest.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:224
&gt; +    ewk_cookie_manager_persistent_storage_set(cookieManager, TMP_COOKIE_FILE_TXT, EWK_COOKIE_PERSISTENT_STORAGE_TEXT);

I&apos;m concerned here because we always use the same file name for the cookie storage. This has the following implications: your test might be tainted by a previous run that crashed before the unlink and it will not work when running the same test parallel (i.e. you have 2 build bots on the same machine). A cheap solution for this is to use tempnam() at this test case.

Ideally the TestEvironment should provide a temporary directory and cleanup this directory at its teardown. IMO it can be done in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673402</commentid>
    <comment_count>7</comment_count>
      <attachid>153188</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-19 05:10:00 -0700</bug_when>
    <thetext>Comment on attachment 153188
Patch

Clearing flags until I update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673458</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-19 06:53:50 -0700</bug_when>
    <thetext>Well, the good news is that this patch revealed a regression in libsoup v2.39.3 (bumped yesterday). Thankfully, the issue has been resolved with v2.39.4.1 (confirmed with the unit tests) so I&apos;m bumping libsoup again in bug 91741).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673494</commentid>
    <comment_count>9</comment_count>
      <attachid>153258</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-19 07:34:16 -0700</bug_when>
    <thetext>Created attachment 153258
Patch

Take Thiago&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673503</commentid>
    <comment_count>10</comment_count>
      <attachid>153258</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-19 07:45:21 -0700</bug_when>
    <thetext>Comment on attachment 153258
Patch

LGTM. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674271</commentid>
    <comment_count>11</comment_count>
      <attachid>153436</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-20 00:33:43 -0700</bug_when>
    <thetext>Created attachment 153436
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674281</commentid>
    <comment_count>12</comment_count>
      <attachid>153436</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-20 00:45:56 -0700</bug_when>
    <thetext>Comment on attachment 153436
Patch

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

LGTM except for trivial nit.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp:50
&gt; +    char* uri = soup_uri_to_string(soupURI, FALSE);

nit(?) : is FALSE gtk style ? EFL port have used false so far except for public APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674285</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-20 00:47:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 153436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153436&amp;action=review
&gt; 
&gt; LGTM except for trivial nit.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp:50
&gt; &gt; +    char* uri = soup_uri_to_string(soupURI, FALSE);
&gt; 
&gt; nit(?) : is FALSE gtk style ? EFL port have used false so far except for public APIs.

Yes, I missed that one. Will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674308</commentid>
    <comment_count>14</comment_count>
      <attachid>153443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-20 01:18:03 -0700</bug_when>
    <thetext>Created attachment 153443
Patch

Remove some glib&apos;ism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674317</commentid>
    <comment_count>15</comment_count>
      <attachid>153443</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-20 01:29:16 -0700</bug_when>
    <thetext>Comment on attachment 153443
Patch

LGTM, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674325</commentid>
    <comment_count>16</comment_count>
      <attachid>153443</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-20 01:41:08 -0700</bug_when>
    <thetext>Comment on attachment 153443
Patch

LGTM and the mini webserver is a great addition to the test suite. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674571</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-20 07:53:06 -0700</bug_when>
    <thetext>All the dependencies have landed, this patch is ready to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675855</commentid>
    <comment_count>18</comment_count>
      <attachid>153443</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-23 11:40:53 -0700</bug_when>
    <thetext>Comment on attachment 153443
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        to indicate that only cookies for the main page are accepted by default.

main frame?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp:58
&gt; +}
&gt; +
&gt; +

nit: extra line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675877</commentid>
    <comment_count>19</comment_count>
      <attachid>153829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 12:04:01 -0700</bug_when>
    <thetext>Created attachment 153829
Patch for landing

Fix nits spotted by Antonio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675945</commentid>
    <comment_count>20</comment_count>
      <attachid>153829</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 13:26:18 -0700</bug_when>
    <thetext>Comment on attachment 153829
Patch for landing

Clearing flags on attachment: 153829

Committed r123372: &lt;http://trac.webkit.org/changeset/123372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675947</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 13:26:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153055</attachid>
            <date>2012-07-18 11:24:05 -0700</date>
            <delta_ts>2012-07-18 13:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookie_manager_utest.patch</filename>
            <type>text/plain</type>
            <size>18195</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZTgyYTZkLi4wODU1NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcg
QEAKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bV0syXSBBZGQgRXdrIGNsYXNzIGZvciBjb29raWUgbWFuYWdl
cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNTMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlMzFjNTc5Li5hMDNmNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNCw2ICs0LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9M
SU5LX0ZMQUdTCiAgICAgJHtFRkxERVBTX0xERkxBR1N9CiAgICAgJHtFVkFTX0xERkxBR1N9CiAg
ICAgJHtMSUJTT1VQMjRfTERGTEFHU30KKyAgICAke0NBSVJPX0xJQlJBUklFU30KICkKIAogTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCkBAIC0xOTcsNiArMTk4LDcgQEAgU0VUKEVXSzJVbml0
VGVzdHNfTElCUkFSSUVTCiAgICAgJHtFQ09SRV9MSUJSQVJJRVN9CiAgICAgJHtFQ09SRV9FVkFT
X0xJQlJBUklFU30KICAgICAke0VWQVNfTElCUkFSSUVTfQorICAgICR7TElCU09VUDI0X0xJQlJB
UklFU30KICAgICBndGVzdAogKQogCkBAIC0yMTgsNiArMjIwLDcgQEAgQUREX0xJQlJBUlkoZXdr
MlVuaXRUZXN0VXRpbHMKICAgICAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuY3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKICAgICAke1dFQktJVDJfRUZMX1RF
U1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3BwCisgICAgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCiApCiAK
IFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNf
TElCUkFSSUVTfSkKQEAgLTIyNSw2ICsyMjgsNyBAQCBUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdr
MlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCiAjIFRoZSAiZXdrIiBv
biB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2Ug
aXQKICMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUu
CiBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUworICAgIHRlc3RfZXdrMl9jb29raWVfbWFuYWdl
cgogICAgIHRlc3RfZXdrMl92aWV3CiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKaW5kZXggM2MwYzM4ZC4uZDc1ZjNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIGV3a19jb29raWVfbWFuYWdl
cl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgY29u
cwogLyoqCiAgKiBTZXQgQGEgcG9saWN5IGFzIHRoZSBjb29raWUgYWNjZXB0YW5jZSBwb2xpY3kg
Zm9yIEBhIG1hbmFnZXIuCiAgKgotICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUgYWx3YXlzIGFj
Y2VwdGVkLgorICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUgYWNjZXB0ZWQgb25seSBmb3IgdGhl
IG1haW4gcGFnZS4KICAqCiAgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8g
dXBkYXRlLgogICogQHBhcmFtIHBvbGljeSBhICNFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKQEAg
LTExOCw3ICsxMTgsNyBAQCBFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xp
Y3lfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgRXdrXwogLyoqCiAgKiBBc3luY2hy
b25vdXNseSBnZXQgdGhlIGNvb2tpZSBhY2NlcHRhbmNlIHBvbGljeSBvZiBAYSBtYW5hZ2VyLgog
ICoKLSAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqIEJ5IGRl
ZmF1bHQsIGNvb2tpZXMgYXJlIGFjY2VwdGVkIG9ubHkgZm9yIHRoZSBtYWluIHBhZ2UuCiAgKgog
ICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHF1ZXJ5LgogICogQHBhcmFt
IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHBvbGljeSBpcyByZWNlaXZl
ZCBvciBhbiBlcnJvciBvY2N1cmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQw
NDI0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5jcHAKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJFV0syVW5pdFRlc3RTZXJ2ZXIuaCIKKworRVdLMlVuaXRUZXN0U2VydmVyOjpFV0syVW5pdFRl
c3RTZXJ2ZXIoKQoreworICAgIFNvdXBBZGRyZXNzKiBhZGRyZXNzID0gc291cF9hZGRyZXNzX25l
dygiMTI3LjAuMC4xIiwgU09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3VwX2FkZHJlc3Nf
cmVzb2x2ZV9zeW5jKGFkZHJlc3MsIDApOworCisgICAgbV9zb3VwU2VydmVyID0gc291cF9zZXJ2
ZXJfbmV3KFNPVVBfU0VSVkVSX0lOVEVSRkFDRSwgYWRkcmVzcywgTlVMTCk7CisgICAgbV9iYXNl
VVJJID0gc291cF91cmlfbmV3KCJodHRwOi8vMTI3LjAuMC4xLyIpOworICAgIHNvdXBfdXJpX3Nl
dF9wb3J0KG1fYmFzZVVSSSwgc291cF9zZXJ2ZXJfZ2V0X3BvcnQobV9zb3VwU2VydmVyKSk7Cisg
ICAgZ19vYmplY3RfdW5yZWYoYWRkcmVzcyk7Cit9CisKK0VXSzJVbml0VGVzdFNlcnZlcjo6fkVX
SzJVbml0VGVzdFNlcnZlcigpCit7CisgICAgc291cF91cmlfZnJlZShtX2Jhc2VVUkkpOworICAg
IGdfb2JqZWN0X3VucmVmKG1fc291cFNlcnZlcik7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0U2Vy
dmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNrIHNlcnZlckNhbGxiYWNrKQoreworICAgIHNvdXBf
c2VydmVyX3J1bl9hc3luYyhtX3NvdXBTZXJ2ZXIpOworICAgIHNvdXBfc2VydmVyX2FkZF9oYW5k
bGVyKG1fc291cFNlcnZlciwgMCwgc2VydmVyQ2FsbGJhY2ssIDAsIDApOworfQorCitDU3RyaW5n
IEVXSzJVbml0VGVzdFNlcnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25z
dAoreworICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ld193aXRoX2Jhc2UobV9iYXNlVVJJ
LCBwYXRoKTsKKyAgICBnY2hhciogdXJpU3RyaW5nID0gc291cF91cmlfdG9fc3RyaW5nKHVyaSwg
RkFMU0UpOworICAgIENTdHJpbmcgcmV0ID0gdXJpU3RyaW5nOworICAgIGdfZnJlZSh1cmlTdHJp
bmcpOworICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViNzM0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0U2VydmVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgRVdLMlVuaXRUZXN0U2VydmVyX2gKKyNkZWZpbmUgRVdLMlVuaXRUZXN0U2VydmVyX2gK
KworI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworY2xhc3MgRVdLMlVuaXRUZXN0U2VydmVyIHsKK3B1YmxpYzoKKworICAgIEVXSzJVbml0
VGVzdFNlcnZlcigpOworICAgIHZpcnR1YWwgfkVXSzJVbml0VGVzdFNlcnZlcigpOworCisgICAg
U291cFVSSSogYmFzZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSSTsgfQorCisgICAgQ1N0
cmluZyBnZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OworICAgIHZvaWQgcnVu
KFNvdXBTZXJ2ZXJDYWxsYmFjayk7CisKK3ByaXZhdGU6CisgICAgU291cFNlcnZlciogbV9zb3Vw
U2VydmVyOworICAgIFNvdXBVUkkqIG1fYmFzZVVSSTsKK307CisKKyNlbmRpZiAvLyBFV0syVW5p
dFRlc3RTZXJ2ZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTg2NjhjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tp
ZV9tYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oIgorI2luY2x1
ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4
dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25z
dCBjaGFyIEZJUlNUX1BBUlRZX0RPTUFJTltdID0gIjEyNy4wLjAuMSI7CitzdGF0aWMgY29uc3Qg
Y2hhciBUSElSRF9QQVJUWV9ET01BSU5bXSA9ICJsb2NhbGhvc3QiOworc3RhdGljIGNvbnN0IGNo
YXIgVE1QX0NPT0tJRV9GSUxFX1RYVFtdID0gIi90bXAvY29va2llcy50eHQiOworc3RhdGljIGNv
bnN0IGNoYXIgVE1QX0NPT0tJRV9GSUxFX1NRTElURVtdID0gIi90bXAvY29va2llcy5kYiI7Citz
dGF0aWMgY29uc3QgY2hhciBJTkRFWF9IVE1MX1NUUklOR1tdID0KKyAgICAiPGh0bWw+PGJvZHk+
IgorICAgICIgPHA+RUZMV2ViS2l0MiBDb29raWUgTWFuYWdlciB0ZXN0PC9wPiIKKyAgICAiIDxp
bWcgc3JjPSdodHRwOi8vbG9jYWxob3N0OiV1L2ltYWdlLnBuZycgd2lkdGg9NSBoZWlnaHQ9NT48
L2ltZz4iCisgICAgIjwvYm9keT48L2h0bWw+IjsKKworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAg
aWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBpZiAoIXN0cmNtcChwYXRoLCAiL2luZGV4Lmh0
bWwiKSkgeworICAgICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7
CisgICAgICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCBJTkRFWF9IVE1MX1NU
UklORywgc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUi
LCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgZWluYV9zdHJidWZf
c3RyaW5nX3N0ZWFsKGJ1ZmZlciksIGVpbmFfc3RyYnVmX2xlbmd0aF9nZXQoYnVmZmVyKSk7Cisg
ICAgICAgIGVpbmFfc3RyYnVmX3N0cmluZ19mcmVlKGJ1ZmZlcik7CisgICAgfSBlbHNlIGlmICgh
c3RyY21wKHBhdGgsICIvaW1hZ2UucG5nIikpCisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJz
X3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiYmF6PXF1
eDsgTWF4LUFnZT02MCIpOworICAgIGVsc2UKKyAgICAgICAgRkFJTCgpOworICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCitzdGF0aWMg
dm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9s
aWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBBU1NF
UlQoIWVycm9yKTsKKyAgICBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19j
YXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeSo+KGV2ZW50X2luZm8pOworICAgICpyZXQgPSBw
b2xpY3k7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworc3RhdGljIEV3a19Db29r
aWVfQWNjZXB0X1BvbGljeSBnZXRBY2NlcHRQb2xpY3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5h
Z2VyKQoreworICAgIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3kgPSBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfQUxXQVlTOworICAgIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2Nl
cHRfcG9saWN5X2dldChtYW5hZ2VyLCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjaywgJnBvbGljeSk7
CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKwor
c3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhv
c3RuYW1lcywgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAg
QVNTRVJUKCFlcnJvcik7CisKKyAgICBFaW5hX0xpc3QqKiByZXQgPSBzdGF0aWNfY2FzdDxFaW5h
X0xpc3QqKj4oZXZlbnRfaW5mbyk7CisgICAgRWluYV9MaXN0KiBsOworICAgIHZvaWQqIGRhdGE7
CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0goaG9zdG5hbWVzLCBsLCBkYXRhKQorICAgICAgICAqcmV0
ID0gZWluYV9saXN0X2FwcGVuZCgqcmV0LCBlaW5hX3N0cmluZ3NoYXJlX3JlZihzdGF0aWNfY2Fz
dDxjaGFyKj4oZGF0YSkpKTsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCitzdGF0
aWMgRWluYV9MaXN0KiBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhFd2tfQ29va2llX01hbmFnZXIq
IG1hbmFnZXIpCit7CisgICAgRWluYV9MaXN0KiByZXQgPSAwOworICAgIGV3a19jb29raWVfbWFu
YWdlcl9hc3luY19ob3N0bmFtZXNfd2l0aF9jb29raWVzX2dldChtYW5hZ2VyLCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llc0NhbGxiYWNrLCAmcmV0KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4o
KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBmcmVlSG9zdE5hbWVzKEVpbmFf
TGlzdCogaG9zdG5hbWVzKQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUo
aG9zdG5hbWVzLCBkYXRhKQorICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdGF0aWNfY2Fz
dDxjaGFyKj4oZGF0YSkpOworfQorCitzdGF0aWMgaW50IGNvdW50SG9zdG5hbWVzV2l0aENvb2tp
ZXMoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEVpbmFfTGlzdCogaG9zdG5h
bWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMobWFuYWdlcik7CisgICAgaW50IGNvdW50ID0g
ZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyk7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMp
OworICAgIHJldHVybiBjb3VudDsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19j
b29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5KQoreworICAgIGdfdHlwZV9pbml0KCk7CisgICAg
ZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCk7CisKKyAgICBFV0syVW5pdFRlc3RTZXJ2
ZXIqIGh0dHBTZXJ2ZXIgPSBuZXcgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgaHR0cFNlcnZl
ci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2ll
TWFuYWdlciA9IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZh
dWx0X2dldCgpKTsKKyAgICBBU1NFUlQoY29va2llTWFuYWdlcik7CisKKyAgICAvLyBEZWZhdWx0
IHBvbGljeSBpcyBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkuCisgICAg
QVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX05PX1RISVJEX1BBUlRZKTsKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICBFaW5hX0xpc3QqIGhv
c3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFT
U0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7CisgICAgQVNTRVJUX1NUUkVR
KHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9Q
QVJUWV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICBld2tfY29v
a2llX21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIENoYW5n
ZSBwb2xpY3kgdG8gRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUworICAgIGV3a19jb29r
aWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tp
ZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBsb2FkVXJs
U3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisK
KyAgICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsK
KyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIEFTU0VS
VF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0bmFtZXMsIDApKSwg
RklSU1RfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+
KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAxKSksIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAg
ZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVz
X2NsZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09P
S0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3Bv
bGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSKTsK
KyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0
bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBkZWxldGUgaHR0cFNl
cnZlcjsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb29raWVfbWFuYWdlcl9j
b29raWVzX2RlbGV0ZSkKK3sKKyAgICBnX3R5cGVfaW5pdCgpOworICAgIGVjb3JlX21haW5fbG9v
cF9nbGliX2ludGVncmF0ZSgpOworCisgICAgRVdLMlVuaXRUZXN0U2VydmVyKiBodHRwU2VydmVy
ID0gbmV3IEVXSzJVbml0VGVzdFNlcnZlcigpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJD
YWxsYmFjayk7CisKKyAgICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tf
Y29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7Cisg
ICAgQVNTRVJUKGNvb2tpZU1hbmFnZXIpOworCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdB
WVMpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEVpbmFfTGlzdCog
aG9zdG5hbWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAg
QVNTRVJUX0VRKGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpLCAyKTsKKyAgICBmcmVlSG9zdE5h
bWVzKGhvc3RuYW1lcyk7CisKKyAgICAvLyBEZWxldGUgZmlyc3QgcGFydHkgY29va2llCisgICAg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlciwg
RklSU1RfUEFSVFlfRE9NQUlOKTsKKyAgICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3Ru
YW1lcyksIDEpOworICAgIEFTU0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0
X250aChob3N0bmFtZXMsIDApKSwgVEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBmcmVlSG9zdE5h
bWVzKGhvc3RuYW1lcyk7CisKKyAgICAvLyBEZWxldGUgdGhpcmQgcGFydHkgY29va2llCisgICAg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlciwg
VEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICAvLyBHZXQgYWxsIGNvb2tpZXMgYWdhaW4K
KyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIp
LmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2ll
TWFuYWdlciksIDIpOworCisgICAgLy8gQ2xlYXIgYWxsIGNvb2tpZXMKKyAgICBld2tfY29va2ll
X21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoY291
bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBkZWxldGUg
aHR0cFNlcnZlcjsKK30KKworc3RhdGljIHZvaWQgY2xlYW5VcENvb2tpZUZpbGVzKCkKK3sKKyAg
ICB1bmxpbmsoVE1QX0NPT0tJRV9GSUxFX1RYVCk7CisgICAgdW5saW5rKFRNUF9DT09LSUVfRklM
RV9TUUxJVEUpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9tYW5h
Z2VyX3Blcm1hbmVudF9zdG9yYWdlKQoreworICAgIGdfdHlwZV9pbml0KCk7CisgICAgZWNvcmVf
bWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCk7CisKKyAgICBFV0syVW5pdFRlc3RTZXJ2ZXIqIGh0
dHBTZXJ2ZXIgPSBuZXcgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgaHR0cFNlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKKworICAgIC8vIGluaXRpYWwgY2xlYW4gdXAKKyAgICBjbGVhblVw
Q29va2llRmlsZXMoKTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFuYWdlciA9
IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
KTsKKyAgICBBU1NFUlQoY29va2llTWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJf
YWNjZXB0X3BvbGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZ
X0FMV0FZUyk7CisgICAgQVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwg
RVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2Ug
dXNpbmcgYSBuZXcgZmlsZS4KKyAgICBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9y
YWdlX3NldChjb29raWVNYW5hZ2VyLCBUTVBfQ09PS0lFX0ZJTEVfVFhULCBFV0tfQ09PS0lFX1BF
UlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNv
dW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDIpOworCisgICAgLy8gU1FM
aXRlIHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KKyAgICBld2tfY29va2llX21hbmFnZXJfcGVy
c2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5hZ2VyLCBUTVBfQ09PS0lFX0ZJTEVfU1FMSVRF
LCBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUpOworICAgIEFTU0VSVF9FUShj
b3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIGxvYWRV
cmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsK
KyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwg
Mik7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYW4gZXhpc3RpbmcgZmlsZS4KKyAgICBl
d2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5hZ2VyLCBU
TVBfQ09PS0lFX0ZJTEVfVFhULCBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsK
KyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwg
Mik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7
CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciks
IDApOworCisgICAgLy8gU1FMaXRlIHN0b3JhZ2Ugd2l0aCBhbiBleGlzdGluZyBmaWxlLgorICAg
IGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIs
IFRNUF9DT09LSUVfRklMRV9TUUxJVEUsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NR
TElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFu
YWdlciksIDIpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKGNvb2tpZU1h
bmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1h
bmFnZXIpLCAwKTsKKworICAgIC8vIEZpbmFsIGNsZWFuIHVwCisgICAgY2xlYW5VcENvb2tpZUZp
bGVzKCk7Cit9CisK
</data>
<flag name="commit-queue"
          id="161906"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153077</attachid>
            <date>2012-07-18 13:29:24 -0700</date>
            <delta_ts>2012-07-18 23:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookie_manager_utest.patch</filename>
            <type>text/plain</type>
            <size>18195</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZTgyYTZkLi4wODU1NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcg
QEAKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bV0syXSBBZGQgRXdrIGNsYXNzIGZvciBjb29raWUgbWFuYWdl
cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNTMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlMzFjNTc5Li5hMDNmNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNCw2ICs0LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9M
SU5LX0ZMQUdTCiAgICAgJHtFRkxERVBTX0xERkxBR1N9CiAgICAgJHtFVkFTX0xERkxBR1N9CiAg
ICAgJHtMSUJTT1VQMjRfTERGTEFHU30KKyAgICAke0NBSVJPX0xJQlJBUklFU30KICkKIAogTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCkBAIC0xOTcsNiArMTk4LDcgQEAgU0VUKEVXSzJVbml0
VGVzdHNfTElCUkFSSUVTCiAgICAgJHtFQ09SRV9MSUJSQVJJRVN9CiAgICAgJHtFQ09SRV9FVkFT
X0xJQlJBUklFU30KICAgICAke0VWQVNfTElCUkFSSUVTfQorICAgICR7TElCU09VUDI0X0xJQlJB
UklFU30KICAgICBndGVzdAogKQogCkBAIC0yMTgsNiArMjIwLDcgQEAgQUREX0xJQlJBUlkoZXdr
MlVuaXRUZXN0VXRpbHMKICAgICAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuY3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKICAgICAke1dFQktJVDJfRUZMX1RF
U1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3BwCisgICAgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCiApCiAK
IFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNf
TElCUkFSSUVTfSkKQEAgLTIyNSw2ICsyMjgsNyBAQCBUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdr
MlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCiAjIFRoZSAiZXdrIiBv
biB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2Ug
aXQKICMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUu
CiBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUworICAgIHRlc3RfZXdrMl9jb29raWVfbWFuYWdl
cgogICAgIHRlc3RfZXdrMl92aWV3CiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKaW5kZXggM2MwYzM4ZC4uZDc1ZjNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIGV3a19jb29raWVfbWFuYWdl
cl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgY29u
cwogLyoqCiAgKiBTZXQgQGEgcG9saWN5IGFzIHRoZSBjb29raWUgYWNjZXB0YW5jZSBwb2xpY3kg
Zm9yIEBhIG1hbmFnZXIuCiAgKgotICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUgYWx3YXlzIGFj
Y2VwdGVkLgorICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUgYWNjZXB0ZWQgb25seSBmb3IgdGhl
IG1haW4gcGFnZS4KICAqCiAgKiBAcGFyYW0gbWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8g
dXBkYXRlLgogICogQHBhcmFtIHBvbGljeSBhICNFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKQEAg
LTExOCw3ICsxMTgsNyBAQCBFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xp
Y3lfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwgRXdrXwogLyoqCiAgKiBBc3luY2hy
b25vdXNseSBnZXQgdGhlIGNvb2tpZSBhY2NlcHRhbmNlIHBvbGljeSBvZiBAYSBtYW5hZ2VyLgog
ICoKLSAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqIEJ5IGRl
ZmF1bHQsIGNvb2tpZXMgYXJlIGFjY2VwdGVkIG9ubHkgZm9yIHRoZSBtYWluIHBhZ2UuCiAgKgog
ICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHF1ZXJ5LgogICogQHBhcmFt
IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHBvbGljeSBpcyByZWNlaXZl
ZCBvciBhbiBlcnJvciBvY2N1cmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQw
NDI0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5jcHAKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJFV0syVW5pdFRlc3RTZXJ2ZXIuaCIKKworRVdLMlVuaXRUZXN0U2VydmVyOjpFV0syVW5pdFRl
c3RTZXJ2ZXIoKQoreworICAgIFNvdXBBZGRyZXNzKiBhZGRyZXNzID0gc291cF9hZGRyZXNzX25l
dygiMTI3LjAuMC4xIiwgU09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3VwX2FkZHJlc3Nf
cmVzb2x2ZV9zeW5jKGFkZHJlc3MsIDApOworCisgICAgbV9zb3VwU2VydmVyID0gc291cF9zZXJ2
ZXJfbmV3KFNPVVBfU0VSVkVSX0lOVEVSRkFDRSwgYWRkcmVzcywgTlVMTCk7CisgICAgbV9iYXNl
VVJJID0gc291cF91cmlfbmV3KCJodHRwOi8vMTI3LjAuMC4xLyIpOworICAgIHNvdXBfdXJpX3Nl
dF9wb3J0KG1fYmFzZVVSSSwgc291cF9zZXJ2ZXJfZ2V0X3BvcnQobV9zb3VwU2VydmVyKSk7Cisg
ICAgZ19vYmplY3RfdW5yZWYoYWRkcmVzcyk7Cit9CisKK0VXSzJVbml0VGVzdFNlcnZlcjo6fkVX
SzJVbml0VGVzdFNlcnZlcigpCit7CisgICAgc291cF91cmlfZnJlZShtX2Jhc2VVUkkpOworICAg
IGdfb2JqZWN0X3VucmVmKG1fc291cFNlcnZlcik7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0U2Vy
dmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNrIHNlcnZlckNhbGxiYWNrKQoreworICAgIHNvdXBf
c2VydmVyX3J1bl9hc3luYyhtX3NvdXBTZXJ2ZXIpOworICAgIHNvdXBfc2VydmVyX2FkZF9oYW5k
bGVyKG1fc291cFNlcnZlciwgMCwgc2VydmVyQ2FsbGJhY2ssIDAsIDApOworfQorCitDU3RyaW5n
IEVXSzJVbml0VGVzdFNlcnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25z
dAoreworICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ld193aXRoX2Jhc2UobV9iYXNlVVJJ
LCBwYXRoKTsKKyAgICBnY2hhciogdXJpU3RyaW5nID0gc291cF91cmlfdG9fc3RyaW5nKHVyaSwg
RkFMU0UpOworICAgIENTdHJpbmcgcmV0ID0gdXJpU3RyaW5nOworICAgIGdfZnJlZSh1cmlTdHJp
bmcpOworICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViNzM0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0U2VydmVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgRVdLMlVuaXRUZXN0U2VydmVyX2gKKyNkZWZpbmUgRVdLMlVuaXRUZXN0U2VydmVyX2gK
KworI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworY2xhc3MgRVdLMlVuaXRUZXN0U2VydmVyIHsKK3B1YmxpYzoKKworICAgIEVXSzJVbml0
VGVzdFNlcnZlcigpOworICAgIHZpcnR1YWwgfkVXSzJVbml0VGVzdFNlcnZlcigpOworCisgICAg
U291cFVSSSogYmFzZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSSTsgfQorCisgICAgQ1N0
cmluZyBnZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OworICAgIHZvaWQgcnVu
KFNvdXBTZXJ2ZXJDYWxsYmFjayk7CisKK3ByaXZhdGU6CisgICAgU291cFNlcnZlciogbV9zb3Vw
U2VydmVyOworICAgIFNvdXBVUkkqIG1fYmFzZVVSSTsKK307CisKKyNlbmRpZiAvLyBFV0syVW5p
dFRlc3RTZXJ2ZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTg2NjhjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tp
ZV9tYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oIgorI2luY2x1
ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4
dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25z
dCBjaGFyIEZJUlNUX1BBUlRZX0RPTUFJTltdID0gIjEyNy4wLjAuMSI7CitzdGF0aWMgY29uc3Qg
Y2hhciBUSElSRF9QQVJUWV9ET01BSU5bXSA9ICJsb2NhbGhvc3QiOworc3RhdGljIGNvbnN0IGNo
YXIgVE1QX0NPT0tJRV9GSUxFX1RYVFtdID0gIi90bXAvY29va2llcy50eHQiOworc3RhdGljIGNv
bnN0IGNoYXIgVE1QX0NPT0tJRV9GSUxFX1NRTElURVtdID0gIi90bXAvY29va2llcy5kYiI7Citz
dGF0aWMgY29uc3QgY2hhciBJTkRFWF9IVE1MX1NUUklOR1tdID0KKyAgICAiPGh0bWw+PGJvZHk+
IgorICAgICIgPHA+RUZMV2ViS2l0MiBDb29raWUgTWFuYWdlciB0ZXN0PC9wPiIKKyAgICAiIDxp
bWcgc3JjPSdodHRwOi8vbG9jYWxob3N0OiV1L2ltYWdlLnBuZycgd2lkdGg9NSBoZWlnaHQ9NT48
L2ltZz4iCisgICAgIjwvYm9keT48L2h0bWw+IjsKKworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAg
aWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBpZiAoIXN0cmNtcChwYXRoLCAiL2luZGV4Lmh0
bWwiKSkgeworICAgICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7
CisgICAgICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCBJTkRFWF9IVE1MX1NU
UklORywgc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUi
LCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgZWluYV9zdHJidWZf
c3RyaW5nX3N0ZWFsKGJ1ZmZlciksIGVpbmFfc3RyYnVmX2xlbmd0aF9nZXQoYnVmZmVyKSk7Cisg
ICAgICAgIGVpbmFfc3RyYnVmX3N0cmluZ19mcmVlKGJ1ZmZlcik7CisgICAgfSBlbHNlIGlmICgh
c3RyY21wKHBhdGgsICIvaW1hZ2UucG5nIikpCisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJz
X3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiYmF6PXF1
eDsgTWF4LUFnZT02MCIpOworICAgIGVsc2UKKyAgICAgICAgRkFJTCgpOworICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCitzdGF0aWMg
dm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9s
aWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBBU1NF
UlQoIWVycm9yKTsKKyAgICBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19j
YXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeSo+KGV2ZW50X2luZm8pOworICAgICpyZXQgPSBw
b2xpY3k7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworc3RhdGljIEV3a19Db29r
aWVfQWNjZXB0X1BvbGljeSBnZXRBY2NlcHRQb2xpY3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5h
Z2VyKQoreworICAgIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3kgPSBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfQUxXQVlTOworICAgIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2Nl
cHRfcG9saWN5X2dldChtYW5hZ2VyLCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjaywgJnBvbGljeSk7
CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKwor
c3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhv
c3RuYW1lcywgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAg
QVNTRVJUKCFlcnJvcik7CisKKyAgICBFaW5hX0xpc3QqKiByZXQgPSBzdGF0aWNfY2FzdDxFaW5h
X0xpc3QqKj4oZXZlbnRfaW5mbyk7CisgICAgRWluYV9MaXN0KiBsOworICAgIHZvaWQqIGRhdGE7
CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0goaG9zdG5hbWVzLCBsLCBkYXRhKQorICAgICAgICAqcmV0
ID0gZWluYV9saXN0X2FwcGVuZCgqcmV0LCBlaW5hX3N0cmluZ3NoYXJlX3JlZihzdGF0aWNfY2Fz
dDxjaGFyKj4oZGF0YSkpKTsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCitzdGF0
aWMgRWluYV9MaXN0KiBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhFd2tfQ29va2llX01hbmFnZXIq
IG1hbmFnZXIpCit7CisgICAgRWluYV9MaXN0KiByZXQgPSAwOworICAgIGV3a19jb29raWVfbWFu
YWdlcl9hc3luY19ob3N0bmFtZXNfd2l0aF9jb29raWVzX2dldChtYW5hZ2VyLCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llc0NhbGxiYWNrLCAmcmV0KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4o
KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBmcmVlSG9zdE5hbWVzKEVpbmFf
TGlzdCogaG9zdG5hbWVzKQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUo
aG9zdG5hbWVzLCBkYXRhKQorICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzdGF0aWNfY2Fz
dDxjaGFyKj4oZGF0YSkpOworfQorCitzdGF0aWMgaW50IGNvdW50SG9zdG5hbWVzV2l0aENvb2tp
ZXMoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEVpbmFfTGlzdCogaG9zdG5h
bWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMobWFuYWdlcik7CisgICAgaW50IGNvdW50ID0g
ZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyk7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMp
OworICAgIHJldHVybiBjb3VudDsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19j
b29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5KQoreworICAgIGdfdHlwZV9pbml0KCk7CisgICAg
ZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCk7CisKKyAgICBFV0syVW5pdFRlc3RTZXJ2
ZXIqIGh0dHBTZXJ2ZXIgPSBuZXcgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgaHR0cFNlcnZl
ci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2ll
TWFuYWdlciA9IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZh
dWx0X2dldCgpKTsKKyAgICBBU1NFUlQoY29va2llTWFuYWdlcik7CisKKyAgICAvLyBEZWZhdWx0
IHBvbGljeSBpcyBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkuCisgICAg
QVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX05PX1RISVJEX1BBUlRZKTsKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICBFaW5hX0xpc3QqIGhv
c3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFT
U0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7CisgICAgQVNTRVJUX1NUUkVR
KHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9Q
QVJUWV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICBld2tfY29v
a2llX21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIENoYW5n
ZSBwb2xpY3kgdG8gRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUworICAgIGV3a19jb29r
aWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tp
ZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBsb2FkVXJs
U3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisK
KyAgICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsK
KyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIEFTU0VS
VF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0bmFtZXMsIDApKSwg
RklSU1RfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+
KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAxKSksIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAg
ZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVz
X2NsZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09P
S0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3Bv
bGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSKTsK
KyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0
bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBkZWxldGUgaHR0cFNl
cnZlcjsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb29raWVfbWFuYWdlcl9j
b29raWVzX2RlbGV0ZSkKK3sKKyAgICBnX3R5cGVfaW5pdCgpOworICAgIGVjb3JlX21haW5fbG9v
cF9nbGliX2ludGVncmF0ZSgpOworCisgICAgRVdLMlVuaXRUZXN0U2VydmVyKiBodHRwU2VydmVy
ID0gbmV3IEVXSzJVbml0VGVzdFNlcnZlcigpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJD
YWxsYmFjayk7CisKKyAgICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tf
Y29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7Cisg
ICAgQVNTRVJUKGNvb2tpZU1hbmFnZXIpOworCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdB
WVMpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEVpbmFfTGlzdCog
aG9zdG5hbWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAg
QVNTRVJUX0VRKGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpLCAyKTsKKyAgICBmcmVlSG9zdE5h
bWVzKGhvc3RuYW1lcyk7CisKKyAgICAvLyBEZWxldGUgZmlyc3QgcGFydHkgY29va2llCisgICAg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlciwg
RklSU1RfUEFSVFlfRE9NQUlOKTsKKyAgICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3Ru
YW1lcyksIDEpOworICAgIEFTU0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0
X250aChob3N0bmFtZXMsIDApKSwgVEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBmcmVlSG9zdE5h
bWVzKGhvc3RuYW1lcyk7CisKKyAgICAvLyBEZWxldGUgdGhpcmQgcGFydHkgY29va2llCisgICAg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2hvc3RuYW1lX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlciwg
VEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICAvLyBHZXQgYWxsIGNvb2tpZXMgYWdhaW4K
KyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIp
LmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2ll
TWFuYWdlciksIDIpOworCisgICAgLy8gQ2xlYXIgYWxsIGNvb2tpZXMKKyAgICBld2tfY29va2ll
X21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoY291
bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBkZWxldGUg
aHR0cFNlcnZlcjsKK30KKworc3RhdGljIHZvaWQgY2xlYW5VcENvb2tpZUZpbGVzKCkKK3sKKyAg
ICB1bmxpbmsoVE1QX0NPT0tJRV9GSUxFX1RYVCk7CisgICAgdW5saW5rKFRNUF9DT09LSUVfRklM
RV9TUUxJVEUpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9tYW5h
Z2VyX3Blcm1hbmVudF9zdG9yYWdlKQoreworICAgIGdfdHlwZV9pbml0KCk7CisgICAgZWNvcmVf
bWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCk7CisKKyAgICBFV0syVW5pdFRlc3RTZXJ2ZXIqIGh0
dHBTZXJ2ZXIgPSBuZXcgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgaHR0cFNlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKKworICAgIC8vIGluaXRpYWwgY2xlYW4gdXAKKyAgICBjbGVhblVw
Q29va2llRmlsZXMoKTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFuYWdlciA9
IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
KTsKKyAgICBBU1NFUlQoY29va2llTWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJf
YWNjZXB0X3BvbGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZ
X0FMV0FZUyk7CisgICAgQVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwg
RVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2Ug
dXNpbmcgYSBuZXcgZmlsZS4KKyAgICBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9y
YWdlX3NldChjb29raWVNYW5hZ2VyLCBUTVBfQ09PS0lFX0ZJTEVfVFhULCBFV0tfQ09PS0lFX1BF
UlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNv
dW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDIpOworCisgICAgLy8gU1FM
aXRlIHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KKyAgICBld2tfY29va2llX21hbmFnZXJfcGVy
c2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5hZ2VyLCBUTVBfQ09PS0lFX0ZJTEVfU1FMSVRF
LCBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUpOworICAgIEFTU0VSVF9FUShj
b3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIGxvYWRV
cmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsK
KyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwg
Mik7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYW4gZXhpc3RpbmcgZmlsZS4KKyAgICBl
d2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5hZ2VyLCBU
TVBfQ09PS0lFX0ZJTEVfVFhULCBFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsK
KyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwg
Mik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7
CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciks
IDApOworCisgICAgLy8gU1FMaXRlIHN0b3JhZ2Ugd2l0aCBhbiBleGlzdGluZyBmaWxlLgorICAg
IGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIs
IFRNUF9DT09LSUVfRklMRV9TUUxJVEUsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NR
TElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFu
YWdlciksIDIpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKGNvb2tpZU1h
bmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1h
bmFnZXIpLCAwKTsKKworICAgIC8vIEZpbmFsIGNsZWFuIHVwCisgICAgY2xlYW5VcENvb2tpZUZp
bGVzKCk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153188</attachid>
            <date>2012-07-18 23:46:54 -0700</date>
            <delta_ts>2012-07-19 07:34:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookiemanager_utests.patch</filename>
            <type>text/plain</type>
            <size>18215</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYzMyNjk2Li41ZGExYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcg
QEAKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CisKICAgICAgICAgW0VGTF1bV0syXSBFRkwgc2hvdWxkIHVzZSBEb3dubG9hZFNvdXAgaW5z
dGVhZCBvZiBkZWZpbmluZyBEb3dubG9hZEVmbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2MDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA5N2Y3MDk1Li43NDk5Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNCw2ICs0
LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdTCiAgICAgJHtFRkxERVBTX0xERkxB
R1N9CiAgICAgJHtFVkFTX0xERkxBR1N9CiAgICAgJHtMSUJTT1VQMjRfTERGTEFHU30KKyAgICAk
e0NBSVJPX0xERkxBR1N9CiApCiAKIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwpAQCAtMTk3
LDYgKzE5OCw3IEBAIFNFVChFV0syVW5pdFRlc3RzX0xJQlJBUklFUwogICAgICR7RUNPUkVfTElC
UkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJRVN9CiAgICAgJHtFVkFTX0xJQlJBUklF
U30KKyAgICAke0xJQlNPVVAyNF9MSUJSQVJJRVN9CiAgICAgZ3Rlc3QKICkKIApAQCAtMjE5LDYg
KzIyMSw3IEBAIEFERF9MSUJSQVJZKGV3azJVbml0VGVzdFV0aWxzCiAgICAgJHtXRUJLSVQyX0VG
TF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAogICAgICR7V0VC
S0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
Y3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RNYWluLmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0U2VydmVyLmNwcAogKQogCiBUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdrMlVuaXRU
ZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCkBAIC0yMjYsNiArMjI5LDcgQEAg
VEFSR0VUX0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19M
SUJSQVJJRVN9KQogIyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0byBiZSBzdWZm
aXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9t
IHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgogU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKKyAg
ICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfdmlldwogKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCmluZGV4IDQ0MmM0ZjcuLmFiNDdhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0xMDcsNyArMTA3LDcg
QEAgRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3
a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwKIC8qKgogICogU2V0IEBhIHBvbGljeSBhcyB0aGUg
Y29va2llIGFjY2VwdGFuY2UgcG9saWN5IGZvciBAYSBtYW5hZ2VyLgogICoKLSAqIEJ5IGRlZmF1
bHQsIGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMg
YXJlIGFjY2VwdGVkIG9ubHkgZm9yIHRoZSBtYWluIHBhZ2UuCiAgKgogICogQHBhcmFtIG1hbmFn
ZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHVwZGF0ZS4KICAqIEBwYXJhbSBwb2xpY3kgYSAjRXdr
X0Nvb2tpZV9BY2NlcHRfUG9saWN5CkBAIC0xMTgsNyArMTE4LDcgQEAgRUFQSSB2b2lkIGV3a19j
b29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChFd2tfQ29va2llX01hbmFnZXIgKm1hbmFn
ZXIsIEV3a18KIC8qKgogICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBjb29raWUgYWNjZXB0YW5j
ZSBwb2xpY3kgb2YgQGEgbWFuYWdlci4KICAqCi0gKiBCeSBkZWZhdWx0LCBjb29raWVzIGFyZSBh
bHdheXMgYWNjZXB0ZWQuCisgKiBCeSBkZWZhdWx0LCBjb29raWVzIGFyZSBhY2NlcHRlZCBvbmx5
IGZvciB0aGUgbWFpbiBwYWdlLgogICoKICAqIEBwYXJhbSBtYW5hZ2VyIFRoZSBjb29raWUgbWFu
YWdlciB0byBxdWVyeS4KICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aGVuIHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2IwZTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLMlVuaXRUZXN0U2VydmVyLmgiCisKK0VXSzJV
bml0VGVzdFNlcnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKCkKK3sKKyAgICBTb3VwQWRkcmVzcyog
YWRkcmVzcyA9IHNvdXBfYWRkcmVzc19uZXcoIjEyNy4wLjAuMSIsIFNPVVBfQUREUkVTU19BTllf
UE9SVCk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfc3luYyhhZGRyZXNzLCAwKTsKKworICAg
IG1fc291cFNlcnZlciA9IHNvdXBfc2VydmVyX25ldyhTT1VQX1NFUlZFUl9JTlRFUkZBQ0UsIGFk
ZHJlc3MsIE5VTEwpOworICAgIG1fYmFzZVVSSSA9IHNvdXBfdXJpX25ldygiaHR0cDovLzEyNy4w
LjAuMS8iKTsKKyAgICBzb3VwX3VyaV9zZXRfcG9ydChtX2Jhc2VVUkksIHNvdXBfc2VydmVyX2dl
dF9wb3J0KG1fc291cFNlcnZlcikpOworICAgIGdfb2JqZWN0X3VucmVmKGFkZHJlc3MpOworfQor
CitFV0syVW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIoKQoreworICAgIHNvdXBf
dXJpX2ZyZWUobV9iYXNlVVJJKTsKKyAgICBnX29iamVjdF91bnJlZihtX3NvdXBTZXJ2ZXIpOwor
fQorCit2b2lkIEVXSzJVbml0VGVzdFNlcnZlcjo6cnVuKFNvdXBTZXJ2ZXJDYWxsYmFjayBzZXJ2
ZXJDYWxsYmFjaykKK3sKKyAgICBzb3VwX3NlcnZlcl9ydW5fYXN5bmMobV9zb3VwU2VydmVyKTsK
KyAgICBzb3VwX3NlcnZlcl9hZGRfaGFuZGxlcihtX3NvdXBTZXJ2ZXIsIDAsIHNlcnZlckNhbGxi
YWNrLCAwLCAwKTsKK30KKworQ1N0cmluZyBFV0syVW5pdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBh
dGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKK3sKKyAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3Vy
aV9uZXdfd2l0aF9iYXNlKG1fYmFzZVVSSSwgcGF0aCk7CisgICAgY2hhciogdXJpU3RyaW5nID0g
c291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpOworICAgIENTdHJpbmcgcmV0ID0gdXJpU3Ry
aW5nOworICAgIGZyZWUodXJpU3RyaW5nKTsKKyAgICBzb3VwX3VyaV9mcmVlKHVyaSk7CisKKyAg
ICByZXR1cm4gcmV0OworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdFNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYjE0NmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEVXSzJVbml0VGVzdFNlcnZlcl9oCisjZGVmaW5l
IEVXSzJVbml0VGVzdFNlcnZlcl9oCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK2NsYXNzIEVXSzJVbml0VGVzdFNlcnZlciB7Citw
dWJsaWM6CisgICAgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgdmlydHVhbCB+RVdLMlVuaXRU
ZXN0U2VydmVyKCk7CisKKyAgICBTb3VwVVJJKiBiYXNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9i
YXNlVVJJOyB9CisKKyAgICBDU3RyaW5nIGdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkg
Y29uc3Q7CisgICAgdm9pZCBydW4oU291cFNlcnZlckNhbGxiYWNrKTsKKworcHJpdmF0ZToKKyAg
ICBTb3VwU2VydmVyKiBtX3NvdXBTZXJ2ZXI7CisgICAgU291cFVSSSogbV9iYXNlVVJJOworfTsK
KworI2VuZGlmIC8vIEVXSzJVbml0VGVzdFNlcnZlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29v
a2llX21hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ODY2
OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0U2VydmVyLmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgor
I2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9u
bWVudDsKKworc3RhdGljIGNvbnN0IGNoYXIgRklSU1RfUEFSVFlfRE9NQUlOW10gPSAiMTI3LjAu
MC4xIjsKK3N0YXRpYyBjb25zdCBjaGFyIFRISVJEX1BBUlRZX0RPTUFJTltdID0gImxvY2FsaG9z
dCI7CitzdGF0aWMgY29uc3QgY2hhciBUTVBfQ09PS0lFX0ZJTEVfVFhUW10gPSAiL3RtcC9jb29r
aWVzLnR4dCI7CitzdGF0aWMgY29uc3QgY2hhciBUTVBfQ09PS0lFX0ZJTEVfU1FMSVRFW10gPSAi
L3RtcC9jb29raWVzLmRiIjsKK3N0YXRpYyBjb25zdCBjaGFyIElOREVYX0hUTUxfU1RSSU5HW10g
PQorICAgICI8aHRtbD48Ym9keT4iCisgICAgIiA8cD5FRkxXZWJLaXQyIENvb2tpZSBNYW5hZ2Vy
IHRlc3Q8L3A+IgorICAgICIgPGltZyBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6JXUvaW1hZ2UucG5n
JyB3aWR0aD01IGhlaWdodD01PjwvaW1nPiIKKyAgICAiPC9ib2R5PjwvaHRtbD4iOworCitzdGF0
aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQq
LCBncG9pbnRlcikKK3sKKyAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dF
VCkgeworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRV
U19OT1RfSU1QTEVNRU5URUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgIGlmICghc3Ry
Y21wKHBhdGgsICIvaW5kZXguaHRtbCIpKSB7CisgICAgICAgIEVpbmFfU3RyYnVmKiBidWZmZXIg
PSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKyAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50Zihi
dWZmZXIsIElOREVYX0hUTUxfU1RSSU5HLCBzb3VwX3NlcnZlcl9nZXRfcG9ydChzZXJ2ZXIpKTsK
KyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJmb289YmFyOyBNYXgtQWdlPTYwIik7CisgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9UQUtFLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfc3RlYWwoYnVmZmVyKSwgZWluYV9zdHJidWZfbGVu
Z3RoX2dldChidWZmZXIpKTsKKyAgICAgICAgZWluYV9zdHJidWZfc3RyaW5nX2ZyZWUoYnVmZmVy
KTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAocGF0aCwgIi9pbWFnZS5wbmciKSkKKyAgICAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAi
U2V0LUNvb2tpZSIsICJiYXo9cXV4OyBNYXgtQWdlPTYwIik7CisgICAgZWxzZQorICAgICAgICBG
QUlMKCk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKEV3a19Db29r
aWVfQWNjZXB0X1BvbGljeSBwb2xpY3ksIEV3a19XZWJfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVu
dF9pbmZvKQoreworICAgIEFTU0VSVCghZXJyb3IpOworICAgIEV3a19Db29raWVfQWNjZXB0X1Bv
bGljeSogcmV0ID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Kj4oZXZlbnRf
aW5mbyk7CisgICAgKnJldCA9IHBvbGljeTsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwor
fQorCitzdGF0aWMgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGdldEFjY2VwdFBvbGljeShFd2tf
Q29va2llX01hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5
IHBvbGljeSA9IEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVM7CisgICAgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KG1hbmFnZXIsIGdldEFjY2VwdFBvbGlj
eUNhbGxiYWNrLCAmcG9saWN5KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBy
ZXR1cm4gcG9saWN5OworfQorCitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0Nh
bGxiYWNrKEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCog
ZXZlbnRfaW5mbykKK3sKKyAgICBBU1NFUlQoIWVycm9yKTsKKworICAgIEVpbmFfTGlzdCoqIHJl
dCA9IHN0YXRpY19jYXN0PEVpbmFfTGlzdCoqPihldmVudF9pbmZvKTsKKyAgICBFaW5hX0xpc3Qq
IGw7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChob3N0bmFtZXMsIGws
IGRhdGEpCisgICAgICAgICpyZXQgPSBlaW5hX2xpc3RfYXBwZW5kKCpyZXQsIGVpbmFfc3RyaW5n
c2hhcmVfcmVmKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSkpOworICAgIGVjb3JlX21haW5fbG9v
cF9xdWl0KCk7Cit9CisKK3N0YXRpYyBFaW5hX0xpc3QqIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBFaW5hX0xpc3QqIHJldCA9IDA7
CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2hvc3RuYW1lc193aXRoX2Nvb2tpZXNfZ2V0
KG1hbmFnZXIsIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2ssICZyZXQpOworICAgIGVj
b3JlX21haW5fbG9vcF9iZWdpbigpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lk
IGZyZWVIb3N0TmFtZXMoRWluYV9MaXN0KiBob3N0bmFtZXMpCit7CisgICAgdm9pZCogZGF0YTsK
KyAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMsIGRhdGEpCisgICAgICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSk7Cit9CisKK3N0YXRpYyBpbnQgY291
bnRIb3N0bmFtZXNXaXRoQ29va2llcyhFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpCit7Cisg
ICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhtYW5hZ2Vy
KTsKKyAgICBpbnQgY291bnQgPSBlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKTsKKyAgICBmcmVl
SG9zdE5hbWVzKGhvc3RuYW1lcyk7CisgICAgcmV0dXJuIGNvdW50OworfQorCitURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3kpCit7CisgICAg
Z190eXBlX2luaXQoKTsKKyAgICBlY29yZV9tYWluX2xvb3BfZ2xpYl9pbnRlZ3JhdGUoKTsKKwor
ICAgIEVXSzJVbml0VGVzdFNlcnZlciogaHR0cFNlcnZlciA9IG5ldyBFV0syVW5pdFRlc3RTZXJ2
ZXIoKTsKKyAgICBodHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgRXdrX0Nv
b2tpZV9NYW5hZ2VyKiBjb29raWVNYW5hZ2VyID0gZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJf
Z2V0KGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgIEFTU0VSVChjb29raWVNYW5hZ2Vy
KTsKKworICAgIC8vIERlZmF1bHQgcG9saWN5IGlzIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9O
T19USElSRF9QQVJUWS4KKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFn
ZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkpOworICAgIGxvYWRV
cmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsK
KworICAgIEVpbmFfTGlzdCogaG9zdG5hbWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29v
a2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpLCAx
KTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+KGVpbmFfbGlzdF9udGgoaG9z
dG5hbWVzLCAwKSksIEZJUlNUX1BBUlRZX0RPTUFJTik7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0
bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKGNvb2tpZU1hbmFn
ZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lf
QUxXQVlTCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lfc2V0KGNvb2tpZU1h
bmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworICAgIEFTU0VSVF9FUShn
ZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9B
TFdBWVMpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRl
eC5odG1sIikuZGF0YSgpKTsKKworICAgIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5h
bWVzKSwgMik7CisgICAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3Rf
bnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9QQVJUWV9ET01BSU4pOworICAgIEFTU0VSVF9TVFJF
UShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0bmFtZXMsIDEpKSwgVEhJUkRf
UEFSVFlfRE9NQUlOKTsKKyAgICBmcmVlSG9zdE5hbWVzKGhvc3RuYW1lcyk7CisgICAgZXdrX2Nv
b2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7CisKKyAgICAvLyBDaGFu
Z2UgcG9saWN5IHRvIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUgorICAgIGV3a19jb29r
aWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2ll
TWFuYWdlciksIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUik7CisgICAgbG9hZFVybFN5
bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAg
IEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsK
KworICAgIGRlbGV0ZSBodHRwU2VydmVyOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfZGVsZXRlKQoreworICAgIGdfdHlwZV9pbml0KCk7
CisgICAgZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCk7CisKKyAgICBFV0syVW5pdFRl
c3RTZXJ2ZXIqIGh0dHBTZXJ2ZXIgPSBuZXcgRVdLMlVuaXRUZXN0U2VydmVyKCk7CisgICAgaHR0
cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciog
Y29va2llTWFuYWdlciA9IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4
dF9kZWZhdWx0X2dldCgpKTsKKyAgICBBU1NFUlQoY29va2llTWFuYWdlcik7CisKKyAgICBld2tf
Y29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJ
RV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisgICAgQVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShj
b29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisKKyAgICBs
b2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEo
KSk7CisgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhj
b29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyks
IDIpOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKworICAgIC8vIERlbGV0ZSBmaXJz
dCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2llX21hbmFnZXJfaG9zdG5hbWVfY29va2llc19j
bGVhcihjb29raWVNYW5hZ2VyLCBGSVJTVF9QQVJUWV9ET01BSU4pOworICAgIGhvc3RuYW1lcyA9
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShl
aW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7CisgICAgQVNTRVJUX1NUUkVRKHN0YXRpY19j
YXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBUSElSRF9QQVJUWV9ET01B
SU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKworICAgIC8vIERlbGV0ZSB0aGly
ZCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2llX21hbmFnZXJfaG9zdG5hbWVfY29va2llc19j
bGVhcihjb29raWVNYW5hZ2VyLCBUSElSRF9QQVJUWV9ET01BSU4pOworICAgIEFTU0VSVF9FUShj
b3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIC8vIEdl
dCBhbGwgY29va2llcyBhZ2FpbgorICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisKKyAgICAvLyBDbGVhciBhbGwgY29v
a2llcworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIp
OworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIp
LCAwKTsKKworICAgIGRlbGV0ZSBodHRwU2VydmVyOworfQorCitzdGF0aWMgdm9pZCBjbGVhblVw
Q29va2llRmlsZXMoKQoreworICAgIHVubGluayhUTVBfQ09PS0lFX0ZJTEVfVFhUKTsKKyAgICB1
bmxpbmsoVE1QX0NPT0tJRV9GSUxFX1NRTElURSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfY29va2llX21hbmFnZXJfcGVybWFuZW50X3N0b3JhZ2UpCit7CisgICAgZ190eXBl
X2luaXQoKTsKKyAgICBlY29yZV9tYWluX2xvb3BfZ2xpYl9pbnRlZ3JhdGUoKTsKKworICAgIEVX
SzJVbml0VGVzdFNlcnZlciogaHR0cFNlcnZlciA9IG5ldyBFV0syVW5pdFRlc3RTZXJ2ZXIoKTsK
KyAgICBodHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgLy8gaW5pdGlhbCBj
bGVhbiB1cAorICAgIGNsZWFuVXBDb29raWVGaWxlcygpOworCisgICAgRXdrX0Nvb2tpZV9NYW5h
Z2VyKiBjb29raWVNYW5hZ2VyID0gZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KGV3a19j
b250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgIEFTU0VSVChjb29raWVNYW5hZ2VyKTsKKworICAg
IGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tf
Q09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9s
aWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKwor
ICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBhIG5ldyBmaWxlLgorICAgIGV3a19jb29raWVfbWFu
YWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIFRNUF9DT09LSUVfRklM
RV9UWFQsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOworICAgIEFTU0VSVF9F
UShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIGxv
YWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgp
KTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2Vy
KSwgMik7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB1c2luZyBhIG5ldyBmaWxlLgorICAgIGV3
a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIFRN
UF9DT09LSUVfRklMRV9TUUxJVEUsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElU
RSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdl
ciksIDApOworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2lu
ZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBhbiBl
eGlzdGluZyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vf
c2V0KGNvb2tpZU1hbmFnZXIsIFRNUF9DT09LSUVfRklMRV9UWFQsIEVXS19DT09LSUVfUEVSU0lT
VEVOVF9TVE9SQUdFX1RFWFQpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKyAgICBld2tfY29va2llX21hbmFnZXJfY29va2llc19j
bGVhcihjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB3aXRoIGFu
IGV4aXN0aW5nIGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFn
ZV9zZXQoY29va2llTWFuYWdlciwgVE1QX0NPT0tJRV9GSUxFX1NRTElURSwgRVdLX0NPT0tJRV9Q
RVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nv
b2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOworCisgICAgLy8gRmluYWwgY2xlYW4gdXAK
KyAgICBjbGVhblVwQ29va2llRmlsZXMoKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153258</attachid>
            <date>2012-07-19 07:34:16 -0700</date>
            <delta_ts>2012-07-20 00:33:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookiemanager_utests.patch</filename>
            <type>text/plain</type>
            <size>18966</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjNTI5NzIyLi5iYWE3NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CiAyMDEyLTA3LTE5ICBab2x0YW4gTnl1bCAgPHpvbHRhbi5ueXVsQGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXSzJdIFVzaW5nIGRpZmZlcmVudCBjYWNoZSBkaXJlY3RvcnkgZm9yIGVhY2gg
V1RSIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggOTdmNzA5NS4uMjI4NzQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEsNCArMSw1IEBACiBMSVNUKEFQUEVO
RCBXZWJLaXQyX0xJTktfRkxBR1MKKyAgICAke0NBSVJPX0xERkxBR1N9CiAgICAgJHtFQ09SRV9Y
X0xERkxBR1N9CiAgICAgJHtFREpFX0xERkxBR1N9CiAgICAgJHtFRkxERVBTX0xERkxBR1N9CkBA
IC0xOTcsNiArMTk4LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfTElCUkFSSUVTCiAgICAgJHtFQ09S
RV9MSUJSQVJJRVN9CiAgICAgJHtFQ09SRV9FVkFTX0xJQlJBUklFU30KICAgICAke0VWQVNfTElC
UkFSSUVTfQorICAgICR7TElCU09VUDI0X0xJQlJBUklFU30KICAgICBndGVzdAogKQogCkBAIC0y
MTksNiArMjIxLDcgQEAgQUREX0xJQlJBUlkoZXdrMlVuaXRUZXN0VXRpbHMKICAgICAke1dFQktJ
VDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCiAgICAg
JHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9u
bWVudC5jcHAKICAgICAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdE1haW4uY3BwCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCiApCiAKIFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2sy
VW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSkKQEAgLTIyNiw2ICsyMjks
NyBAQCBUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdrMlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRl
c3RzX0xJQlJBUklFU30pCiAjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJl
IHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2UgaXQKICMgd2lsbCBjbGFzaCB3aXRoIHRlc3Rz
IGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUuCiBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklF
UworICAgIHRlc3RfZXdrMl9jb29raWVfbWFuYWdlcgogICAgIHRlc3RfZXdrMl92aWV3CiApCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmgKaW5kZXggNDQyYzRmNy4uYWI0N2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKQEAgLTEwNyw3ICsx
MDcsNyBAQCBFQVBJIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9z
ZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5hZ2VyLAogLyoqCiAgKiBTZXQgQGEgcG9saWN5IGFz
IHRoZSBjb29raWUgYWNjZXB0YW5jZSBwb2xpY3kgZm9yIEBhIG1hbmFnZXIuCiAgKgotICogQnkg
ZGVmYXVsdCwgY29va2llcyBhcmUgYWx3YXlzIGFjY2VwdGVkLgorICogQnkgZGVmYXVsdCwgY29v
a2llcyBhcmUgYWNjZXB0ZWQgb25seSBmb3IgdGhlIG1haW4gcGFnZS4KICAqCiAgKiBAcGFyYW0g
bWFuYWdlciBUaGUgY29va2llIG1hbmFnZXIgdG8gdXBkYXRlLgogICogQHBhcmFtIHBvbGljeSBh
ICNFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKQEAgLTExOCw3ICsxMTgsNyBAQCBFQVBJIHZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lfc2V0KEV3a19Db29raWVfTWFuYWdlciAq
bWFuYWdlciwgRXdrXwogLyoqCiAgKiBBc3luY2hyb25vdXNseSBnZXQgdGhlIGNvb2tpZSBhY2Nl
cHRhbmNlIHBvbGljeSBvZiBAYSBtYW5hZ2VyLgogICoKLSAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMg
YXJlIGFsd2F5cyBhY2NlcHRlZC4KKyAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFjY2VwdGVk
IG9ubHkgZm9yIHRoZSBtYWluIHBhZ2UuCiAgKgogICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tp
ZSBtYW5hZ2VyIHRvIHF1ZXJ5LgogICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdoZW4gdGhlIHBvbGljeSBpcyByZWNlaXZlZCBvciBhbiBlcnJvciBvY2N1cmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKaW5kZXggZDgxMDEw
Ni4uMzYxYzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogZXh0ZXJu
IEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OwpAQCAt
NTAsNiArNTEsMTEgQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiB7CiAgICAgQVNT
RVJUX0dUKGVjb3JlX2V2YXNfaW5pdCgpLCAwKTsKIAorICAgIC8vIGdsaWIgc3VwcG9ydCAoZm9y
IGxpYnNvdXApLgorICAgIGdfdHlwZV9pbml0KCk7CisgICAgaWYgKCFlY29yZV9tYWluX2xvb3Bf
Z2xpYl9pbnRlZ3JhdGUoKSkKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBHbGli
IG1haW4gbG9vcCBpbnRlZ3JhdGlvbiBpcyBub3Qgd29ya2luZy4gU29tZSB0ZXN0cyBtYXkgZmFp
bC4iKTsKKwogICAgIHVuc2lnbmVkIGludCB3aWR0aCA9IGVudmlyb25tZW50LT5kZWZhdWx0V2lk
dGgoKTsKICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZW52aXJvbm1lbnQtPmRlZmF1bHRIZWln
aHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OTI1MTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFV0syVW5pdFRlc3RT
ZXJ2ZXIuaCIKKworRVdLMlVuaXRUZXN0U2VydmVyOjpFV0syVW5pdFRlc3RTZXJ2ZXIoKQorewor
ICAgIFNvdXBBZGRyZXNzKiBhZGRyZXNzID0gc291cF9hZGRyZXNzX25ldygiMTI3LjAuMC4xIiwg
U09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9zeW5jKGFk
ZHJlc3MsIDApOworCisgICAgbV9zb3VwU2VydmVyID0gc291cF9zZXJ2ZXJfbmV3KFNPVVBfU0VS
VkVSX0lOVEVSRkFDRSwgYWRkcmVzcywgTlVMTCk7CisgICAgbV9iYXNlVVJJID0gc291cF91cmlf
bmV3KCJodHRwOi8vMTI3LjAuMC4xLyIpOworICAgIHNvdXBfdXJpX3NldF9wb3J0KG1fYmFzZVVS
SSwgc291cF9zZXJ2ZXJfZ2V0X3BvcnQobV9zb3VwU2VydmVyKSk7CisgICAgZ19vYmplY3RfdW5y
ZWYoYWRkcmVzcyk7Cit9CisKK0VXSzJVbml0VGVzdFNlcnZlcjo6fkVXSzJVbml0VGVzdFNlcnZl
cigpCit7CisgICAgc291cF91cmlfZnJlZShtX2Jhc2VVUkkpOworICAgIGdfb2JqZWN0X3VucmVm
KG1fc291cFNlcnZlcik7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0U2VydmVyOjpydW4oU291cFNl
cnZlckNhbGxiYWNrIHNlcnZlckNhbGxiYWNrKQoreworICAgIHNvdXBfc2VydmVyX3J1bl9hc3lu
YyhtX3NvdXBTZXJ2ZXIpOworICAgIHNvdXBfc2VydmVyX2FkZF9oYW5kbGVyKG1fc291cFNlcnZl
ciwgMCwgc2VydmVyQ2FsbGJhY2ssIDAsIDApOworfQorCitDU3RyaW5nIEVXSzJVbml0VGVzdFNl
cnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAoreworICAgIFNvdXBV
UkkqIHNvdXBVUkkgPSBzb3VwX3VyaV9uZXdfd2l0aF9iYXNlKG1fYmFzZVVSSSwgcGF0aCk7Cisg
ICAgY2hhciogdXJpID0gc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKTsKKyAgICBD
U3RyaW5nIHVyaVN0cmluZyA9IHVyaTsKKyAgICBmcmVlKHVyaSk7CisgICAgc291cF91cmlfZnJl
ZShzb3VwVVJJKTsKKworICAgIHJldHVybiB1cmlTdHJpbmc7Cit9CisKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uM2ViMTQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVy
LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgRVdLMlVu
aXRUZXN0U2VydmVyX2gKKyNkZWZpbmUgRVdLMlVuaXRUZXN0U2VydmVyX2gKKworI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworY2xhc3Mg
RVdLMlVuaXRUZXN0U2VydmVyIHsKK3B1YmxpYzoKKyAgICBFV0syVW5pdFRlc3RTZXJ2ZXIoKTsK
KyAgICB2aXJ0dWFsIH5FV0syVW5pdFRlc3RTZXJ2ZXIoKTsKKworICAgIFNvdXBVUkkqIGJhc2VV
UkkoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkk7IH0KKworICAgIENTdHJpbmcgZ2V0VVJJRm9y
UGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdDsKKyAgICB2b2lkIHJ1bihTb3VwU2VydmVyQ2Fs
bGJhY2spOworCitwcml2YXRlOgorICAgIFNvdXBTZXJ2ZXIqIG1fc291cFNlcnZlcjsKKyAgICBT
b3VwVVJJKiBtX2Jhc2VVUkk7Cit9OworCisjZW5kaWYgLy8gRVdLMlVuaXRUZXN0U2VydmVyX2gK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODY4MTViNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAK
QEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNs
dWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5o
PgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0Owor
dXNpbmcgbmFtZXNwYWNlIFdURjsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBl
bnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNoYXIgRklSU1RfUEFSVFlfRE9NQUlOW10gPSAi
MTI3LjAuMC4xIjsKK3N0YXRpYyBjb25zdCBjaGFyIFRISVJEX1BBUlRZX0RPTUFJTltdID0gImxv
Y2FsaG9zdCI7CitzdGF0aWMgY29uc3QgY2hhciBJTkRFWF9IVE1MX1NUUklOR1tdID0KKyAgICAi
PGh0bWw+PGJvZHk+IgorICAgICIgPHA+RUZMV2ViS2l0MiBDb29raWUgTWFuYWdlciB0ZXN0PC9w
PiIKKyAgICAiIDxpbWcgc3JjPSdodHRwOi8vbG9jYWxob3N0OiV1L2ltYWdlLnBuZycgd2lkdGg9
NSBoZWlnaHQ9NT48L2ltZz4iCisgICAgIjwvYm9keT48L2h0bWw+IjsKKworc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
Y29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50
ZXIpCit7CisgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAg
ICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lN
UExFTUVOVEVEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXBfbWVzc2FnZV9z
ZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBpZiAoIXN0cmNtcChwYXRo
LCAiL2luZGV4Lmh0bWwiKSkgeworICAgICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9z
dHJidWZfbmV3KCk7CisgICAgICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCBJ
TkRFWF9IVE1MX1NUUklORywgc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7CisgICAgICAg
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywg
IlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOworICAgICAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwg
ZWluYV9zdHJidWZfc3RyaW5nX3N0ZWFsKGJ1ZmZlciksIGVpbmFfc3RyYnVmX2xlbmd0aF9nZXQo
YnVmZmVyKSk7CisgICAgICAgIGVpbmFfc3RyYnVmX3N0cmluZ19mcmVlKGJ1ZmZlcik7CisgICAg
fSBlbHNlIGlmICghc3RyY21wKHBhdGgsICIvaW1hZ2UucG5nIikpCisgICAgICAgIHNvdXBfbWVz
c2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29r
aWUiLCAiYmF6PXF1eDsgTWF4LUFnZT02MCIpOworICAgIGVsc2UKKyAgICAgICAgRkFJTCgpOwor
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2Vw
dF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykK
K3sKKyAgICBBU1NFUlRfRkFMU0UoZXJyb3IpOworICAgIEV3a19Db29raWVfQWNjZXB0X1BvbGlj
eSogcmV0ID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Kj4oZXZlbnRfaW5m
byk7CisgICAgKnJldCA9IHBvbGljeTsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQor
CitzdGF0aWMgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGdldEFjY2VwdFBvbGljeShFd2tfQ29v
a2llX01hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBv
bGljeSA9IEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVM7CisgICAgZXdrX2Nvb2tpZV9t
YW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KG1hbmFnZXIsIGdldEFjY2VwdFBvbGljeUNh
bGxiYWNrLCAmcG9saWN5KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICByZXR1
cm4gcG9saWN5OworfQorCitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxi
YWNrKEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZl
bnRfaW5mbykKK3sKKyAgICBBU1NFUlRfRkFMU0UoZXJyb3IpOworCisgICAgRWluYV9MaXN0Kiog
cmV0ID0gc3RhdGljX2Nhc3Q8RWluYV9MaXN0Kio+KGV2ZW50X2luZm8pOworICAgIEVpbmFfTGlz
dCogbDsKKyAgICB2b2lkKiBkYXRhOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGhvc3RuYW1lcywg
bCwgZGF0YSkKKyAgICAgICAgKnJldCA9IGVpbmFfbGlzdF9hcHBlbmQoKnJldCwgZWluYV9zdHJp
bmdzaGFyZV9yZWYoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKSk7CisgICAgZWNvcmVfbWFpbl9s
b29wX3F1aXQoKTsKK30KKworc3RhdGljIEVpbmFfTGlzdCogZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEVpbmFfTGlzdCogcmV0ID0g
MDsKKyAgICBld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dpdGhfY29va2llc19n
ZXQobWFuYWdlciwgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjaywgJnJldCk7CisgICAg
ZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZv
aWQgZnJlZUhvc3ROYW1lcyhFaW5hX0xpc3QqIGhvc3RuYW1lcykKK3sKKyAgICB2b2lkKiBkYXRh
OworICAgIEVJTkFfTElTVF9GUkVFKGhvc3RuYW1lcywgZGF0YSkKKyAgICAgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKTsKK30KKworc3RhdGljIGludCBj
b3VudEhvc3RuYW1lc1dpdGhDb29raWVzKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sK
KyAgICBFaW5hX0xpc3QqIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKG1hbmFn
ZXIpOworICAgIGludCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpOworICAgIGZy
ZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK1RFU1RfRihF
V0syVW5pdFRlc3RCYXNlLCBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeSkKK3sKKyAg
ICBPd25QdHI8RVdLMlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVX
SzJVbml0VGVzdFNlcnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsK
KworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFuYWdlciA9IGV3a19jb250ZXh0X2Nv
b2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKKyAgICBBU1NFUlRf
VFJVRShjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIERlZmF1bHQgcG9saWN5IGlzIEVXS19DT09L
SUVfQUNDRVBUX1BPTElDWV9OT19USElSRF9QQVJUWS4KKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0
UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRf
UEFSVFkpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRl
eC5odG1sIikuZGF0YSgpKTsKKworICAgIEVpbmFfTGlzdCogaG9zdG5hbWVzID0gZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGVpbmFfbGlzdF9j
b3VudChob3N0bmFtZXMpLCAxKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+
KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAwKSksIEZJUlNUX1BBUlRZX0RPTUFJTik7CisgICAg
ZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVz
X2NsZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09P
S0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9w
b2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMp
OworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19DT09L
SUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKworICAgIGhvc3RuYW1lcyA9IGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5h
X2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMik7CisgICAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0
PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9QQVJUWV9ET01BSU4p
OworICAgIEFTU0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0
bmFtZXMsIDEpKSwgVEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBmcmVlSG9zdE5hbWVzKGhvc3Ru
YW1lcyk7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdl
cik7CisKKyAgICAvLyBDaGFuZ2UgcG9saWN5IHRvIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9O
RVZFUgorICAgIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5h
Z2VyLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIEFTU0VSVF9FUShnZXRB
Y2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZF
Uik7CisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0
bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
b2tpZU1hbmFnZXIpLCAwKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb29r
aWVfbWFuYWdlcl9jb29raWVzX2RlbGV0ZSkKK3sKKyAgICBPd25QdHI8RVdLMlVuaXRUZXN0U2Vy
dmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVzdFNlcnZlcik7CisgICAg
aHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19Db29raWVfTWFuYWdl
ciogY29va2llTWFuYWdlciA9IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpKTsKKyAgICBBU1NFUlRfVFJVRShjb29raWVNYW5hZ2VyKTsKKwor
ICAgIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBF
V0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0
UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsK
KworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1s
IikuZGF0YSgpKTsKKyAgICBFaW5hX0xpc3QqIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9z
dG5hbWVzKSwgMik7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworCisgICAgLy8gRGVs
ZXRlIGZpcnN0IHBhcnR5IGNvb2tpZQorICAgIGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFtZV9j
b29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIsIEZJUlNUX1BBUlRZX0RPTUFJTik7CisgICAgaG9z
dG5hbWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAgQVNT
RVJUX0VRKGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpLCAxKTsKKyAgICBBU1NFUlRfU1RSRVEo
c3RhdGljX2Nhc3Q8Y2hhcio+KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAwKSksIFRISVJEX1BB
UlRZX0RPTUFJTik7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworCisgICAgLy8gRGVs
ZXRlIHRoaXJkIHBhcnR5IGNvb2tpZQorICAgIGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFtZV9j
b29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIsIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAgQVNT
RVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOworCisg
ICAgLy8gR2V0IGFsbCBjb29raWVzIGFnYWluCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3Vu
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIENsZWFy
IGFsbCBjb29raWVzCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2ll
TWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2ll
TWFuYWdlciksIDApOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9t
YW5hZ2VyX3Blcm1hbmVudF9zdG9yYWdlKQoreworICAgIE93blB0cjxFV0syVW5pdFRlc3RTZXJ2
ZXI+IGh0dHBTZXJ2ZXIgPSBhZG9wdFB0cihuZXcgRVdLMlVuaXRUZXN0U2VydmVyKTsKKyAgICBo
dHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgLy8gR2VuZXJhdGUgdW5pcXVl
IG5hbWVzIGZvciBjb29raWUgc3RvcmFnZXMuCisgICAgY2hhciB0ZXh0U3RvcmFnZVtdID0gIi90
bXAvdHh0LWNvb2tpZS5YWFhYWFgiOworICAgIEFTU0VSVF9UUlVFKG1rdGVtcCh0ZXh0U3RvcmFn
ZSkpOworICAgIGNoYXIgc3FsaXRlU3RvcmFnZVtdID0gIi90bXAvc3FsaXRlLWNvb2tpZS5YWFhY
WFgiOworICAgIEFTU0VSVF9UUlVFKG1rdGVtcChzcWxpdGVTdG9yYWdlKSk7CisKKyAgICBFd2tf
Q29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tfY29udGV4dF9jb29raWVfbWFuYWdl
cl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgQVNTRVJUX1RSVUUoY29va2ll
TWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoY29v
a2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisgICAgQVNTRVJU
X0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9M
SUNZX0FMV0FZUyk7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KKyAg
ICBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5hZ2Vy
LCB0ZXh0U3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CisgICAg
QVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOwor
CisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwi
KS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tp
ZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIFNRTGl0ZSBzdG9yYWdlIHVzaW5nIGEgbmV3IGZpbGUu
CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoY29va2llTWFu
YWdlciwgc3FsaXRlU3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRF
KTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2Vy
KSwgMCk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5k
ZXguaHRtbCIpLmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tp
ZXMoY29va2llTWFuYWdlciksIDIpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVzaW5nIGFuIGV4
aXN0aW5nIGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9z
ZXQoY29va2llTWFuYWdlciwgdGV4dFN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9S
QUdFX1RFWFQpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tp
ZU1hbmFnZXIpLCAyKTsKKyAgICBld2tfY29va2llX21hbmFnZXJfY29va2llc19jbGVhcihjb29r
aWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29r
aWVNYW5hZ2VyKSwgMCk7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB3aXRoIGFuIGV4aXN0aW5n
IGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoY29v
a2llTWFuYWdlciwgc3FsaXRlU3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0Vf
U1FMSVRFKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVN
YW5hZ2VyKSwgMik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2ll
TWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2ll
TWFuYWdlciksIDApOworCisgICAgLy8gRmluYWwgY2xlYW4gdXAuCisgICAgdW5saW5rKHRleHRT
dG9yYWdlKTsKKyAgICB1bmxpbmsoc3FsaXRlU3RvcmFnZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153436</attachid>
            <date>2012-07-20 00:33:43 -0700</date>
            <delta_ts>2012-07-20 01:18:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookiemanager_utests.patch</filename>
            <type>text/plain</type>
            <size>19099</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi4zZGY5Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDctMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CiAyMDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGlu
dXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBtZXRob2RzIHRvIGdldC9z
ZXQgYSBjdXN0b20gdGV4dCBlbmNvZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5
N2Y3MDk1Li45MDA2NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw0ICsxLDUg
QEAKIExJU1QoQVBQRU5EIFdlYktpdDJfTElOS19GTEFHUworICAgICR7Q0FJUk9fTERGTEFHU30K
ICAgICAke0VDT1JFX1hfTERGTEFHU30KICAgICAke0VESkVfTERGTEFHU30KICAgICAke0VGTERF
UFNfTERGTEFHU30KQEAgLTE5NCw5ICsxOTUsMTEgQEAgU0VUKEVXSzJVbml0VGVzdHNfTElCUkFS
SUVTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9CiAgICAgJHtXZWJDb3JlX0xJ
QlJBUllfTkFNRX0KICAgICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQorICAgICR7Q0FJUk9fTElC
UkFSSUVTfQogICAgICR7RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJ
RVN9CiAgICAgJHtFVkFTX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVAyNF9MSUJSQVJJRVN9CiAg
ICAgZ3Rlc3QKICkKIApAQCAtMjE5LDYgKzIyMiw3IEBAIEFERF9MSUJSQVJZKGV3azJVbml0VGVz
dFV0aWxzCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmNwcAogICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0v
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RNYWluLmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVT
VF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNwcAogKQogCiBUQVJHRVRf
TElOS19MSUJSQVJJRVMoZXdrMlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklF
U30pCkBAIC0yMjYsNiArMjMwLDcgQEAgVEFSR0VUX0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVz
dFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQogIyBUaGUgImV3ayIgb24gdGhlIHRl
c3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CiAjIHdp
bGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgogU0VUKEVX
SzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0
ZXN0X2V3azJfdmlldwogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCmluZGV4IDQ0MmM0ZjcuLmFiNDdhMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oCkBAIC0xMDcsNyArMTA3LDcgQEAgRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9w
ZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwKIC8qKgog
ICogU2V0IEBhIHBvbGljeSBhcyB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5IGZvciBAYSBt
YW5hZ2VyLgogICoKLSAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4K
KyAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFjY2VwdGVkIG9ubHkgZm9yIHRoZSBtYWluIHBh
Z2UuCiAgKgogICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHVwZGF0ZS4K
ICAqIEBwYXJhbSBwb2xpY3kgYSAjRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5CkBAIC0xMTgsNyAr
MTE4LDcgQEAgRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChF
d2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a18KIC8qKgogICogQXN5bmNocm9ub3VzbHkg
Z2V0IHRoZSBjb29raWUgYWNjZXB0YW5jZSBwb2xpY3kgb2YgQGEgbWFuYWdlci4KICAqCi0gKiBC
eSBkZWZhdWx0LCBjb29raWVzIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisgKiBCeSBkZWZhdWx0LCBj
b29raWVzIGFyZSBhY2NlcHRlZCBvbmx5IGZvciB0aGUgbWFpbiBwYWdlLgogICoKICAqIEBwYXJh
bSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byBxdWVyeS4KICAqIEBwYXJhbSBjYWxsYmFj
ayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4g
ZXJyb3Igb2NjdXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuY3BwCmluZGV4IGQ4MTAxMDYuLjM2MWMyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkVX
SzJVbml0VGVzdEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRl
IDxFY29yZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKIGV4dGVybiBFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVudmlyb25tZW50
KiBlbnZpcm9ubWVudDsKQEAgLTUwLDYgKzUxLDExIEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6
U2V0VXAoKQogewogICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CiAKKyAgICAv
LyBnbGliIHN1cHBvcnQgKGZvciBsaWJzb3VwKS4KKyAgICBnX3R5cGVfaW5pdCgpOworICAgIGlm
ICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCkpCisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiV0FSTklORzogR2xpYiBtYWluIGxvb3AgaW50ZWdyYXRpb24gaXMgbm90IHdvcmtpbmcu
IFNvbWUgdGVzdHMgbWF5IGZhaWwuIik7CisKICAgICB1bnNpZ25lZCBpbnQgd2lkdGggPSBlbnZp
cm9ubWVudC0+ZGVmYXVsdFdpZHRoKCk7CiAgICAgdW5zaWduZWQgaW50IGhlaWdodCA9IGVudmly
b25tZW50LT5kZWZhdWx0SGVpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0U2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NjkyNTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRVdLMlVuaXRUZXN0U2VydmVyLmgiCisKK0VXSzJVbml0VGVzdFNlcnZlcjo6RVdLMlVu
aXRUZXN0U2VydmVyKCkKK3sKKyAgICBTb3VwQWRkcmVzcyogYWRkcmVzcyA9IHNvdXBfYWRkcmVz
c19uZXcoIjEyNy4wLjAuMSIsIFNPVVBfQUREUkVTU19BTllfUE9SVCk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfc3luYyhhZGRyZXNzLCAwKTsKKworICAgIG1fc291cFNlcnZlciA9IHNvdXBf
c2VydmVyX25ldyhTT1VQX1NFUlZFUl9JTlRFUkZBQ0UsIGFkZHJlc3MsIE5VTEwpOworICAgIG1f
YmFzZVVSSSA9IHNvdXBfdXJpX25ldygiaHR0cDovLzEyNy4wLjAuMS8iKTsKKyAgICBzb3VwX3Vy
aV9zZXRfcG9ydChtX2Jhc2VVUkksIHNvdXBfc2VydmVyX2dldF9wb3J0KG1fc291cFNlcnZlcikp
OworICAgIGdfb2JqZWN0X3VucmVmKGFkZHJlc3MpOworfQorCitFV0syVW5pdFRlc3RTZXJ2ZXI6
On5FV0syVW5pdFRlc3RTZXJ2ZXIoKQoreworICAgIHNvdXBfdXJpX2ZyZWUobV9iYXNlVVJJKTsK
KyAgICBnX29iamVjdF91bnJlZihtX3NvdXBTZXJ2ZXIpOworfQorCit2b2lkIEVXSzJVbml0VGVz
dFNlcnZlcjo6cnVuKFNvdXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKK3sKKyAgICBz
b3VwX3NlcnZlcl9ydW5fYXN5bmMobV9zb3VwU2VydmVyKTsKKyAgICBzb3VwX3NlcnZlcl9hZGRf
aGFuZGxlcihtX3NvdXBTZXJ2ZXIsIDAsIHNlcnZlckNhbGxiYWNrLCAwLCAwKTsKK30KKworQ1N0
cmluZyBFV0syVW5pdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkg
Y29uc3QKK3sKKyAgICBTb3VwVVJJKiBzb3VwVVJJID0gc291cF91cmlfbmV3X3dpdGhfYmFzZSht
X2Jhc2VVUkksIHBhdGgpOworICAgIGNoYXIqIHVyaSA9IHNvdXBfdXJpX3RvX3N0cmluZyhzb3Vw
VVJJLCBGQUxTRSk7CisgICAgQ1N0cmluZyB1cmlTdHJpbmcgPSB1cmk7CisgICAgZnJlZSh1cmkp
OworICAgIHNvdXBfdXJpX2ZyZWUoc291cFVSSSk7CisKKyAgICByZXR1cm4gdXJpU3RyaW5nOwor
fQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYjE0NmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdFNlcnZlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIEVXSzJVbml0VGVzdFNlcnZlcl9oCisjZGVmaW5lIEVXSzJVbml0VGVzdFNl
cnZlcl9oCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK2NsYXNzIEVXSzJVbml0VGVzdFNlcnZlciB7CitwdWJsaWM6CisgICAgRVdL
MlVuaXRUZXN0U2VydmVyKCk7CisgICAgdmlydHVhbCB+RVdLMlVuaXRUZXN0U2VydmVyKCk7CisK
KyAgICBTb3VwVVJJKiBiYXNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJJOyB9CisKKyAg
ICBDU3RyaW5nIGdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3Q7CisgICAgdm9p
ZCBydW4oU291cFNlcnZlckNhbGxiYWNrKTsKKworcHJpdmF0ZToKKyAgICBTb3VwU2VydmVyKiBt
X3NvdXBTZXJ2ZXI7CisgICAgU291cFVSSSogbV9iYXNlVVJJOworfTsKKworI2VuZGlmIC8vIEVX
SzJVbml0VGVzdFNlcnZlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ODE1YjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
Y29va2llX21hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9u
bWVudC5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgiCisj
aW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEVXSzJVbml0VGVzdDsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK2V4dGVybiBFV0syVW5p
dFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25zdCBjaGFyIEZJUlNU
X1BBUlRZX0RPTUFJTltdID0gIjEyNy4wLjAuMSI7CitzdGF0aWMgY29uc3QgY2hhciBUSElSRF9Q
QVJUWV9ET01BSU5bXSA9ICJsb2NhbGhvc3QiOworc3RhdGljIGNvbnN0IGNoYXIgSU5ERVhfSFRN
TF9TVFJJTkdbXSA9CisgICAgIjxodG1sPjxib2R5PiIKKyAgICAiIDxwPkVGTFdlYktpdDIgQ29v
a2llIE1hbmFnZXIgdGVzdDwvcD4iCisgICAgIiA8aW1nIHNyYz0naHR0cDovL2xvY2FsaG9zdDol
dS9pbWFnZS5wbmcnIHdpZHRoPTUgaGVpZ2h0PTU+PC9pbWc+IgorICAgICI8L2JvZHk+PC9odG1s
PiI7CisKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291
cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xp
ZW50Q29udGV4dCosIGdwb2ludGVyKQoreworICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09V
UF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7Cisg
ICAgaWYgKCFzdHJjbXAocGF0aCwgIi9pbmRleC5odG1sIikpIHsKKyAgICAgICAgRWluYV9TdHJi
dWYqIGJ1ZmZlciA9IGVpbmFfc3RyYnVmX25ldygpOworICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBl
bmRfcHJpbnRmKGJ1ZmZlciwgSU5ERVhfSFRNTF9TVFJJTkcsIHNvdXBfc2VydmVyX2dldF9wb3J0
KHNlcnZlcikpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXI7IE1heC1BZ2U9NjAiKTsK
KyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHks
IFNPVVBfTUVNT1JZX1RBS0UsIGVpbmFfc3RyYnVmX3N0cmluZ19zdGVhbChidWZmZXIpLCBlaW5h
X3N0cmJ1Zl9sZW5ndGhfZ2V0KGJ1ZmZlcikpOworICAgICAgICBlaW5hX3N0cmJ1Zl9zdHJpbmdf
ZnJlZShidWZmZXIpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAiL2ltYWdlLnBuZyIp
KQorICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNl
X2hlYWRlcnMsICJTZXQtQ29va2llIiwgImJhej1xdXg7IE1heC1BZ2U9NjAiKTsKKyAgICBlbHNl
CisgICAgICAgIEZBSUwoKTsKKyAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKK30KKworc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2soRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciogZXJyb3Is
IHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKKyAgICBFd2tf
Q29va2llX0FjY2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0
X1BvbGljeSo+KGV2ZW50X2luZm8pOworICAgICpyZXQgPSBwb2xpY3k7CisgICAgZWNvcmVfbWFp
bl9sb29wX3F1aXQoKTsKK30KKworc3RhdGljIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBnZXRB
Y2NlcHRQb2xpY3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEV3a19Db29r
aWVfQWNjZXB0X1BvbGljeSBwb2xpY3kgPSBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlT
OworICAgIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldChtYW5hZ2Vy
LCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjaywgJnBvbGljeSk7CisgICAgZWNvcmVfbWFpbl9sb29w
X2JlZ2luKCk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKworc3RhdGljIHZvaWQgZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJv
ciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsK
KworICAgIEVpbmFfTGlzdCoqIHJldCA9IHN0YXRpY19jYXN0PEVpbmFfTGlzdCoqPihldmVudF9p
bmZvKTsKKyAgICBFaW5hX0xpc3QqIGw7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1Rf
Rk9SRUFDSChob3N0bmFtZXMsIGwsIGRhdGEpCisgICAgICAgICpyZXQgPSBlaW5hX2xpc3RfYXBw
ZW5kKCpyZXQsIGVpbmFfc3RyaW5nc2hhcmVfcmVmKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSkp
OworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3N0YXRpYyBFaW5hX0xpc3QqIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sKKyAg
ICBFaW5hX0xpc3QqIHJldCA9IDA7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2hvc3Ru
YW1lc193aXRoX2Nvb2tpZXNfZ2V0KG1hbmFnZXIsIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2Fs
bGJhY2ssICZyZXQpOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworICAgIHJldHVybiBy
ZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVIb3N0TmFtZXMoRWluYV9MaXN0KiBob3N0bmFtZXMp
Cit7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMsIGRhdGEp
CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSk7
Cit9CisKK3N0YXRpYyBpbnQgY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhFd2tfQ29va2llX01h
bmFnZXIqIG1hbmFnZXIpCit7CisgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhtYW5hZ2VyKTsKKyAgICBpbnQgY291bnQgPSBlaW5hX2xpc3RfY291bnQo
aG9zdG5hbWVzKTsKKyAgICBmcmVlSG9zdE5hbWVzKGhvc3RuYW1lcyk7CisgICAgcmV0dXJuIGNv
dW50OworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Fj
Y2VwdF9wb2xpY3kpCit7CisgICAgT3duUHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZl
ciA9IGFkb3B0UHRyKG5ldyBFV0syVW5pdFRlc3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1
bihzZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFn
ZXIgPSBld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9n
ZXQoKSk7CisgICAgQVNTRVJUX1RSVUUoY29va2llTWFuYWdlcik7CisKKyAgICAvLyBEZWZhdWx0
IHBvbGljeSBpcyBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkuCisgICAg
QVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX05PX1RISVJEX1BBUlRZKTsKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICBFaW5hX0xpc3QqIGhv
c3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFT
U0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7CisgICAgQVNTRVJUX1NUUkVR
KHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9Q
QVJUWV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICBld2tfY29v
a2llX21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIENoYW5n
ZSBwb2xpY3kgdG8gRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUworICAgIGV3a19jb29r
aWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tp
ZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBsb2FkVXJs
U3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisK
KyAgICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsK
KyAgICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIEFTU0VS
VF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0bmFtZXMsIDApKSwg
RklSU1RfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+
KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAxKSksIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAg
ZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVz
X2NsZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09P
S0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3Bv
bGljeV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSKTsK
KyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0
bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7Cit9CisKK1RFU1RfRihFV0syVW5p
dFRlc3RCYXNlLCBld2tfY29va2llX21hbmFnZXJfY29va2llc19kZWxldGUpCit7CisgICAgT3du
UHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZlciA9IGFkb3B0UHRyKG5ldyBFV0syVW5p
dFRlc3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CisKKyAg
ICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tfY29udGV4dF9jb29raWVf
bWFuYWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgQVNTRVJUX1RSVUUo
Y29va2llTWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9z
ZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisgICAg
QVNTRVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NF
UFRfUE9MSUNZX0FMV0FZUyk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgRWluYV9MaXN0KiBob3N0bmFtZXMg
PSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEo
ZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5h
bWVzKTsKKworICAgIC8vIERlbGV0ZSBmaXJzdCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2ll
X21hbmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyLCBGSVJTVF9QQVJU
WV9ET01BSU4pOworICAgIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tp
ZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7
CisgICAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3Ru
YW1lcywgMCkpLCBUSElSRF9QQVJUWV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5h
bWVzKTsKKworICAgIC8vIERlbGV0ZSB0aGlyZCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2ll
X21hbmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyLCBUSElSRF9QQVJU
WV9ET01BSU4pOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tp
ZU1hbmFnZXIpLCAwKTsKKworICAgIC8vIEdldCBhbGwgY29va2llcyBhZ2FpbgorICAgIGxvYWRV
cmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsK
KyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwg
Mik7CisKKyAgICAvLyBDbGVhciBhbGwgY29va2llcworICAgIGV3a19jb29raWVfbWFuYWdlcl9j
b29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1l
c1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGV3a19jb29raWVfbWFuYWdlcl9wZXJtYW5lbnRfc3RvcmFnZSkKK3sKKyAgICBPd25Q
dHI8RVdLMlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0
VGVzdFNlcnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAg
IC8vIEdlbmVyYXRlIHVuaXF1ZSBuYW1lcyBmb3IgY29va2llIHN0b3JhZ2VzLgorICAgIGNoYXIg
dGV4dFN0b3JhZ2VbXSA9ICIvdG1wL3R4dC1jb29raWUuWFhYWFhYIjsKKyAgICBBU1NFUlRfVFJV
RShta3RlbXAodGV4dFN0b3JhZ2UpKTsKKyAgICBjaGFyIHNxbGl0ZVN0b3JhZ2VbXSA9ICIvdG1w
L3NxbGl0ZS1jb29raWUuWFhYWFhYIjsKKyAgICBBU1NFUlRfVFJVRShta3RlbXAoc3FsaXRlU3Rv
cmFnZSkpOworCisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyKiBjb29raWVNYW5hZ2VyID0gZXdrX2Nv
bnRleHRfY29va2llX21hbmFnZXJfZ2V0KGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAg
IEFTU0VSVF9UUlVFKGNvb2tpZU1hbmFnZXIpOworCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Fj
Y2VwdF9wb2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9B
TFdBWVMpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVX
S19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVz
aW5nIGEgbmV3IGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFn
ZV9zZXQoY29va2llTWFuYWdlciwgdGV4dFN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9T
VE9SQUdFX1RFWFQpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
b2tpZU1hbmFnZXIpLCAwKTsKKworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFn
ZSB1c2luZyBhIG5ldyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0
b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHNxbGl0ZVN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lT
VEVOVF9TVE9SQUdFX1NRTElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29va2llTWFuYWdlciksIDApOworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3Vu
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIFRleHQg
c3RvcmFnZSB1c2luZyBhbiBleGlzdGluZyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9w
ZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHRleHRTdG9yYWdlLCBFV0tfQ09P
S0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2Vy
X2Nvb2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5h
bWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOworCisgICAgLy8gU1FMaXRlIHN0b3Jh
Z2Ugd2l0aCBhbiBleGlzdGluZyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0
ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHNxbGl0ZVN0b3JhZ2UsIEVXS19DT09LSUVf
UEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDIpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9j
b29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1l
c1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIC8vIEZpbmFsIGNsZWFuIHVw
LgorICAgIHVubGluayh0ZXh0U3RvcmFnZSk7CisgICAgdW5saW5rKHNxbGl0ZVN0b3JhZ2UpOwor
fQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153443</attachid>
            <date>2012-07-20 01:18:03 -0700</date>
            <delta_ts>2012-07-23 12:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91639_cookiemanager_utests.patch</filename>
            <type>text/plain</type>
            <size>19096</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi4zZGY5Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDctMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHVuaXQgdGVzdHMgZm9yIEV3a19Db29raWVfTWFuYWdlci4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oOiBGaXggImFjY2VwdCBwb2xpY3kiIGRvY3VtZW50YXRpb24KKyAgICAgICAgdG8gaW5k
aWNhdGUgdGhhdCBvbmx5IGNvb2tpZXMgZm9yIHRoZSBtYWluIHBhZ2UgYXJlIGFjY2VwdGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIgdG8gdGhl
IG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAgIChFV0sy
VW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNlcnZlcik6
CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJh
Y2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dp
dGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dpdGhDb29r
aWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmlsZXMpOgor
CiAyMDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGlu
dXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBtZXRob2RzIHRvIGdldC9z
ZXQgYSBjdXN0b20gdGV4dCBlbmNvZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5
N2Y3MDk1Li45MDA2NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw0ICsxLDUg
QEAKIExJU1QoQVBQRU5EIFdlYktpdDJfTElOS19GTEFHUworICAgICR7Q0FJUk9fTERGTEFHU30K
ICAgICAke0VDT1JFX1hfTERGTEFHU30KICAgICAke0VESkVfTERGTEFHU30KICAgICAke0VGTERF
UFNfTERGTEFHU30KQEAgLTE5NCw5ICsxOTUsMTEgQEAgU0VUKEVXSzJVbml0VGVzdHNfTElCUkFS
SUVTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9CiAgICAgJHtXZWJDb3JlX0xJ
QlJBUllfTkFNRX0KICAgICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQorICAgICR7Q0FJUk9fTElC
UkFSSUVTfQogICAgICR7RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJ
RVN9CiAgICAgJHtFVkFTX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVAyNF9MSUJSQVJJRVN9CiAg
ICAgZ3Rlc3QKICkKIApAQCAtMjE5LDYgKzIyMiw3IEBAIEFERF9MSUJSQVJZKGV3azJVbml0VGVz
dFV0aWxzCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmNwcAogICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0v
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RNYWluLmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVT
VF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNwcAogKQogCiBUQVJHRVRf
TElOS19MSUJSQVJJRVMoZXdrMlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklF
U30pCkBAIC0yMjYsNiArMjMwLDcgQEAgVEFSR0VUX0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVz
dFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQogIyBUaGUgImV3ayIgb24gdGhlIHRl
c3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CiAjIHdp
bGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgogU0VUKEVX
SzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0
ZXN0X2V3azJfdmlldwogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCmluZGV4IDQ0MmM0ZjcuLmFiNDdhMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5oCkBAIC0xMDcsNyArMTA3LDcgQEAgRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9w
ZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciAqbWFuYWdlciwKIC8qKgog
ICogU2V0IEBhIHBvbGljeSBhcyB0aGUgY29va2llIGFjY2VwdGFuY2UgcG9saWN5IGZvciBAYSBt
YW5hZ2VyLgogICoKLSAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFsd2F5cyBhY2NlcHRlZC4K
KyAqIEJ5IGRlZmF1bHQsIGNvb2tpZXMgYXJlIGFjY2VwdGVkIG9ubHkgZm9yIHRoZSBtYWluIHBh
Z2UuCiAgKgogICogQHBhcmFtIG1hbmFnZXIgVGhlIGNvb2tpZSBtYW5hZ2VyIHRvIHVwZGF0ZS4K
ICAqIEBwYXJhbSBwb2xpY3kgYSAjRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5CkBAIC0xMTgsNyAr
MTE4LDcgQEAgRUFQSSB2b2lkIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChF
d2tfQ29va2llX01hbmFnZXIgKm1hbmFnZXIsIEV3a18KIC8qKgogICogQXN5bmNocm9ub3VzbHkg
Z2V0IHRoZSBjb29raWUgYWNjZXB0YW5jZSBwb2xpY3kgb2YgQGEgbWFuYWdlci4KICAqCi0gKiBC
eSBkZWZhdWx0LCBjb29raWVzIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisgKiBCeSBkZWZhdWx0LCBj
b29raWVzIGFyZSBhY2NlcHRlZCBvbmx5IGZvciB0aGUgbWFpbiBwYWdlLgogICoKICAqIEBwYXJh
bSBtYW5hZ2VyIFRoZSBjb29raWUgbWFuYWdlciB0byBxdWVyeS4KICAqIEBwYXJhbSBjYWxsYmFj
ayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4g
ZXJyb3Igb2NjdXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuY3BwCmluZGV4IGQ4MTAxMDYuLjM2MWMyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkVX
SzJVbml0VGVzdEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRl
IDxFY29yZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKIGV4dGVybiBFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVudmlyb25tZW50
KiBlbnZpcm9ubWVudDsKQEAgLTUwLDYgKzUxLDExIEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6
U2V0VXAoKQogewogICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CiAKKyAgICAv
LyBnbGliIHN1cHBvcnQgKGZvciBsaWJzb3VwKS4KKyAgICBnX3R5cGVfaW5pdCgpOworICAgIGlm
ICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCkpCisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiV0FSTklORzogR2xpYiBtYWluIGxvb3AgaW50ZWdyYXRpb24gaXMgbm90IHdvcmtpbmcu
IFNvbWUgdGVzdHMgbWF5IGZhaWwuIik7CisKICAgICB1bnNpZ25lZCBpbnQgd2lkdGggPSBlbnZp
cm9ubWVudC0+ZGVmYXVsdFdpZHRoKCk7CiAgICAgdW5zaWduZWQgaW50IGhlaWdodCA9IGVudmly
b25tZW50LT5kZWZhdWx0SGVpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0U2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wMmI2YzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRVdLMlVuaXRUZXN0U2VydmVyLmgiCisKK0VXSzJVbml0VGVzdFNlcnZlcjo6RVdLMlVu
aXRUZXN0U2VydmVyKCkKK3sKKyAgICBTb3VwQWRkcmVzcyogYWRkcmVzcyA9IHNvdXBfYWRkcmVz
c19uZXcoIjEyNy4wLjAuMSIsIFNPVVBfQUREUkVTU19BTllfUE9SVCk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfc3luYyhhZGRyZXNzLCAwKTsKKworICAgIG1fc291cFNlcnZlciA9IHNvdXBf
c2VydmVyX25ldyhTT1VQX1NFUlZFUl9JTlRFUkZBQ0UsIGFkZHJlc3MsIDApOworICAgIG1fYmFz
ZVVSSSA9IHNvdXBfdXJpX25ldygiaHR0cDovLzEyNy4wLjAuMS8iKTsKKyAgICBzb3VwX3VyaV9z
ZXRfcG9ydChtX2Jhc2VVUkksIHNvdXBfc2VydmVyX2dldF9wb3J0KG1fc291cFNlcnZlcikpOwor
ICAgIGdfb2JqZWN0X3VucmVmKGFkZHJlc3MpOworfQorCitFV0syVW5pdFRlc3RTZXJ2ZXI6On5F
V0syVW5pdFRlc3RTZXJ2ZXIoKQoreworICAgIHNvdXBfdXJpX2ZyZWUobV9iYXNlVVJJKTsKKyAg
ICBnX29iamVjdF91bnJlZihtX3NvdXBTZXJ2ZXIpOworfQorCit2b2lkIEVXSzJVbml0VGVzdFNl
cnZlcjo6cnVuKFNvdXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKK3sKKyAgICBzb3Vw
X3NlcnZlcl9ydW5fYXN5bmMobV9zb3VwU2VydmVyKTsKKyAgICBzb3VwX3NlcnZlcl9hZGRfaGFu
ZGxlcihtX3NvdXBTZXJ2ZXIsIDAsIHNlcnZlckNhbGxiYWNrLCAwLCAwKTsKK30KKworQ1N0cmlu
ZyBFV0syVW5pdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29u
c3QKK3sKKyAgICBTb3VwVVJJKiBzb3VwVVJJID0gc291cF91cmlfbmV3X3dpdGhfYmFzZShtX2Jh
c2VVUkksIHBhdGgpOworICAgIGNoYXIqIHVyaSA9IHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBmYWxzZSk7CisgICAgQ1N0cmluZyB1cmlTdHJpbmcgPSB1cmk7CisgICAgZnJlZSh1cmkpOwor
ICAgIHNvdXBfdXJpX2ZyZWUoc291cFVSSSk7CisKKyAgICByZXR1cm4gdXJpU3RyaW5nOworfQor
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYjE0NmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdFNlcnZlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIEVXSzJVbml0VGVzdFNlcnZlcl9oCisjZGVmaW5lIEVXSzJVbml0VGVzdFNlcnZl
cl9oCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK2NsYXNzIEVXSzJVbml0VGVzdFNlcnZlciB7CitwdWJsaWM6CisgICAgRVdLMlVu
aXRUZXN0U2VydmVyKCk7CisgICAgdmlydHVhbCB+RVdLMlVuaXRUZXN0U2VydmVyKCk7CisKKyAg
ICBTb3VwVVJJKiBiYXNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJJOyB9CisKKyAgICBD
U3RyaW5nIGdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3Q7CisgICAgdm9pZCBy
dW4oU291cFNlcnZlckNhbGxiYWNrKTsKKworcHJpdmF0ZToKKyAgICBTb3VwU2VydmVyKiBtX3Nv
dXBTZXJ2ZXI7CisgICAgU291cFVSSSogbV9iYXNlVVJJOworfTsKKworI2VuZGlmIC8vIEVXSzJV
bml0VGVzdFNlcnZlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ODE1YjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29v
a2llX21hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgiCisjaW5j
bHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVpbmEuaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEVXSzJVbml0VGVzdDsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK2V4dGVybiBFV0syVW5pdFRl
c3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25zdCBjaGFyIEZJUlNUX1BB
UlRZX0RPTUFJTltdID0gIjEyNy4wLjAuMSI7CitzdGF0aWMgY29uc3QgY2hhciBUSElSRF9QQVJU
WV9ET01BSU5bXSA9ICJsb2NhbGhvc3QiOworc3RhdGljIGNvbnN0IGNoYXIgSU5ERVhfSFRNTF9T
VFJJTkdbXSA9CisgICAgIjxodG1sPjxib2R5PiIKKyAgICAiIDxwPkVGTFdlYktpdDIgQ29va2ll
IE1hbmFnZXIgdGVzdDwvcD4iCisgICAgIiA8aW1nIHNyYz0naHR0cDovL2xvY2FsaG9zdDoldS9p
bWFnZS5wbmcnIHdpZHRoPTUgaGVpZ2h0PTU+PC9pbWc+IgorICAgICI8L2JvZHk+PC9odG1sPiI7
CisKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50
Q29udGV4dCosIGdwb2ludGVyKQoreworICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9N
RVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAg
aWYgKCFzdHJjbXAocGF0aCwgIi9pbmRleC5odG1sIikpIHsKKyAgICAgICAgRWluYV9TdHJidWYq
IGJ1ZmZlciA9IGVpbmFfc3RyYnVmX25ldygpOworICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRf
cHJpbnRmKGJ1ZmZlciwgSU5ERVhfSFRNTF9TVFJJTkcsIHNvdXBfc2VydmVyX2dldF9wb3J0KHNl
cnZlcikpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXI7IE1heC1BZ2U9NjAiKTsKKyAg
ICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNP
VVBfTUVNT1JZX1RBS0UsIGVpbmFfc3RyYnVmX3N0cmluZ19zdGVhbChidWZmZXIpLCBlaW5hX3N0
cmJ1Zl9sZW5ndGhfZ2V0KGJ1ZmZlcikpOworICAgICAgICBlaW5hX3N0cmJ1Zl9zdHJpbmdfZnJl
ZShidWZmZXIpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwYXRoLCAiL2ltYWdlLnBuZyIpKQor
ICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hl
YWRlcnMsICJTZXQtQ29va2llIiwgImJhej1xdXg7IE1heC1BZ2U9NjAiKTsKKyAgICBlbHNlCisg
ICAgICAgIEZBSUwoKTsKKyAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5y
ZXNwb25zZV9ib2R5KTsKK30KKworc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2so
RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZv
aWQqIGV2ZW50X2luZm8pCit7CisgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKKyAgICBFd2tfQ29v
a2llX0FjY2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1Bv
bGljeSo+KGV2ZW50X2luZm8pOworICAgICpyZXQgPSBwb2xpY3k7CisgICAgZWNvcmVfbWFpbl9s
b29wX3F1aXQoKTsKK30KKworc3RhdGljIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBnZXRBY2Nl
cHRQb2xpY3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEV3a19Db29raWVf
QWNjZXB0X1BvbGljeSBwb2xpY3kgPSBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTOwor
ICAgIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldChtYW5hZ2VyLCBn
ZXRBY2NlcHRQb2xpY3lDYWxsYmFjaywgJnBvbGljeSk7CisgICAgZWNvcmVfbWFpbl9sb29wX2Jl
Z2luKCk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKworc3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJvciog
ZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKKwor
ICAgIEVpbmFfTGlzdCoqIHJldCA9IHN0YXRpY19jYXN0PEVpbmFfTGlzdCoqPihldmVudF9pbmZv
KTsKKyAgICBFaW5hX0xpc3QqIGw7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRk9S
RUFDSChob3N0bmFtZXMsIGwsIGRhdGEpCisgICAgICAgICpyZXQgPSBlaW5hX2xpc3RfYXBwZW5k
KCpyZXQsIGVpbmFfc3RyaW5nc2hhcmVfcmVmKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSkpOwor
ICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3N0YXRpYyBFaW5hX0xpc3QqIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBF
aW5hX0xpc3QqIHJldCA9IDA7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FzeW5jX2hvc3RuYW1l
c193aXRoX2Nvb2tpZXNfZ2V0KG1hbmFnZXIsIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJh
Y2ssICZyZXQpOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworICAgIHJldHVybiByZXQ7
Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVIb3N0TmFtZXMoRWluYV9MaXN0KiBob3N0bmFtZXMpCit7
CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMsIGRhdGEpCisg
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSk7Cit9
CisKK3N0YXRpYyBpbnQgY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhFd2tfQ29va2llX01hbmFn
ZXIqIG1hbmFnZXIpCit7CisgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhtYW5hZ2VyKTsKKyAgICBpbnQgY291bnQgPSBlaW5hX2xpc3RfY291bnQoaG9z
dG5hbWVzKTsKKyAgICBmcmVlSG9zdE5hbWVzKGhvc3RuYW1lcyk7CisgICAgcmV0dXJuIGNvdW50
OworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3kpCit7CisgICAgT3duUHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZlciA9
IGFkb3B0UHRyKG5ldyBFV0syVW5pdFRlc3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihz
ZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBFd2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIg
PSBld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQo
KSk7CisgICAgQVNTRVJUX1RSVUUoY29va2llTWFuYWdlcik7CisKKyAgICAvLyBEZWZhdWx0IHBv
bGljeSBpcyBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJUkRfUEFSVFkuCisgICAgQVNT
RVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NFUFRf
UE9MSUNZX05PX1RISVJEX1BBUlRZKTsKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICBFaW5hX0xpc3QqIGhvc3Ru
YW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VS
VF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7CisgICAgQVNTRVJUX1NUUkVRKHN0
YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9QQVJU
WV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICBld2tfY29va2ll
X21hbmFnZXJfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIENoYW5nZSBw
b2xpY3kgdG8gRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUworICAgIGV3a19jb29raWVf
bWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2VyLCBFV0tfQ09PS0lFX0FDQ0VQ
VF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1h
bmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBsb2FkVXJsU3lu
YyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAg
ICBob3N0bmFtZXMgPSBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsKKyAg
ICBBU1NFUlRfRVEoZWluYV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIEFTU0VSVF9T
VFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aChob3N0bmFtZXMsIDApKSwgRklS
U1RfUEFSVFlfRE9NQUlOKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hhcio+KGVp
bmFfbGlzdF9udGgoaG9zdG5hbWVzLCAxKSksIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAgZnJl
ZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29raWVzX2Ns
ZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tfQ09PS0lF
X0FDQ0VQVF9QT0xJQ1lfTkVWRVIKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGlj
eV9zZXQoY29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05FVkVSKTsKKyAg
ICBBU1NFUlRfRVEoZ2V0QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FD
Q0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRl
c3RCYXNlLCBld2tfY29va2llX21hbmFnZXJfY29va2llc19kZWxldGUpCit7CisgICAgT3duUHRy
PEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZlciA9IGFkb3B0UHRyKG5ldyBFV0syVW5pdFRl
c3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBF
d2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tfY29udGV4dF9jb29raWVfbWFu
YWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgQVNTRVJUX1RSVUUoY29v
a2llTWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQo
Y29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisgICAgQVNT
RVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NFUFRf
UE9MSUNZX0FMV0FZUyk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoZWlu
YV9saXN0X2NvdW50KGhvc3RuYW1lcyksIDIpOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVz
KTsKKworICAgIC8vIERlbGV0ZSBmaXJzdCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2llX21h
bmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyLCBGSVJTVF9QQVJUWV9E
T01BSU4pOworICAgIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1h
bmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMSk7Cisg
ICAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1l
cywgMCkpLCBUSElSRF9QQVJUWV9ET01BSU4pOworICAgIGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVz
KTsKKworICAgIC8vIERlbGV0ZSB0aGlyZCBwYXJ0eSBjb29raWUKKyAgICBld2tfY29va2llX21h
bmFnZXJfaG9zdG5hbWVfY29va2llc19jbGVhcihjb29raWVNYW5hZ2VyLCBUSElSRF9QQVJUWV9E
T01BSU4pOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1h
bmFnZXIpLCAwKTsKKworICAgIC8vIEdldCBhbGwgY29va2llcyBhZ2FpbgorICAgIGxvYWRVcmxT
eW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAg
ICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7
CisKKyAgICAvLyBDbGVhciBhbGwgY29va2llcworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29r
aWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJh
c2UsIGV3a19jb29raWVfbWFuYWdlcl9wZXJtYW5lbnRfc3RvcmFnZSkKK3sKKyAgICBPd25QdHI8
RVdLMlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVz
dFNlcnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIC8v
IEdlbmVyYXRlIHVuaXF1ZSBuYW1lcyBmb3IgY29va2llIHN0b3JhZ2VzLgorICAgIGNoYXIgdGV4
dFN0b3JhZ2VbXSA9ICIvdG1wL3R4dC1jb29raWUuWFhYWFhYIjsKKyAgICBBU1NFUlRfVFJVRSht
a3RlbXAodGV4dFN0b3JhZ2UpKTsKKyAgICBjaGFyIHNxbGl0ZVN0b3JhZ2VbXSA9ICIvdG1wL3Nx
bGl0ZS1jb29raWUuWFhYWFhYIjsKKyAgICBBU1NFUlRfVFJVRShta3RlbXAoc3FsaXRlU3RvcmFn
ZSkpOworCisgICAgRXdrX0Nvb2tpZV9NYW5hZ2VyKiBjb29raWVNYW5hZ2VyID0gZXdrX2NvbnRl
eHRfY29va2llX21hbmFnZXJfZ2V0KGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgIEFT
U0VSVF9UUlVFKGNvb2tpZU1hbmFnZXIpOworCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdB
WVMpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVzaW5n
IGEgbmV3IGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9z
ZXQoY29va2llTWFuYWdlciwgdGV4dFN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9S
QUdFX1RFWFQpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tp
ZU1hbmFnZXIpLCAwKTsKKworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB1
c2luZyBhIG5ldyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3Jh
Z2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHNxbGl0ZVN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lTVEVO
VF9TVE9SQUdFX1NRTElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tp
ZXMoY29va2llTWFuYWdlciksIDApOworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhv
c3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIFRleHQgc3Rv
cmFnZSB1c2luZyBhbiBleGlzdGluZyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJz
aXN0ZW50X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHRleHRTdG9yYWdlLCBFV0tfQ09PS0lF
X1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb29raWVNYW5hZ2VyKSwgMik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nv
b2tpZXNfY2xlYXIoY29va2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOworCisgICAgLy8gU1FMaXRlIHN0b3JhZ2Ug
d2l0aCBhbiBleGlzdGluZyBmaWxlLgorICAgIGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50
X3N0b3JhZ2Vfc2V0KGNvb2tpZU1hbmFnZXIsIHNxbGl0ZVN0b3JhZ2UsIEVXS19DT09LSUVfUEVS
U0lTVEVOVF9TVE9SQUdFX1NRTElURSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0
aENvb2tpZXMoY29va2llTWFuYWdlciksIDIpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29r
aWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAwKTsKKworICAgIC8vIEZpbmFsIGNsZWFuIHVwLgor
ICAgIHVubGluayh0ZXh0U3RvcmFnZSk7CisgICAgdW5saW5rKHNxbGl0ZVN0b3JhZ2UpOworfQor
Cg==
</data>
<flag name="review"
          id="162392"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153829</attachid>
            <date>2012-07-23 12:04:01 -0700</date>
            <delta_ts>2012-07-23 13:26:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>91639_cookiemanager_utests_landing.patch</filename>
            <type>text/plain</type>
            <size>19425</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMjI3ZDM1Li44ODczMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDctMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCB1bml0IHRlc3RzIGZvciBFd2tfQ29va2ll
X01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBB
ZGQgdW5pdCB0ZXN0cyBmb3IgRXdrX0Nvb2tpZV9NYW5hZ2VyLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5h
Z2VyLmg6IEZpeCAiYWNjZXB0IHBvbGljeSIgZG9jdW1lbnRhdGlvbgorICAgICAgICB0byBpbmRp
Y2F0ZSB0aGF0IG9ubHkgY29va2llcyBzZXQgYnkgdGhlIG1haW4gZG9jdW1lbnQgYXJlIGFjY2Vw
dGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0
VGVzdFNlcnZlcjo6RVdLMlVuaXRUZXN0U2VydmVyKTogQWRkIEhUVFAgc2VydmVyIHNpbWlsYXIg
dG8gdGhlIG9uZQorICAgICAgICB1c2VkIGJ5IEdUSyBwb3J0IHVuaXQgdGVzdHMuCisgICAgICAg
IChFV0syVW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoRVdL
MlVuaXRUZXN0U2VydmVyOjpydW4pOgorICAgICAgICAoRVdLMlVuaXRUZXN0U2VydmVyOjpnZXRV
UklGb3JQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdFNl
cnZlcik6CisgICAgICAgIChFV0syVW5pdFRlc3RTZXJ2ZXI6OmJhc2VVUkkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5
Q2FsbGJhY2spOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5KToKKyAgICAgICAgKGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoZnJlZUhvc3ROYW1lcyk6CisgICAgICAgIChjb3VudEhvc3RuYW1lc1dp
dGhDb29raWVzKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjbGVhblVwQ29va2llRmls
ZXMpOgorCiAyMDEyLTA3LTIzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29t
PgogCiAgICAgICAgIFtRdF0gRW5hYmxlIHRvdWNoIHNsaWRlciB3aGVuIHRvdWNoIGV2ZW50cyBh
cmUgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA2YWE2MTA0Li41OTZkNjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw0ICsxLDUgQEAKIExJU1QoQVBQRU5E
IFdlYktpdDJfTElOS19GTEFHUworICAgICR7Q0FJUk9fTERGTEFHU30KICAgICAke0VDT1JFX1hf
TERGTEFHU30KICAgICAke0VESkVfTERGTEFHU30KICAgICAke0VGTERFUFNfTERGTEFHU30KQEAg
LTE5OCw5ICsxOTksMTEgQEAgU0VUKEVXSzJVbml0VGVzdHNfTElCUkFSSUVTCiAgICAgJHtKYXZh
U2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9CiAgICAgJHtXZWJDb3JlX0xJQlJBUllfTkFNRX0KICAg
ICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQorICAgICR7Q0FJUk9fTElCUkFSSUVTfQogICAgICR7
RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJRVN9CiAgICAgJHtFVkFT
X0xJQlJBUklFU30KKyAgICAke0xJQlNPVVAyNF9MSUJSQVJJRVN9CiAgICAgZ3Rlc3QKICkKIApA
QCAtMjI2LDYgKzIyOSw3IEBAIEFERF9MSUJSQVJZKGV3azJVbml0VGVzdFV0aWxzCiAgICAgJHtX
RUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAog
ICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52
aXJvbm1lbnQuY3BwCiAgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RNYWluLmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNwcAogKQogCiBUQVJHRVRfTElOS19MSUJSQVJJRVMo
ZXdrMlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCkBAIC0yMzMsNiAr
MjM3LDcgQEAgVEFSR0VUX0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVu
aXRUZXN0c19MSUJSQVJJRVN9KQogIyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0
byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwgY2xhc2ggd2l0aCB0
ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgogU0VUKEVXSzJVbml0VGVzdHNfQklO
QVJJRVMKKyAgICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfdmlldwog
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29v
a2llX21hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5oCmluZGV4IDQ0MmM0ZjcuLmU5M2VkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC01MSw3
ICs1MSw3IEBAIGVudW0gX0V3a19Db29raWVfQWNjZXB0X1BvbGljeSB7CiAgICAgRVdLX0NPT0tJ
RV9BQ0NFUFRfUE9MSUNZX0FMV0FZUywKICAgICAvLy8gUmVqZWN0cyBhbGwgY29va2llcy4KICAg
ICBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIsCi0gICAgLy8vIEFjY2VwdHMgY29va2ll
cyBvbmx5IGZyb20gdGhlIG1haW4gcGFnZS4KKyAgICAvLy8gQWNjZXB0cyBvbmx5IGNvb2tpZXMg
c2V0IGJ5IHRoZSBtYWluIGRvY3VtZW50IGxvYWRlZC4KICAgICBFV0tfQ09PS0lFX0FDQ0VQVF9Q
T0xJQ1lfTk9fVEhJUkRfUEFSVFkKIH07CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBFQVBJIHZvaWQg
ZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoRXdrX0Nvb2tpZV9NYW5h
Z2VyICptYW5hZ2VyLAogLyoqCiAgKiBTZXQgQGEgcG9saWN5IGFzIHRoZSBjb29raWUgYWNjZXB0
YW5jZSBwb2xpY3kgZm9yIEBhIG1hbmFnZXIuCiAgKgotICogQnkgZGVmYXVsdCwgY29va2llcyBh
cmUgYWx3YXlzIGFjY2VwdGVkLgorICogQnkgZGVmYXVsdCwgb25seSBjb29raWVzIHNldCBieSB0
aGUgbWFpbiBkb2N1bWVudCBsb2FkZWQgYXJlIGFjY2VwdGVkLgogICoKICAqIEBwYXJhbSBtYW5h
Z2VyIFRoZSBjb29raWUgbWFuYWdlciB0byB1cGRhdGUuCiAgKiBAcGFyYW0gcG9saWN5IGEgI0V3
a19Db29raWVfQWNjZXB0X1BvbGljeQpAQCAtMTE4LDcgKzExOCw3IEBAIEVBUEkgdm9pZCBld2tf
Y29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9NYW5hZ2VyICptYW5h
Z2VyLCBFd2tfCiAvKioKICAqIEFzeW5jaHJvbm91c2x5IGdldCB0aGUgY29va2llIGFjY2VwdGFu
Y2UgcG9saWN5IG9mIEBhIG1hbmFnZXIuCiAgKgotICogQnkgZGVmYXVsdCwgY29va2llcyBhcmUg
YWx3YXlzIGFjY2VwdGVkLgorICogQnkgZGVmYXVsdCwgb25seSBjb29raWVzIHNldCBieSB0aGUg
bWFpbiBkb2N1bWVudCBsb2FkZWQgYXJlIGFjY2VwdGVkLgogICoKICAqIEBwYXJhbSBtYW5hZ2Vy
IFRoZSBjb29raWUgbWFuYWdlciB0byBxdWVyeS4KICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVu
Y3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwb2xpY3kgaXMgcmVjZWl2ZWQgb3IgYW4gZXJyb3Igb2Nj
dXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCmlu
ZGV4IDA1MTY4ZTIuLmI4ZGE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RCYXNlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkVXSzJVbml0VGVz
dEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZS5o
PgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CiAKIGV4dGVybiBFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9u
bWVudDsKQEAgLTQ4LDYgKzQ5LDExIEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQog
ewogICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CiAKKyAgICAvLyBnbGliIHN1
cHBvcnQgKGZvciBsaWJzb3VwKS4KKyAgICBnX3R5cGVfaW5pdCgpOworICAgIGlmICghZWNvcmVf
bWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCkpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FS
TklORzogR2xpYiBtYWluIGxvb3AgaW50ZWdyYXRpb24gaXMgbm90IHdvcmtpbmcuIFNvbWUgdGVz
dHMgbWF5IGZhaWwuIik7CisKICAgICB1bnNpZ25lZCBpbnQgd2lkdGggPSBlbnZpcm9ubWVudC0+
ZGVmYXVsdFdpZHRoKCk7CiAgICAgdW5zaWduZWQgaW50IGhlaWdodCA9IGVudmlyb25tZW50LT5k
ZWZhdWx0SGVpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0U2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2U1Nzc5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdL
MlVuaXRUZXN0U2VydmVyLmgiCisKK0VXSzJVbml0VGVzdFNlcnZlcjo6RVdLMlVuaXRUZXN0U2Vy
dmVyKCkKK3sKKyAgICBTb3VwQWRkcmVzcyogYWRkcmVzcyA9IHNvdXBfYWRkcmVzc19uZXcoIjEy
Ny4wLjAuMSIsIFNPVVBfQUREUkVTU19BTllfUE9SVCk7CisgICAgc291cF9hZGRyZXNzX3Jlc29s
dmVfc3luYyhhZGRyZXNzLCAwKTsKKworICAgIG1fc291cFNlcnZlciA9IHNvdXBfc2VydmVyX25l
dyhTT1VQX1NFUlZFUl9JTlRFUkZBQ0UsIGFkZHJlc3MsIDApOworICAgIG1fYmFzZVVSSSA9IHNv
dXBfdXJpX25ldygiaHR0cDovLzEyNy4wLjAuMS8iKTsKKyAgICBzb3VwX3VyaV9zZXRfcG9ydCht
X2Jhc2VVUkksIHNvdXBfc2VydmVyX2dldF9wb3J0KG1fc291cFNlcnZlcikpOworICAgIGdfb2Jq
ZWN0X3VucmVmKGFkZHJlc3MpOworfQorCitFV0syVW5pdFRlc3RTZXJ2ZXI6On5FV0syVW5pdFRl
c3RTZXJ2ZXIoKQoreworICAgIHNvdXBfdXJpX2ZyZWUobV9iYXNlVVJJKTsKKyAgICBnX29iamVj
dF91bnJlZihtX3NvdXBTZXJ2ZXIpOworfQorCit2b2lkIEVXSzJVbml0VGVzdFNlcnZlcjo6cnVu
KFNvdXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKK3sKKyAgICBzb3VwX3NlcnZlcl9y
dW5fYXN5bmMobV9zb3VwU2VydmVyKTsKKyAgICBzb3VwX3NlcnZlcl9hZGRfaGFuZGxlcihtX3Nv
dXBTZXJ2ZXIsIDAsIHNlcnZlckNhbGxiYWNrLCAwLCAwKTsKK30KKworQ1N0cmluZyBFV0syVW5p
dFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKK3sKKyAg
ICBTb3VwVVJJKiBzb3VwVVJJID0gc291cF91cmlfbmV3X3dpdGhfYmFzZShtX2Jhc2VVUkksIHBh
dGgpOworICAgIGNoYXIqIHVyaSA9IHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBmYWxzZSk7
CisgICAgQ1N0cmluZyB1cmlTdHJpbmcgPSB1cmk7CisgICAgZnJlZSh1cmkpOworICAgIHNvdXBf
dXJpX2ZyZWUoc291cFVSSSk7CisKKyAgICByZXR1cm4gdXJpU3RyaW5nOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2ViMTQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0U2Vy
dmVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgRVdL
MlVuaXRUZXN0U2VydmVyX2gKKyNkZWZpbmUgRVdLMlVuaXRUZXN0U2VydmVyX2gKKworI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworY2xh
c3MgRVdLMlVuaXRUZXN0U2VydmVyIHsKK3B1YmxpYzoKKyAgICBFV0syVW5pdFRlc3RTZXJ2ZXIo
KTsKKyAgICB2aXJ0dWFsIH5FV0syVW5pdFRlc3RTZXJ2ZXIoKTsKKworICAgIFNvdXBVUkkqIGJh
c2VVUkkoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkk7IH0KKworICAgIENTdHJpbmcgZ2V0VVJJ
Rm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdDsKKyAgICB2b2lkIHJ1bihTb3VwU2VydmVy
Q2FsbGJhY2spOworCitwcml2YXRlOgorICAgIFNvdXBTZXJ2ZXIqIG1fc291cFNlcnZlcjsKKyAg
ICBTb3VwVVJJKiBtX2Jhc2VVUkk7Cit9OworCisjZW5kaWYgLy8gRVdLMlVuaXRUZXN0U2VydmVy
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODY4MTViNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5j
cHAKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMu
TC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNp
bmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVk
ZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxFV2ViS2l0
Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0
OwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50
KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNoYXIgRklSU1RfUEFSVFlfRE9NQUlOW10g
PSAiMTI3LjAuMC4xIjsKK3N0YXRpYyBjb25zdCBjaGFyIFRISVJEX1BBUlRZX0RPTUFJTltdID0g
ImxvY2FsaG9zdCI7CitzdGF0aWMgY29uc3QgY2hhciBJTkRFWF9IVE1MX1NUUklOR1tdID0KKyAg
ICAiPGh0bWw+PGJvZHk+IgorICAgICIgPHA+RUZMV2ViS2l0MiBDb29raWUgTWFuYWdlciB0ZXN0
PC9wPiIKKyAgICAiIDxpbWcgc3JjPSdodHRwOi8vbG9jYWxob3N0OiV1L2ltYWdlLnBuZycgd2lk
dGg9NSBoZWlnaHQ9NT48L2ltZz4iCisgICAgIjwvYm9keT48L2h0bWw+IjsKKworc3RhdGljIHZv
aWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2Fn
ZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3Bv
aW50ZXIpCit7CisgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsK
KyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9U
X0lNUExFTUVOVEVEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBpZiAoIXN0cmNtcChw
YXRoLCAiL2luZGV4Lmh0bWwiKSkgeworICAgICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWlu
YV9zdHJidWZfbmV3KCk7CisgICAgICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVy
LCBJTkRFWF9IVE1MX1NUUklORywgc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7CisgICAg
ICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVy
cywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOworICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFL
RSwgZWluYV9zdHJidWZfc3RyaW5nX3N0ZWFsKGJ1ZmZlciksIGVpbmFfc3RyYnVmX2xlbmd0aF9n
ZXQoYnVmZmVyKSk7CisgICAgICAgIGVpbmFfc3RyYnVmX3N0cmluZ19mcmVlKGJ1ZmZlcik7Cisg
ICAgfSBlbHNlIGlmICghc3RyY21wKHBhdGgsICIvaW1hZ2UucG5nIikpCisgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1D
b29raWUiLCAiYmF6PXF1eDsgTWF4LUFnZT02MCIpOworICAgIGVsc2UKKyAgICAgICAgRkFJTCgp
OworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkp
OworfQorCitzdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5m
bykKK3sKKyAgICBBU1NFUlRfRkFMU0UoZXJyb3IpOworICAgIEV3a19Db29raWVfQWNjZXB0X1Bv
bGljeSogcmV0ID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Kj4oZXZlbnRf
aW5mbyk7CisgICAgKnJldCA9IHBvbGljeTsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwor
fQorCitzdGF0aWMgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGdldEFjY2VwdFBvbGljeShFd2tf
Q29va2llX01hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5
IHBvbGljeSA9IEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVM7CisgICAgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2FzeW5jX2FjY2VwdF9wb2xpY3lfZ2V0KG1hbmFnZXIsIGdldEFjY2VwdFBvbGlj
eUNhbGxiYWNrLCAmcG9saWN5KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBy
ZXR1cm4gcG9saWN5OworfQorCitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0Nh
bGxiYWNrKEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCog
ZXZlbnRfaW5mbykKK3sKKyAgICBBU1NFUlRfRkFMU0UoZXJyb3IpOworCisgICAgRWluYV9MaXN0
KiogcmV0ID0gc3RhdGljX2Nhc3Q8RWluYV9MaXN0Kio+KGV2ZW50X2luZm8pOworICAgIEVpbmFf
TGlzdCogbDsKKyAgICB2b2lkKiBkYXRhOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGhvc3RuYW1l
cywgbCwgZGF0YSkKKyAgICAgICAgKnJldCA9IGVpbmFfbGlzdF9hcHBlbmQoKnJldCwgZWluYV9z
dHJpbmdzaGFyZV9yZWYoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKSk7CisgICAgZWNvcmVfbWFp
bl9sb29wX3F1aXQoKTsKK30KKworc3RhdGljIEVpbmFfTGlzdCogZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIEVpbmFfTGlzdCogcmV0
ID0gMDsKKyAgICBld2tfY29va2llX21hbmFnZXJfYXN5bmNfaG9zdG5hbWVzX3dpdGhfY29va2ll
c19nZXQobWFuYWdlciwgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjaywgJnJldCk7Cisg
ICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGlj
IHZvaWQgZnJlZUhvc3ROYW1lcyhFaW5hX0xpc3QqIGhvc3RuYW1lcykKK3sKKyAgICB2b2lkKiBk
YXRhOworICAgIEVJTkFfTElTVF9GUkVFKGhvc3RuYW1lcywgZGF0YSkKKyAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKTsKK30KKworc3RhdGljIGlu
dCBjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikK
K3sKKyAgICBFaW5hX0xpc3QqIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKG1h
bmFnZXIpOworICAgIGludCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpOworICAg
IGZyZWVIb3N0TmFtZXMoaG9zdG5hbWVzKTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK1RFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeSkKK3sK
KyAgICBPd25QdHI8RVdLMlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3
IEVXSzJVbml0VGVzdFNlcnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNr
KTsKKworICAgIEV3a19Db29raWVfTWFuYWdlciogY29va2llTWFuYWdlciA9IGV3a19jb250ZXh0
X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKKyAgICBBU1NF
UlRfVFJVRShjb29raWVNYW5hZ2VyKTsKKworICAgIC8vIERlZmF1bHQgcG9saWN5IGlzIEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9OT19USElSRF9QQVJUWS4KKyAgICBBU1NFUlRfRVEoZ2V0QWNj
ZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTk9fVEhJ
UkRfUEFSVFkpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9p
bmRleC5odG1sIikuZGF0YSgpKTsKKworICAgIEVpbmFfTGlzdCogaG9zdG5hbWVzID0gZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGVpbmFfbGlz
dF9jb3VudChob3N0bmFtZXMpLCAxKTsKKyAgICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y2hh
cio+KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAwKSksIEZJUlNUX1BBUlRZX0RPTUFJTik7Cisg
ICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworICAgIGV3a19jb29raWVfbWFuYWdlcl9jb29r
aWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIpOworCisgICAgLy8gQ2hhbmdlIHBvbGljeSB0byBFV0tf
Q09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2Vw
dF9wb2xpY3lfc2V0KGNvb2tpZU1hbmFnZXIsIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdB
WVMpOworICAgIEFTU0VSVF9FUShnZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19D
T09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMpOworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKworICAgIGhvc3RuYW1lcyA9
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShl
aW5hX2xpc3RfY291bnQoaG9zdG5hbWVzKSwgMik7CisgICAgQVNTRVJUX1NUUkVRKHN0YXRpY19j
YXN0PGNoYXIqPihlaW5hX2xpc3RfbnRoKGhvc3RuYW1lcywgMCkpLCBGSVJTVF9QQVJUWV9ET01B
SU4pOworICAgIEFTU0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjaGFyKj4oZWluYV9saXN0X250aCho
b3N0bmFtZXMsIDEpKSwgVEhJUkRfUEFSVFlfRE9NQUlOKTsKKyAgICBmcmVlSG9zdE5hbWVzKGhv
c3RuYW1lcyk7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29va2llTWFu
YWdlcik7CisKKyAgICAvLyBDaGFuZ2UgcG9saWN5IHRvIEVXS19DT09LSUVfQUNDRVBUX1BPTElD
WV9ORVZFUgorICAgIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVN
YW5hZ2VyLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIpOworICAgIEFTU0VSVF9FUShn
ZXRBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciksIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9O
RVZFUik7CisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4
Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvb2tpZU1hbmFnZXIpLCAwKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19j
b29raWVfbWFuYWdlcl9jb29raWVzX2RlbGV0ZSkKK3sKKyAgICBPd25QdHI8RVdLMlVuaXRUZXN0
U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVzdFNlcnZlcik7Cisg
ICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19Db29raWVfTWFu
YWdlciogY29va2llTWFuYWdlciA9IGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2VyX2dldChld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpKTsKKyAgICBBU1NFUlRfVFJVRShjb29raWVNYW5hZ2VyKTsK
KworICAgIGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldChjb29raWVNYW5hZ2Vy
LCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlTKTsKKyAgICBBU1NFUlRfRVEoZ2V0QWNj
ZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIpLCBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfQUxXQVlT
KTsKKworICAgIGxvYWRVcmxTeW5jKGh0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5o
dG1sIikuZGF0YSgpKTsKKyAgICBFaW5hX0xpc3QqIGhvc3RuYW1lcyA9IGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvb2tpZU1hbmFnZXIpOworICAgIEFTU0VSVF9FUShlaW5hX2xpc3RfY291bnQo
aG9zdG5hbWVzKSwgMik7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworCisgICAgLy8g
RGVsZXRlIGZpcnN0IHBhcnR5IGNvb2tpZQorICAgIGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFt
ZV9jb29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIsIEZJUlNUX1BBUlRZX0RPTUFJTik7CisgICAg
aG9zdG5hbWVzID0gZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlcik7CisgICAg
QVNTRVJUX0VRKGVpbmFfbGlzdF9jb3VudChob3N0bmFtZXMpLCAxKTsKKyAgICBBU1NFUlRfU1RS
RVEoc3RhdGljX2Nhc3Q8Y2hhcio+KGVpbmFfbGlzdF9udGgoaG9zdG5hbWVzLCAwKSksIFRISVJE
X1BBUlRZX0RPTUFJTik7CisgICAgZnJlZUhvc3ROYW1lcyhob3N0bmFtZXMpOworCisgICAgLy8g
RGVsZXRlIHRoaXJkIHBhcnR5IGNvb2tpZQorICAgIGV3a19jb29raWVfbWFuYWdlcl9ob3N0bmFt
ZV9jb29raWVzX2NsZWFyKGNvb2tpZU1hbmFnZXIsIFRISVJEX1BBUlRZX0RPTUFJTik7CisgICAg
QVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDApOwor
CisgICAgLy8gR2V0IGFsbCBjb29raWVzIGFnYWluCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShj
b3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNvb2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIENs
ZWFyIGFsbCBjb29raWVzCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29v
a2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29v
a2llTWFuYWdlciksIDApOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX3Blcm1hbmVudF9zdG9yYWdlKQoreworICAgIE93blB0cjxFV0syVW5pdFRlc3RT
ZXJ2ZXI+IGh0dHBTZXJ2ZXIgPSBhZG9wdFB0cihuZXcgRVdLMlVuaXRUZXN0U2VydmVyKTsKKyAg
ICBodHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgLy8gR2VuZXJhdGUgdW5p
cXVlIG5hbWVzIGZvciBjb29raWUgc3RvcmFnZXMuCisgICAgY2hhciB0ZXh0U3RvcmFnZVtdID0g
Ii90bXAvdHh0LWNvb2tpZS5YWFhYWFgiOworICAgIEFTU0VSVF9UUlVFKG1rdGVtcCh0ZXh0U3Rv
cmFnZSkpOworICAgIGNoYXIgc3FsaXRlU3RvcmFnZVtdID0gIi90bXAvc3FsaXRlLWNvb2tpZS5Y
WFhYWFgiOworICAgIEFTU0VSVF9UUlVFKG1rdGVtcChzcWxpdGVTdG9yYWdlKSk7CisKKyAgICBF
d2tfQ29va2llX01hbmFnZXIqIGNvb2tpZU1hbmFnZXIgPSBld2tfY29udGV4dF9jb29raWVfbWFu
YWdlcl9nZXQoZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgQVNTRVJUX1RSVUUoY29v
a2llTWFuYWdlcik7CisKKyAgICBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQo
Y29va2llTWFuYWdlciwgRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUyk7CisgICAgQVNT
RVJUX0VRKGdldEFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyKSwgRVdLX0NPT0tJRV9BQ0NFUFRf
UE9MSUNZX0FMV0FZUyk7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4K
KyAgICBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVudF9zdG9yYWdlX3NldChjb29raWVNYW5h
Z2VyLCB0ZXh0U3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7Cisg
ICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29va2llTWFuYWdlciksIDAp
OworCisgICAgbG9hZFVybFN5bmMoaHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0
bWwiKS5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
b2tpZU1hbmFnZXIpLCAyKTsKKworICAgIC8vIFNRTGl0ZSBzdG9yYWdlIHVzaW5nIGEgbmV3IGZp
bGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQoY29va2ll
TWFuYWdlciwgc3FsaXRlU3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FM
SVRFKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29raWVNYW5h
Z2VyKSwgMCk7CisKKyAgICBsb2FkVXJsU3luYyhodHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
aW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29va2llTWFuYWdlciksIDIpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVzaW5nIGFu
IGV4aXN0aW5nIGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFn
ZV9zZXQoY29va2llTWFuYWdlciwgdGV4dFN0b3JhZ2UsIEVXS19DT09LSUVfUEVSU0lTVEVOVF9T
VE9SQUdFX1RFWFQpOworICAgIEFTU0VSVF9FUShjb3VudEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
b2tpZU1hbmFnZXIpLCAyKTsKKyAgICBld2tfY29va2llX21hbmFnZXJfY29va2llc19jbGVhcihj
b29raWVNYW5hZ2VyKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhj
b29raWVNYW5hZ2VyKSwgMCk7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB3aXRoIGFuIGV4aXN0
aW5nIGZpbGUuCisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQo
Y29va2llTWFuYWdlciwgc3FsaXRlU3RvcmFnZSwgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JB
R0VfU1FMSVRFKTsKKyAgICBBU1NFUlRfRVEoY291bnRIb3N0bmFtZXNXaXRoQ29va2llcyhjb29r
aWVNYW5hZ2VyKSwgMik7CisgICAgZXdrX2Nvb2tpZV9tYW5hZ2VyX2Nvb2tpZXNfY2xlYXIoY29v
a2llTWFuYWdlcik7CisgICAgQVNTRVJUX0VRKGNvdW50SG9zdG5hbWVzV2l0aENvb2tpZXMoY29v
a2llTWFuYWdlciksIDApOworCisgICAgLy8gRmluYWwgY2xlYW4gdXAuCisgICAgdW5saW5rKHRl
eHRTdG9yYWdlKTsKKyAgICB1bmxpbmsoc3FsaXRlU3RvcmFnZSk7Cit9CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>